(if you rate this I would like to read your comments about your rating)
So, this is such a massively reviewed area of software that I hesitate to repeat all the info out there already. What I have done is compile only what I consider to be the best SVN clients along with a few extras (see Bottom) and review them based on some general common factors such as ease of use, feature implementation of Subversion itself, Operating System(s), and which IDE’s, if any, the client integrates with.
No matter which SVN client you use (especially if you choose the command line) you would be much better off reading the O’Reilly SVN book (free online at: Red Bean Book). I can’t stress enough on how valuable the documentation is and most of it (even the book) seems well written – it’s just a lot!
In order to run through some basic features of the SVN clients I decided to hook up to a C# source forge project called Feedling (a desktop RSS reader with a plugin architecture). Since SF supports SVN I figured this was a good fit. I am NOT going to go through every feature but I am going to touch on the features I find important…at first. Comments or requests for more info in certain areas will drive further updates as one of my goals is to continue to update past posts with current information and/or commentary.
Finally, I am NOT an SVN expert (most of my work has been with the Microsoft stack in terms of SC) but I kind of think that is a bonus as I am familiar enough with SVN to know what works for me and hopefully should work for the average developer with a general understanding of SVN.
(FYI: I uninstalled each package after reviewing it even if it meant having to reinstall later as in the instance of VisualSVN needing TortoiseSVN).
Update - 11.11.2009: Added vendor supplied information about iVersion: a basic iPhone based SVN Utility. See the iVersion section for more information.
Update – 08.11.2009: Updates as follows for new version of Ankh-2.1.7141
Changes (from above link):
- Update Subversion Support to 1.6.4 level to resolve CVE-2009-2411 – More information.
- No other changes since previous release
Update – 07.29.2009: There have been some good updates to AnkhSVN 2.1
Update – 06.24.2009: It would appear (I said appear) that AnkhSVN is now upgraded to work with TortoiseSVN v1.6. I started up AnkhSVN today and it told me a major update was available which is located here: AnkhSVN 2.1 Download
Update – 04.28.2009: Recently the server for my repository was upgraded and required me to update TortoiseSVN to v1.6.x. That worked fine but AnkhSVN did not work so fine at all – I was getting some real quirky behavior such as files not getting checked in and when doing updates from the repository I was not getting the latest. I am not saying that AnkhSVN was the culprit but it has not been updated to work with TortoiseSVN 1.6.x – yet! So, you can help the AnkhSVN team by downloading the Daily Build here and testing it against TortoisSVN v1.6.x.
Update: Based on some comments I would like to add: It is within Windows guidelines to NOT have a link to the uninstaller in the Start | Programs | Application Menu and merely my personal preference.
- AnkhSVN Client
- RapidSVN Client
- TortoiseSVN Client
- Other SVN Tools
- Recommendation and Comments
Type: IDE Based => Visual Studio.Net 2002/2003 (older version) & 2005/2008
Price: Free as in Open Source
I use AnkhSVN all of the time at my day job in VS.Net 2008 and I really like the ease of use it affords me when working inside of the IDE. All of the menu’s are context sensitive. So, for example, when you right-click on changed source file it offers the appropriate menu options.
After I load my Feedling project into VS.Net 2008 here is what the Solution Explorer looks like with AnkhSVN installed:
As you can see, every file has a checkmark next to it which indicates that the source has not changed. Kind of cool to see your file status right in the IDE!
Now, after I have added a file (see plus sign next to file) and have modified an existing file you can see that the FeedhandlerPluginInterface project is now red checked indicated a change to the project and the changed file (IFeed.cs) is now red checked as well (nice commenting in the source file by the way!) indicating the source file is changed.
Unfortunately, I am screen shot challenged when it comes to showing context menus in Solution Explorer but you can find that out soon enough if you try this tool. The AnkhSVN part of the Solution Explorer context menu will offer the appropriate menu options based on changes to your project/solution.
The other nice thing is that you can commit all of your changes right from the Solution Explorer via the context menu and you can also update your solution to ensure you have the latest repository changes right within your solution which is just about the best: load my project, update source to repository and start coding.
A really nice touch is the pending changes tool window which shows all of the changes that the Solution Explorer visualizes.
In addition, there are other tool windows (not shown here but see screenshot link above) such as Repository Explorer, History Viewer and Merging Tools which give you a great deal of interaction with your repository so you most likely will not have to resort to the command line or another SVN tool unless you want to.
AnkhSVN simply works and it works well and that is really all I want my various software tools to do!
I would suggest that you install TortoiseSVN and AnkhSVN together so that you can manage your repositories from your file manager (or Repo-browser) as well as within your IDE.
- AnkhSVN also has an option to install for Visual Studio 2010 (plainly the developers of AnkhSVN are keeping up with the latest and greatest in terms of Visual Studio)
- No uninstaller or any menu in start menu as this is really a VS.Net addin – still and installation menu would be nice for docs and uninstallation (unless I missed it?)
- No standalone access – purely VS.Net IDE integration
Platform: Cross-platform (Windows, Mac OS X, Linux and others)
Price: Free as in Open Source
Connecting to a repository is completed by adding a bookmark. In my case, that means adding an existing repository located here: https://feedling.svn.sourceforge.net/svnroot/feedling feedling.
I attempted to do this twice with and without the feedling at the end of the URL with no success at all (this worked the first time with TortoiseSVN). What I received in the status message at the bottom was:
Error: Error while updating filelist (PROPFIND request failed on ‘/svnroot/feedling%20feedling’
Could not open the requested SVN filesystem)
I tried to switch the repository URL and got: Error: Error while preparing action: ‘.’ is not a working copy
I figured this was because I did not have a repository loaded but why would the menu option be available if the context (no repository) was invalid? That kind of stuff is a pain but for open source maybe it is not such a show stopper for some but it is for me. I guess if I am not paying for it I should not criticize but personally if I am going to put a product out where user’s interact with it I think it is my duty to ensure that the usability is intuitive from the get go.
So, plainly this makes me a real dummy! I think that for me this is the kind of tool I would have to spend a good amount of time with be comfortable in. Personally, my job is to provide solutions to my clients via software and not to spend a lot of my time working with tools that are not obvious in their implementations. For instance, a series of wizard type screens (I hate that word, wizard, but..) which would simply walk you through hooking up to a repository would be cool. How about something obvious like the Repository menu actually having a ‘Connect to Repository’ menu option instead of having that feature under the Bookmarks menu?
I am not saying RapidSVN doesn’t work or isn’t a good tool: it’s simply not as intuitive as it could be for my usage.
- No context menu through file manager (course that’s been done by other SVN tools)
- Help file is online only and is basically a wiki page.
- No uninstaller
- No IDE integration by design
Platform: Windows (32/64 bit)
Type: Explorer integration
Price: Free as in Open Source
I am sure there are many ways of doing things with TortoiseSVN but I am just going to cover the ways I do a few things. Accessing the Feedling repository (that means adding an existing repository located here: https://feedling.svn.sourceforge.net/svnroot/feedling feedling. ) couldn’t be easer. I just right-click on the folder where I am thinking I want to checkout the repository and select Repo-browser. Up pop’s up a dialog asking for the URL if the folder you right-click on does NOT have an existing repository:
Then Repo-browser pops up and after time to load you have a file manager like view of the repository. Feedling took some time to load but once it did I was ready to continue using the context menu in Repo-browser to checkout the source and perform just about all SVN tasks I need to do on a regular basis. If you are not a file manager type person (ie. you don’t like using explorer) then Repo-browser is the next best thing if not better.
Using a file manager (good luck getting a screen shot from me here!) you will find that not only can you access all of TortoiseSVN command (especially after you turn on other menu options in the settings) they are completely contextual to the area in the file manager. Hmmm.. that’s kind of unclear. So, if you are in a repository folder that you have source that is managed by SVN you will get a much more detailed and relevant menu than if you were in a regular folder that was not managed by SVN. That’s nice because your context menu’s content alerts you to the fact you are in a repository even if you don’t have the icon overlays. Oh, right, Icon Overlays: this is way cool because you can see at a glance which files are checked out, which are modified, which need to be added to the repository, etc..
Obviously, I like this program. It has helped me tremendously in my job and along with AnkhSVN I have a fully rounded solution to working with SVN source. I really, really like how the UI is minimalist using a context menu so that I don’t have to use another tool to work with source if I don’t want to (I have my file manager, Total Commander, running all the time in the background anyway).
While some SVN procedures using TortoiseSVN can be confusing (ie. Merging from Branch to Trunk) you will find that the documentation is quite complete and there are many tutorials on the internet (search results return 100,000+ hits for TortoiseSVN tutorials).
- Context menu in file manager
- Repo-browser (mini file manager for repositories)
- No uninstaller
- No IDE integration by design
Type: IDE Based => Visual Studio.Net 2003/2005/2008 (not express versions)
Price: $49 per seat (includes future minor version upgrades)
VisualSVN is a snap to install and integrated well into VS.Net 2008 but on a suprising note: TortoiseSVN is not required but apparently full SVN functionality will be missing if it is NOT installed – interesting but a smart choice to focus on the core VS.Net functionality (Solution Explorer enhancements).
Initially attempted to load up the Readling project which had already been checked out using TortoiseSVN and worked fine with AnkhVSN. The project loaded fine but there were no indicators that VisualSVN was even working or that the project was under source control:
I am not sure why this is so but perhaps since I had AnkhVSN installed prior (I uninstalled it prior to installing VisualSVN) that some markers from AnkhSVN were left in the repository??…
Anyway, I loaded up another project I had sitting around: An Apache Log4Net wrapper called LoggingLocal (my own project) and the Solution Explorer accurately reflected that my project was in the repository and under source control as this screenshot shows (notice the green markers for unchanged files):
I played around with the project for a bit by changing the app.config and adding an about box to see how VisualSVN would reflect those modifcations. It seems to show new files with the same yellow status as it shows changed files as this screenshot shows:
I also worked with the VisualSVN menu and it appears that much of the features are processed using TortoiseSVN which is pretty much what I expected but some of the features such as the Branch option which calls the TortoiseSVN branch option simply hung up (that could just be my system). It actually felt as if VisualSVN’s major contribution was markup of the Solution Explorer and the rest shuffled off to TortoiseSVN.
So, without spending a lot more time it appears that VisualSVN does what it says it does but somehow for $49 I expected there to be a bit more features and frankly I had a better, more satisfying experience utilizing AnkhSVN than I did with VisualSVN plus the free price of AnkhSVN makes it a hard sell for me to dish out any money for VisualSVN.
- No uninstaller but the installer does offer integration options for VS.Net 2003/2005/2008 and the Subversion command line
- Help file is online only
- Steep price for less functionality than AnkhSVN (in my opinion)
Type: Mobile Phone Based
Price: See the Apple App Store
I no longer own an iPhone so I could not test this first hand. In place of my comments here are the developer’s comments:
iVersion is not intended to fully replace the your svn desktop client, but is meant to provide basic svn access when your on the move. For example if your away from the office and you’ve received a critical bug report, you can open up your source code and look for the offending line. If the bug is an obvious one (for example a typo) you can fix it immediately without needing to go near a desktop PC.
Due to the iPhone’s lack of mouse and small screen iVersion’s interface is different to one which you would find on the desktop. When first loaded you will be created with a connection screen where you can put in the host information of your svn repository. Click connect and a progress bar will appear from the bottom of the screen. When the directory contents have loaded you can browse to a new file or folder by simply clicking on the icon. you can navigate to the parent directory by clicking the arrow icon in the top right.
You will notice that you browse to a folder you have already visited the contents will be shown immediately, this is due to iVersion cache.
If you wish to clear the cache click the refresh icon. Scrolling to the bottom of the browser shows the actions available for the folder or file. Here you can delete, copy, move, open, checkout, bookmark or view more information for a node.
When you checkout a directory you will be taken to the working copies view which allows you to view the local copy stored on your iphone.
When you open a file from the working copies view you are able to make edits and save the changes. Committing the changes to your local repository is as simple as clicking “Commit File”, which then prompts you to enter a log message describing the changes you’ve made.
Here is a video with iVersion in action: Click Here
Other SVN Tools and Links
Subversion Links Page on Tigris – a great page with just about all other clients, tools, etc that have to do with Subversion.
Type: Standalone – system tray
This is actually an outstanding tool! I can’t tell you how many times I just simply wanted to be notifed of all changes within the repository without having to fire up the file manager/TortoiseSVN combo or Visual Studio. The cool thing about this is that you can monitor multiple repositories and perform updates to your local source from within SVN Monitor (it calls out to TortoiseSVN to perform these kinds of functions).
The nice thing about SVN Monitor is that you are actually interacting with TortoiseSVN through a UI instead of the file manager. In addtion to the UI there is also a system tray icon that allows you to receive notifications about repository changes.
Here is a screen shot I took before configuration (see the screenshots link for more detail):
Finally, I do NOT know nearly enough of what this tool can do to feel comfortable telling exactly how it works in all areas but I did find it only took me a few minutes to add my repository to the SVN Monitor and that is worth a lot to me.
This is the one SVN tool from this review that actually has an uninstaller! Not a big thing I know but it shows the care the developer is taking with the entire presention of this utility. Once word gets out on this I expect they could and should charge for a supported version of this.
SlickEdit Tools for Visual Studio – includes CVS/SVN integration but has a price of $49 – I did NOT install this or test it but you might want to check it out.
Books (not endorsing bookpool or amazon)
Subversion books on BookPool BookPool is no more – sigh…
Recommendation (TortoiseSVN and/or AnkhSVN)
My own personal use tends to go along the lines of AnkhSVN with VS.Net and TortoiseSVN when I am working with files in Explorer (or any other File Manager that supports icon overlays). I have tried RapidSVN in the beginning but I do not feel as productive or competent when working with my source code as I do with AnkhSVN and TortoiseSVN. VisualSVN is certainly a top notch product (and it should be for $49 but my rule of thumb is to NEVER pay for something that I can get close enough to for free. NOTE: I do ask and recommend that if you utilize AnkhSVN and/or TortoiseSVN that you consider contributing something back to the respective development teams of these fine products. Along with AnkhSVN and TortoiseSVN I DO recommend that you give SVN Monitor at try as it is a real time saver and worth good money to me even though it is free (see just above for some comments).
In addition, I have found the MOST of my issues that I think are with the SVN clients I use actually turn out to be my misunderstanding of how the core SVN server itself works (read the docs!).
Finally, this review was not to meant to be all encompassing as you will find many reviews (ie.. Wikipedia) or pages that seem to cover any and all things. I am merely trying to provide info on tools that will be productive. I also have a bit of a peeve when it comes to programs – where’s the uninstallers! I get sick of loading up the Add/Remove programs to uninstall something in Windows. Of course that’s not such a big deal with OS X as it’s just a drop of the app into the Trash bucket. I just think that an uninstaller (even if it’s just an .sh or .bat script) is a good touch to any program.
Last note: You can find just about all the SVN clients here at the Subversion site.
Please contribute other SVN Clients or Tools I most likely missed and I will update the post to include them.
This is my first post of this kind so any input would be welcome as to format, content etc…