Preview of Versions SVN Client
I've been looking forward to seeing a dedicated subversion client which is designed from the ground up as a Mac app. The Sofa guys teased us a while ago with an app called Versions, but it never actually surfaced — until now. I just got a chance to play around with a pre-release build.(Keep in mind that is is pre-release software, and many things are likely to change before the 1.0 shipping release.)
Versions is the first practical solution I've seen for developers — web developers included — who have high standards for UI and don't have the patience or interest to learn the quirks of the subversion command line tools. For those folks, this is far better solution than making zip copies of your source folders with manual timestamps, particularly when you work within a team.
Versions takes standard UI concepts from Mail, iTunes, Finder, and many other Leopard-era apps, and applies them to subversion repositories. This is interesting not just because it puts version control into the hands of non-experts, but it also allows those who are relatively comfortable with svn to take advantage of better browsing tools and features they otherwise wouldn't know about.
Design
A source control app has specific requirements. The UI needs to be simple and clean so that the focus is on the project, not the tool itself. The workflow in Versions is oriented around the most common cases — adding repositories, checking out, submitting changes, browsing various versions, viewing file history, and reverting are all dead simple. In other words, you can be productive immediately. Versions doesn't attempt to invent new features as much as do the important and obvious things really well.
The developer must also be able to trust the tool by being able to verify what the tool is doing. Versions provides the Transcript view specifically for this need. Anything you do in the app accumulates in this log, which looks essentially the same as the output you'd see in the command line. Easy to copy-and-paste into emails and such.
Although you can use any standard SVN repository, you can also create your own local filesystem-based repository from right within Versions. This isn't a subversion server, but it does allow you to easily archive your files and track local changes without having to start up or connect to any services. The experts cringe, of course, at the idea of saving your changes locally, but it's a great solution for basic needs.
Public Repositories
In addition to tracking source changes within a team, Versions makes it far easier to keep tabs on open source projects. In the screenshots below, I can see the most recent commits to the public WebKit repository, followed by the complete history of the GMUserFileSystem.mm file from Google's MacFUSE project.
If you've never tried to browse svn projects via the command line or a web browser, believe me that this is a vast improvement over the usual experience.
Some Details
Versions is a collaboration between Sofa and a brand new company called Pico. Sofa is best known for the excellent Checkout point-of-sale app for Mac OS X, and was responsible for the visual design. Pico developed the actual engine of the app, which uses libsvn instead of simply wrapping the command line tools.
Now, certainly some of you are thinking that the svn command line tools work fine, and they do. I use them daily and they're pretty straightforward. But honestly, 'svn ls' isn't a great experience. They're good for basic check in and check out, but they can be incredibly tedious for anything else. Versions abstracts the details of all of that, and just allows you to browse the content.
There is also good SCM support built in Xcode 3, but that's part of a much larger application. As a dedicated tool, Versions orients its UI and feature set entirely around this particular set of tasks, separate from all of the existing requirements of Xcode as a whole.
So even if you have an existing solution, you can probably still improve your improve your process — particularly for browsing specific versions, running comparisons, and so on. Any time saved in this area is time that can go into actually writing code instead.
One More Thing
I'm excited to see this app ship because I think developers will finally start to see source control as a way to improve their process, not just another obstacle to shipping. And all of us should care about that because it means developers will ship better software on a shorter schedule.
I'm told Versions will be available to the general public very soon, but a specific date has not been set yet. You can sign up to notified when the beta is available.
Finally, there's one more feature that I'm not allowed to mention yet, but I suspect it will win over independent developers who are still on the fence.
Preview of Versions SVN Client
Posted May 31, 2008 — 49 comments below
Posted May 31, 2008 — 49 comments below
Steven Fisher — May 31, 08 5970
Scott Stevenson — May 31, 08 5971
Yes. You can switch back and forth between Versions and the command line tools as you like.
Steven Fisher — May 31, 08 5972
Bryce — May 31, 08 5973
Jens Alfke — Jun 01, 08 5974
What I love is that the cost of making something version-controlled is so low. After I start a new project, I just type "hg init", and blam! that directory is now a self-contained repository. Next "hg addremove" adds all the files, and "hg commit" checks them in. There's no need to configure a server, or set up a filesystem-based repository somewhere else. Then I can copy the repository to another machine, such as my website, with "hg clone". After that, all it takes to sync all my latest changes to the remote repository is "hg push".
(A lot of people like Git, which is conceptually similar. I prefer Mercurial because it's simpler, written in Python instead of fiddly C code, and it's not written by the incredibly egotistical Linus Torvalds.)
Sorry for the digression :) This looks like a great app, I just wish it supported a more modern version-control tool...
charles — Jun 01, 08 5975
Versions design (looks and usability) appears to be better, and is very promising. I am curious to see how well it will compare after using it for a while.
Steven Fisher — Jun 01, 08 5976
Me, I want the central server. It's the most important point of version control for me.
Scott Stevenson — Jun 01, 08 5977
For better or worse, most repositories today are svn or at least compatible with svn. My personal feeling is that basing the app git or Mercurial at this stage probably wouldn't be helpful for the primary audience because they wouldn't see much difference at the UI level and it would limit the selection of repositories.
I think a lot (though not all) of the conveniences you mention are somewhat irrelevant to a Versions user because the tool abstracts you from the details. That said, I'd think Sofa/Pico would be receptive to adapting Versions in the future to other models.
Sanjay Samani — Jun 01, 08 5978
For many Mac developers, Xcode's Subversion integration is sufficient for day to day requirements - checking diffs before check in, check in itself, updates, etc.
A Subversion GUI normally comes into play on those occasions when you need investigate the change history. From the screen shots it does not appear that Versions does anything different from the other Source Control GUI's available for Mac, Linux or Unix.
For example I would like to be able to see the following:
- Pick a method in a file and have a timeline that I could scrub through to see the changes over time. To identify when and why a particular change was made.
- The timeline could also work line iPhoto's shelf in edit mode, as an easy way to pick two older versions to compare, compared to the clunky interfaces we have now.
- Be able to select a line(s) of code and find out quickly when & why the were added.
- Include a diff tool that does not get confused by re-ordering of methods when comparing files. The diff tool should get "excited" about source code.
- See a graphical tree representation of check ins, branching, merges and tags. Something like Quartz Composer or the Unix History
I find it surprising how many developers tackle the problem of SCM GUI's and don't try to solve the problems they face themselves. An innovative GUI client needs tackle problems developers face.
Scott Stevenson — Jun 01, 08 5979
There actually is a feature like this in Versions to compare two separate revisions (based on what I think you're describing), but it's not exactly a shelf. I'm not sure if that would work well with textual content, but maybe I'm missing your point.
Be able to select a line(s) of code and find out quickly when & why the were added.
There is something similar to this in Versions, but I'm not sure if it works exactly as you describe it.
A lot of great ideas, though.
Ned Baldessin — Jun 01, 08 5980
Does it let you svn propset svn:ignore files from the list view?
Can you integrate it in some fashion into TextMate (and Changes.app) ?
Joachim Mrtensson — Jun 01, 08 5981
Scott Stevenson — Jun 01, 08 5982
You can set svn properties like that from the Get Info window for a file.
Can you integrate it in some fashion into TextMate (and Changes.app)?
It uses the same infrastructure as the command line svn tools, so you should be able to use any existing svn integration in TextMate or any other tool.
@Joachim Mrtensson: Does it help with merging?
I haven't taken an look at that yet closely, so I don't know. From what I've seen so far, selecting two versions of a file in the repository and comparing them will open them in FileMerge.
Theo — Jun 01, 08 5983
Ulai — Jun 01, 08 5984
What do you think people will mostly use this for? Their PhD thesis? Their Xcode projects? Their Illustrator brochure?
When should one use Xcode's version tool (which is also essentially svn) and when should one use Versions? Is Xcode only to be used for actual Xcode projects and nothing more? If so, why would anyone want to use Versions for their Cocoa projects?
Jan — Jun 01, 08 5985
Since the git process is far more complex than standard SVN procedure a well-designed tool would be even more helpful. I sure hope they made it extensible enough for that.
Jonathan Wight — Jun 01, 08 5986
Oh wait, Versions is still vapourware.
I've been saying for a while that all Mac svn clients either suck or are vapourware. While it looks like Versions might not be vapourware for much longer, I'm willing to bet it is going to suck. The screenshots are so cropped as to reveal nothing about the UI (hey look, a table view!)
But they've missed the boat. All the cool kids are switching to git, mercurial (my fav.) and bazaar. While Versions has been in vapour the world has moved on. All the cool kids (i.e. the ones that blog about this kind of crap) have been away from svn for 6 months now.
Ulai — Jun 01, 08 5987
Philippe Casgrain — Jun 01, 08 5988
I use, on a daily basis, SmartSVN (Java), svnX, command-line and TortoiseSVN (Windows). My main workflow is: copy (to make a branch), switch (to that branch), commit to the branch (several times), and merge (to merge the branch back into the trunk).
I have not found any good Mac GUIs that handle branching and merging, I have to drop to command-line for this.
Martin Pilkington — Jun 01, 08 5989
In general, the merging in distributed systems is much better than that in traditional centralised system, simply due to the nature of how distributed development is meant to work. The problem is that centralised development has a lot of benefits for certain types of work (a single place that can be backed up for example).
Why should you use them over svn? Well I don't use Mercurial, but with Bazaar the biggest advantage is the flexibility of it's workflow. Want to use a fully distributed system? Fine. Fully centralised? Fine as well. Anywhere in between? Fine again. Essentially you can use it just like svn but with the benefits that a distributed system can bring (such as the better merging). You can also quickly switch between a checkout (central style) to a regular branch (distributed style) when you need to using simple commands (bzr unbind, bzr bind). This is useful in situations where you want version control but may not have access to the server.
Here's a quick run through of checking out a project, adding a few files, committing and then updating using the central style of Bazaar (just so you can compare to svn):
bzr checkout sftp://mycentralserver
<Add some files to the project>
bzr add
bzr commit -m "Added some new files"
bzr update
The other benefit is that you don't have .svn folders everywhere.
Erik — Jun 01, 08 5990
With that said, I have to confess that I will not be using SVN at all for any work I do outside of my day job - git is just so much more powerful, simpler, and efficient (storage-wise) than SVN. The best things SVN has going for it are popularity and maturity, and the 3rd-party tools support that comes with those, but in time I expect git will have that as well.
@Jens - I too don't care for the fact that a git installation litters my ~/bin directory with Perl scripts, but git has shown itself to be an incredibly solid VCS system. As for "fiddly C code" and developer ego, well, I'd be without the majority of the tools and software that I use every day if I used those as criteria for choosing them. Python ftw and all, but I'm not going to turn down a great product simply because it's not written in my preferred language.
@Ulai - The reason you might want to use Versions instead of the XCode version-control tools is that not everyone uses XCode for programming. For example, I use TextMate and Flex Builder for most of the development at my day job, so it wouldn't make sense to launch XCode as my SVN client at work. The command line SVN tools are great, but it looks like Versions will offer some nice features and obviate the need for the command line for many tasks.
JongAm Park — Jun 01, 08 5991
Currently I use the SCPlugIn, which is a SVN tool integrated to the Finder. I tried SvnX before and other CVS tools.
Things I didn't like from tools other than SCPlugIn were :
1. Too small font size
2. Hard to use
The SCPlugIn is quite intuitive because it uses file system metaphore, and thus you can use it directly from the Finder. Actually version control program is to make identical folder structure on a client machine to the ones in the server. So, it is very intuitive if it is integrated to the Finder. On Windows I also use the Tortoise CVS and SVN.
However, if there is one thing missing is that handling of anonymous user. Default password setting for anonymous user is to hit "return" key. However, the SCPlugIn doesn't offer that option an I use console version of SVN for that.
So.. does the VERSIONS support anonymous user with "return" password?
Again, thank you for your great articles posted here in Theocacao and the Cocoa Dev Central. Nowadays there are many books on programming which contains lots of boring text without sample codes, and if they do, there are only some code blocks with which people really don't get how all they fit together. Under this circumstances, your posts are very exceptional. Easy to understand, short but clear description, good sample codes, diagrams and graphics which proves that one picture is better than 1000 words.
Two thumbs up!!!
Ramin — Jun 01, 08 5992
At this point, the best thing to do is for Versions (or someone who can get it done a little, um, faster ;-) to support an open plugin architecture and let the 'cool kids' develop their own connections to their favorite VCS tool.
Liam Clancy metafeather — Jun 01, 08 5993
I've also used SCPlugin, XCode, Subclipse, SVNCommander, PySVN, TortoiseSVN (and CVS, Hg), SVN support in BBEdit, plug-ins to Dreamweaver, etc to try to find the best interface but this seems the closest yet to what I want, in combination with something like FileMerge or Changes.
One problem is the overly generic naming when you do get a problems with an app like this though and want to search for help on Google!
@Sanjay Samani: you might like to check out svn-time-lapse-viewer a Java app with something like you describe. Not too pretty though.
@Ref the endless arguments about DVCS vs. SVN - as an advanced user of them all it really seems to come down to a few things:
1. Do .svn/.cvs folders all over the place really annoy you?
2. Do you actually work in a distributed team?
3. Do you work on massive source code trees where speed is really important?
4. Does your preferred code writing tool support your choice?
5. Do you use multiple platforms/OSs?
For general Web/Rails etc development, and users who are not currently using version control at all, these are not really questions related to the audience of an app like Versions, although I'm sure abstraction in the app to add additional VSC support has already been considered.
I'm just glad we will all be able to benefit from a fresh perspective when this is released.
semioticmonkey — Jun 01, 08 5995
Everyone has its merits and, often, you have to use what the PM want to use. So, Amen.
Apart from the TextMate bundle which helps getting commons operations done without switching to another application or terminal.
The problem with Sofa Version is....Sofa itself.
Look at Disco and its stagnant status. Read some comments on MU.
A software is not simply a bunch of code. It is support, updates, critical bug fixes, forums, emails, a blog maybe and the like. Everything helps the user feel that the investment (big or small, doesn't matter) will be protected in the march of time.
In the end who is willing to spend some bucks on a software which can suffer the same disco's fate?
I suggest Sofa to take its time to provide commitment, and stick with it this time.
For me, TextMate has all i need. I will try out this puppy to see if it can speed up my workflow anyway. But i will stand at window looking for clear signals from Sofa.
Scott Stevenson — Jun 01, 08 5996
They're actually just thumbnails. If you click on them you get the full window.
All the cool kids (i.e. the ones that blog about this kind of crap) have been away from svn for 6 months now
I didn't write this app, so can't speak to the design decisions made by Sofa/Pico. I know you mean in terms of people talking about using git, Mercurial, and so on, but I think it's moot here because most repositories today are either based on svn or are at least compatible with it.
Basing Versions exclusively on one of the many new scm systems would get a lot of attention from certain groups, but it would also limit its usefulness to the average user (particularly because not everyone gets to choose). If you toss a beachball off the stage at WWDC, chances are pretty good that you'll hit someone who uses subversion.
I also think Versions negates a lot of differences in terms of conveniences. You don't need to configure an svn server because Versions will make a local filesystem-based repository for you, and choosing the "Import" menu item is probably even easier than "hg addremove" as Jens mentioned.
These are just my opinions, of course. I'm sure that Sofa/Pico are receptive to feedback about different systems, but at least wait to use the app before you make a decision. I think it will be available quite soon.
Alderete — Jun 01, 08 5997
I've used it a bit, but actually reverted to using the command line tools, because ZigVersion came out after I got comfortable with them, and I just stuck with what I know. But if Versions was markedly better than ZigVersion, I'd give it a whirl.
As for the Git vs. Subversion vs. (your favorite VCS), I think it mostly comes down to what you know. If you're happy with Subversion, you will probably be well served by sticking with it. If you've joined a new project where Git (or Hg, or whatever) is used, you may find it hard to use for a bit, but once you get comfortable with the tool, you'll be happy with it, too. For developers, the real key is to use version control, and get good with your chosen tool, not to spend a lot of time trying to find the One True Tool.
Scott Stevenson — Jun 01, 08 5998
I think that's how I have it setup for WebKit and MacFUSE.
Christof Haemmerle — Jun 02, 08 5999
Would love to see git compartibility with Versions
christof
Jake Rutter — Jun 02, 08 6000
Steven Fisher — Jun 02, 08 6002
Martin-Erbschaft — Jun 02, 08 6003
I've also registered to test the beta version.
Marco — Jun 02, 08 6004
Jan Cornelissen — Jun 03, 08 6008
Josh Bryant — Jun 03, 08 6011
I can guarantee you this app will come out, gain a ton of revenue and be completely ditched into the land of no updates within the first year.
It is really amazing how fast the internet forgets.
Dirk Stoop — Jun 03, 08 6012
First of all, thanks to Scott for the thorough look at Versions and all the feedback coming forth from it, as well as to everyone who commented here for the criticism and inspiring discussion.
I probably wouldn't be posting this if that were all I wanted to say, since it sounds like the default thing that comes out of a company who's product is being (p)reviewed. I'm writing this in response to the comment Josh Bryant posted just a little while ago. (not quoted here, since it's probably right above this one)
I think I understand where Josh is coming from; updates for Disco have been scarce and I understand how that can annoy people who didn't see the bugs they reported being taken care of for too long.
On behalf of our entire team I'd like to say: sorry, we will do our utmost best to do better in the future. I hope that the 1.0.3 update to Disco, released February 28th, serves as an indication of our desire to improve (and most of all, as a means to seeing those bugs get fixed).
To balance Josh's criticism, I'd also like to point to the updates we have shipped for Checkout, our other product. These provide the most concrete proof we have that we do release updates, do care about our products, and most of all, do care about the people who choose to use our software.
Below is a list of links to the release notes for each significant Checkout update that shipped since Checkout 1.0 was made available for sale in December 2006. The dates of each update can be found in comments in the html source of their respective release notes.
Checkout 1:
1.0, 1.0.1, 1.1, 1.1.1, 1.1.2, 1.1.3, 1.1.4, 1.1.5, 1.1.6, 1.1.7, 1.1.8, 1.1.9, 1.2
Checkout 2:
2.0, 2.0.1, 2.0.2, 2.1, 2.1++.
All of these releases —including version 2.0— have been made available as free updates for every Checkout user.
The above list of updates doesn't change anything, but I hope that it will help provide a more balanced and complete picture to those who want to judge us by our track record.
If anyone wants to discuss this topic further, please feel free to email me at my first name at madebysofa.com.
Thanks,
Dirk
SSteve — Jun 04, 08 6013
Anthony — Jun 04, 08 6014
Joe — Jun 04, 08 6016
Scott Stevenson — Jun 05, 08 6018
I don't know offhand, but the Versions site mentions the first two chapters of the SVN book. It's not really a short tutorial format, though.
David — Jun 05, 08 6021
My first impressions of the software is that it's simple and slick, and I'd expect nothing less from a company that prides itself on such things. The Beanstalk integration is really great and the UI itself just makes sense. It's nice to be able to see all those changes right there in a logical and well-thought manner.
The only problem I've had (and I emailed Sofa about it) is that I can't access my Google Code projects. It spits back an error about the certificate verification failing and the issuer can't be trusted. (C'mon, it's Google!) Anyone gotten a Google Code project to work in Versions so far?
Daniel — Jun 06, 08 6029
Also, be sure to check out MAS (http://sourceforge.net/projects/macsvnserver) which provides the easiest method of installing subversion that I've ever seen. Run the app and you've got an Apache server running Subversion :)
Jeremy Ricketts — Jun 07, 08 6035
svnX is okay, but a tad unintuitive and very lightweight (you shouldn't be afraid of the command line is using this tool). SmartSVN is a mammoth of a program and introduces far to many complexities in a non-mac UI.
Is Sofa the only Mac dev shop that's up to the task? I don't get it. Look at the plethora of open-source technologies that have wonderful options when it comes to a Mac-native GUI. Is there something about SVN that makes it difficult to develop this type of app?
JoLePaBo — Jun 10, 08 6058
I downloaded the beta and try it and my only regret is that it doesn't really save time for the most annoying tasks with SVN: setting properties ... I think such option like a right click on a file to ignore it should be implemented ...
Also, I think it misses some decision on the way to manage a workflow, but the support team told me that they'll will work on these topics when considering the version 1.5 ...
For me, the goal should be to provide a tool like the SCM feature of Eclipse ...
BTW, why Apple are not migrating XCode to Eclipse ??
Nick Caldwell — Jun 24, 08 6086
For the same reason they don't like pouring lemon juice into gaping chest wounds?
I think it's safe to say that Apple isn't going to migrate its development crown jewels over to a bloated Java environment.
Scott Stevenson — Jun 24, 08 6087
You can do that by right-clicking on the file to bring up the Info panel, and adding a property. But it isn't a single-click. You could let them know that it's something you want.
BTW, why Apple are not migrating XCode to Eclipse ??
As Nick mentioned, the design goals of Xcode and Eclipse are radically different.
freese — Jul 22, 08 6180
http://www.zennaware.com/cornerstone/
Looks even more interesting than versions
sjk — Jul 23, 08 6181
Sarahhp — Jan 16, 10 7111