Source Control: Anything But SourceSafe

Subversion looks great, but unfortunately it still doesn’t support automatic repeated merges, in that you have to manually track the merges you have already done in order to avoid re-applying changes. (I just checked the manual, and it says that this is still the case.)

cvsnt handles this quite well, although it is clumsy in other ways.

arch (or tla) looked promising the last time I tried it a couple of years back. The big drawback was the hideously long path names which blew right through Windows’ 256 character limit; this put a dampener on its appeal. Some of us on the arch list tried various approaches to fixing this problem (including hacking Cygwin to support 256 char paths using the Unicode \?\ hack, or ‘compressing’ the directory names).

arch handled merges brilliantly, including star-merge. It was also great for cherry-picking other people’s branches.

Another worth taking a look at is Mercurial. I am loving it. :slight_smile:

Look at the timestamp…

How on earth did you post this before anybody’s comments were posted (i.e. Tomorrow)?

[branching and merging] is even dangerous in my opinion

Well, so is working with other developers. Don’t confuse the tool with the problem…

That said, if your team never needs to branch, then don’t branch. You can certainly do the old SourceSafe style “copy to a new, unrelated tree” routine.

Just use Perforce, people! Fast and powerful, utterly reliable, very flexible (disconnected editing directly on the file system is possible), excellent GUI tools, and free for up to two users.

The only time when I use a ‘Get Latest Version’ check out, with ClearCase, is when I check in and sync after, therefore getting the morning build’s sources. Or you really need something that someone has checked in during the day, again later than your sync.

If you don’t do this, I can see reason to get ‘latest version’ at least by default, in check out. But it is available in ClearCase

Btw, in 1999 microsoft internally used to use their own source control, SLM, while selling VSS to the outside world… I assume they must still be doing something like that.

For anybody already using subversion I’d seriously recommend taking a look at svk; it can handle offline commits to local branches, does decent automatic merging (including star merging), when it does find a conflict you can invoke the external merge tool of your choice and it operates happily against standard subversion repositories. We really couldn’t live without it.

Team System simply isn’t made for half your developers eschewing workstations for beefy laptops. There are workarounds, but svn supports that scenario better. (Perforce also seems to, but $$$.) Taking forever to read everything each update is a pain, as well as tortoisesvn’s lack of unicode support (3rd party uis can be used but aren’t as straightforward as its own), but eh.

One of the things that has been wildly helpful in a couple of projects recently is the ability to copy/move files in from other projects as a very fast poor man’s switch and have them instantly recognized as changed or correct. Normally it’s insane and stupid, but as a means of finding bugs caused by integrating several independant projects (not branches), keeping a half-dozen revisions of each to test against handy, I’m not sure how else to go about it.

Team System simply isn’t made for half your developers eschewing workstations for beefy laptops. There are workarounds, but svn supports that scenario better. (Perforce also seems to, but $$$.) Taking forever to read everything each update is a pain, as well as tortoisesvn’s lack of unicode support (3rd party uis can be used but aren’t as straightforward as its own), but eh.

One of the things that has been wildly helpful in a couple of projects recently is the ability to copy/move files in from other projects as a very fast poor man’s switch and have them instantly recognized as changed or correct. Normally it’s insane and stupid, but as a means of finding bugs caused by integrating several independant projects (not branches), keeping a half-dozen revisions of each to test against handy, I’m not sure how else to go about it.

Haha, your blog need some atomicity; I just got a post error about renaming permissions that I presume means it was being updated simultaneously. :stuck_out_tongue:

My project is using subversion and I must say that it is truly amazing. I have not used any other version control software before but I have nothing but good things to say about subversion. The addition of tortoises svn makes life easier as well.

Just my $0.02 to add… Even if your a solo developer, you need to use source control.

I currently use SourceGear:Vault. It’s free for a single developer. I believe Perforce is free for a single user also.

And I’ll second the opinion on Eric Sink’s articles. Well worth the read.

You may as well call this post “Visual Source Safe Considered Harmful” and get all computer science-y about it.

Anyway, my progress: CVS - VSS - XDelta (!) - Subversion.

Yes, Chris Nahr is right, it’s more between Subversion (free) and Perforce (commercial but fair priced)*. While Team System isn’t bad, it is still far from where Perforce stands today. Sure, TS most likely has a promising future, but so does Perforce, and it’s great already.

With Perforce you’ll get a proven, enterprise-ready solution with great support, something many companies cannot do without. It’s also easy to use, stable, multi-platform for those who need it, and it performs really well. And you shouldn’t overlook its integration capabilities.

Subversion may not yet be as feature packed as Perforce, and it doesn’t perform as good on large projects. Yet I prefer using Subversion+TortoiseSVN in many cases, simply because it often does everything I need it to do (although I’d like to see it track branches), and does so really well. Not to mention it’s free, easy to use and very stable.

Foxyshadis: Look at the release notes for the soon to be released TortoiseSVN 1.4 (currently released as RC1); TortoiseMerge now supports UTF-8 and UTF-16. And you can always configure it to use a custom merge tool such as Araxis Merge, UltraCompare or Beyond Compare.

*) It’s not that simple of course, since there are many specialized products on the SCM market. But these two are a good fit for most development shops.

We manage everything in subversion here. Not only source code, but everything. Well, our accounting system is in Quickbooks, and that’s not easy to version - but everything except Quickbooks and e-mail (Outlook / Exchange) is in subversion. All internal documentation, all client field notes, everything.

It’s really cool to make all my field notes on my laptop, and then just update through subversion when I get back to the office - all the documentation just flows to all the other people in the office that need it. We keep about a dozen repositories running, and not everyone mounts (or needs) all of them.

Once I got over installing apache and all the Active Directory hooks for Apache, the actual install has worked awesome. I scheduled a SVN “dump” for once a day, and keep 5 rotating backups of the fully dumped repository.

It’s awesome. Just make sure to buy some big-ass disks - Our storage requirements grew by about a factor of 4, but it’s worth it.

our team have been using subversion for about a year now (all asp.net + c#) and it’s so perfect. it integrates into our workflow very well and is easy to get new people to learn and start using.

Jeff, this is somewhat off-topic. But once upon a time I did some UT for a team system predecessor. At the time, it included requirements tracking and bug tracking, at least the ability to tie the two together with the source. (e.g. You check in a change and tag it as fixing a bug which marks the bug as clear.). I had this a long time ago with Perforce and Bugzilla but I don’t see that in Team System anymore. The MS site for Team System is useless for discovering what the product can do, do you have any better references? Do the features I mentioned exist anymore in TS?

on topic:
David: re VSS + team offsite - tick tock tick tock, don’t let that DB get over 2GB. Don’t defrag the volume the VSS DB is sitting on too often. :wink:

An entire post could be created on the horrible feature of Sourcesafe that is “Shared Files”. Oh dear god. Sounds great in theory, in reality, it leads to so many screwed up builds it’s not even funny.

  • “I don’t mean to pick on SourceSafe here. It was a perfectly adequate source control system in the late 90’s.”

You’re kidding, right? I first had to us VSS in 1998 when consulting for a client who had a slightly different version of their software tailored to each customer. My first job was to automated the build process. I can’t begin to tell you how much pain I went through with VSS and its (lack of adequate) command-line control!

The best system I’ve used is IntaSoft’s AllChange, which combines source control and defect tracking/workflow management. The Win32 UI was a bit ropey last time I used it (2001, although it was an old release then), but apparently this is now better (and there’s now a web UI for people who find such things useful).

My current employer (since Jan 06) is using Subversion/Subclipse/TortoiseSVN and I’m finding that, on the whole, it’s not a bad solution. It does suffer from the usual open source issues in that when it works, it works brilliantly; when it comes across a problem it takes me ages to figure out a) what went wrong, b) how I can fix it. Doubtless I’ll get better at a b as I get more experience, plus I’ve got a copy of Garret Rooney’s “Practical Subversion” kicking around somewhere, which seems a reasonably reference.

We are currently using Borland Starteam, and to be really honest: I think it sucks.
And seeing the graph above, I’m not the only one with this opinion.
I’d rather work with VSS ('99-style).
The Starteam interface looks even more pre-historic than the old VSS.
Although everything in the interface is supposed to be configurable, I can’t figure out where to find those settings (or what they do). When you work with multiple development teams on the same server, you will see all developer names in all project (when assigning tasks for example, which creates a dropdown with about 50 names where I need only 5 names).
Starteam doesn’t do automatic logon based on your windows logon (so you’ll keep on typing passwords)
And the worst of all: they change the meaning of “get latest version”, “check in” and “check out” between the Starteam interface and the Visual Studio integration.

I haven’t had a chance to look into VS Team System, but I hope it is much better. Concluding from all comments above, I would also invest some time into SVN.

In my opinion, the two best options right now are Subversion and Team System.

On the Team System side, bear in mind that Team System isn’t just source control. It’s also work item / bug tracking, build server, unit testing, project metric reporting, and a whole bunch of other stuff too.

Basically Team System is like the whole suite of open source tools in one box. The tradeoff is consistency/integration vs. choice/configurability. I’m not saying one is better than the other, they’re different solutions for different audiences.

I did a little interview with Patrick Cauldwell and Scott Hanselman on this very topic:

http://www.hanselman.com/blog/HanselminutesPodcast21.aspx

Direct download:
http://hanselminutes.com/default.aspx?showID=30