Pergunta

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.

Foi útil?

Solução

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).

Outras dicas

if you like to browse the source from a svn-repo, and you like gitk, why not using gitk? just do

git svn init http://subversion.domain.org/repos
git svn fetch
git svn rebase

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)

To answer the second part of my own question, both qsvn and rapidsvn can be used to view the logs when I've already checked out a working copy. In qsvn, go to Menu -> Working Copy -> Add. In rapidsvn, go to Menu -> Bookmarks -> Add Existing Working Copy.

Viewing the log is much slower than in git, as explained by @Raghuram.

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top