svn log/diff 前端像 gitk 一样吗?
我想研究对由 SVN 管理的 Google Chrome 源代码所做的更改。可以在 http://src.chromium.org/viewvc/chrome/
我想知道是否有一个 GUI 前端可以让我在本地检查时间线。使用 git,我可以简单地运行 gitk foo.c。
我尝试了 qsvn 和 Rapidsvn 但不知道如何让它们完成这项工作。看来我必须在 GUI 中导入存储库,但我已经签出了存储库。
I want to study the changes made to Google Chrome's source code which is managed by SVN. A web interface can be found at http://src.chromium.org/viewvc/chrome/
I'd like to know if there's a GUI frontend that allows me to examine the timeline locally. With git I can simply run gitk foo.c
.
I tried qsvn and rapidsvn but couldn't figure out how to make them do the job. It seems that I have to import the repository in the GUI, but I already have the repository checked out.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
如果您喜欢从 svn-repo 浏览源代码,并且喜欢 gitk,为什么不使用 gitk 呢?
只需这样做
,您就可以将 svn 存储库“转换”为本地 git 存储库,您可以在其中使用 gitk
如果您想更新本地 git 存储库,只需重新运行 fetch &变基
有关更多信息,请查看 git-svn(1)
if you like to browse the source from a svn-repo, and you like gitk, why not using gitk?
just do
and you have the svn repo "converted" to a local git repo, where you can use gitk
If you want to update your local git repo, just rerun fetch & rebase
for more info, take a look at git-svn(1)
与 git 和 Mercurial 等分布式 VCS 不同,在 Subversion 中,当我们进行签出时,我们不会获得存储库的“克隆” - 只是一个特定版本。
在RapidSVN中,我们可以单击一个文件,右键单击选择“日志...”来获取文件更改的历史记录,但这涉及到服务器的连接来下载信息。 (一些客户端(例如 TortoiseSVN)会缓存其中一些,但不确定 RapidSVN)。
Unlike distributed VCS like git and mercurial, in subversion we do not get "a clone" of the repository, when we do a checkout - just a particular version.
In RapidSVN, we can click on a file, right-click choose Log... to get a history of file changes, but this involves a connection to the server to download the info. (Some clients like TortoiseSVN cache some of these, but not sure about RapidSVN).
为了回答我自己问题的第二部分,当我已经签出工作副本时,
qsvn
和rapidsvn
都可以用来查看日志。在qsvn
中,转到菜单->工作副本 ->添加。在rapidsvn
中,转到菜单 ->书签 ->添加现有工作副本。正如 @Raghuram 所解释的,查看日志比在 git 中慢得多。
To answer the second part of my own question, both
qsvn
andrapidsvn
can be used to view the logs when I've already checked out a working copy. Inqsvn
, go to Menu -> Working Copy -> Add. Inrapidsvn
, go to Menu -> Bookmarks -> Add Existing Working Copy.Viewing the log is much slower than in git, as explained by @Raghuram.
我尝试了一些 SVN 客户端,寻找类似 gitk 的东西(没有文件参数)。我认为在大多数 SVN 客户端中显示特定文件的历史记录比显示整个项目的差异历史记录更容易。
如果有一种方法可以同时查看提交消息、受影响的文件和差异,但我在用户界面中没有找到它,请发表评论,让我知道我错过了什么。不过,我怀疑任何本机 SVN 客户端都会这样做,因为必须从服务器获取要进行比较的旧版本。
最好,但不能与现有的 SVN 签出一起使用:
git-svn
首先签出 svn 存储库,然后您将获得完整的 GIT 功能。对于历史悠久的项目来说,初始签出需要很长时间,除非您进行浅层克隆:如何 git-svn 从 Subversion 存储库克隆最后 n 个修订版本?其他:
rapidsvn:将现有存储库添加为“书签”。右键单击“。” ->日志。这会获取所有修订,因此出现速度非常慢。 “日志历史记录”对话框在单独的选项卡中包含日志消息和受影响的文件,因此您无法同时看到两者。 (不过,您可以将日志消息的开头视为修订表中的一列)。 (https://github.com/RapidSVN/RapidSVN 最后一次更改 2013 年 5 月)
开发停滞 subclipse:开放视角 -> SVN 存储库探索。右键单击某物 ->显示历史。影响该文件或子树的 SVN 版本的修订列表很快就会出现,因为默认情况下它只获取前 25 个版本。 (您可以获取更多或全部)。显示受影响的路径,您可以看到当前版本,但我没有找到获取差异的方法。 (一次可能除了一个文件外,通过右键单击一个文件并执行“比较...”,这会弹出一个要比较的菜单。)
RabbitVCS:屏幕截图显示了通常的修订/日志消息/受影响的文件 3 窗格设置,没有差异。在图形文件浏览器(Nautilus(GNOME) / Thunar(Xfce))之上实现,不能作为独立应用程序使用。也不适用于 Dolphin(KDE)。
subcommander:最新版本 = 2009 年的 2.0.0beta5。在尝试使用它时崩溃了几次。
svn-workbench:受影响的文件在新窗口中从修订列表中打开。与其他东西相比,它的实用性要低得多。我也认为它已被放弃,应该有可能。从 Debian/Ubuntu 中删除,因此它不会显示软件包搜索。
qsvn:没有尝试,因为当作者将所有内容切换到 git 时,上游开发停止了。
http://svn-ref.assembla.com/linux-svn- client-reviews.html 提到了几个闭源商业 SVN 客户端,我没有尝试过。我厌倦了在 gitk 之外寻找 gitk 行为,于是继续使用 git-svn 克隆了我感兴趣的存储库。难怪人们会放弃 SVN,因为它显然无法有效地显示提交的差异。
I tried a few SVN clients, looking for something that's like
gitk
(without a file argument). I think showing the history for a specific file is easier in most SVN clients than showing history with diffs across the whole project.If there's a way to see commit messages, affected files, AND diffs at the same time, but I didn't find it in the UI, please leave a comment to let me know what I missed. I doubt any native SVN clients do this, though, because old versions to diff against would have to be fetched from the server.
best, but doesn't work with an existing SVN checkout:
git-svn
to checkout the svn repo in the first place, then you get the full GIT capabilities. The initial checkout takes a REALLY long time for projects with long history, unless you make a shallow clone: How to git-svn clone the last n revisions from a Subversion repository?others:
rapidsvn: Add the existing repo as a "bookmark". Right click on "." -> Log. This fetches ALL the revisions, so it's really slow to come up. The "Log History" dialog box has the log message and affected files in separate tabs, so you can't see both at once. (You can see the beginning of the log message as a column in the revision table, though). Development stalled (https://github.com/RapidSVN/RapidSVN last change 2013-May)
eclipse with subclipse: Open Perspective -> SVN Repository Exploring. Right click on something -> Show History. The revision list of SVN revs affecting that file or subtree comes up quickly, as it only fetches the first 25 by default. (you can fetch more, or all). The affected paths are displayed, and you can see the current version, but I don't see a way to get a diff. (except maybe for one file at a time, by right clicking on a file and doing "Compare...", which brings up a menu of what to compare with.)
RabbitVCS: screenshot shows the usual revisions / log message / affected files 3 pane setup, without diffs. Implemented on top of a graphical file browser (Nautilus(GNOME) / Thunar(Xfce)), not available as a stand-alone app. Also not available for Dolphin(KDE).
subcommander: last release = 2.0.0beta5 from 2009. Crashed a couple times while trying to use it.
svn-workbench: Affected files opens in a new window from the revision list. It's much less usable than other things. Also I think it's abandoned, and should prob. get dropped from Debian/Ubuntu so it doesn't show up package searches.
qsvn: Didn't try it, since upstream development stopped when the author switched to git for everything.
http://svn-ref.assembla.com/linux-svn-client-reviews.html mentions a couple closed-source commercial SVN clients, which I didn't try. I got tired of looking for gitk behaviour outside of gitk, and just went ahead and git-svn cloned the repo I was interested in. No wonder people switch away from SVN, since it apparently can't efficiently show the diffs for a commit.