Making Sense of Revision-Control Systems
ChelleChelle writes "During the past half-decade there has been an explosion of creativity in revision-control software, complicating the task of determining which tool to use to track and manage the complexity of a project as it evolves. Today, leaders of teams are faced with a bewildering array of choices ranging from Subversion to the more popular Git and Mercurial. It is important to keep in mind that whether distributed or centralized, all revision-control systems come with a complicated set of trade-offs. Each tool emphasizes a distinct approach to working and collaboration, which in turn influences how the team works. This article outlines how to go about finding the best match between tool and team."
We've had great luck with Perforce for several huge projects. I use it at home for smaller personal work too. It's excellent (no connection with the company, just satisfied customer).
No revision control can help add to your job security! :-p
Git and Mercurial are more popular than Subversion? That's the big news to me, with all snarkyness aside. I best be getting out of my bubble.
A libertarian shat on my carpet once. Claimed the free market would sort it out. -Ford Prefect(8777)
There's a brief mention of perforce (and then nothing after it). There's mention of CVS but it's dismissed [rightly so!] as old. This is JUST about svn, git and hg. No bzr, vss, darcs, arch, monotone, bitkeeper, clearcase, or visual studio team server. Now, maybe that's a good thing, maybe not, but the summary made me think they were going to deal with a range of revision control systems. They picked three. Oh well. :)
I have experience using rcs and it seemed good enough. Now I'm currently using subversion that someone else set up in the name of progress (not my decision). My problem is it's cluttering up my working directories with meta data, plus I run into consistency problems as I'm moving and merging code from temporary experimental folders and other teams folders that are not in the same repository. All of this was perfectly fine with rcs (I would just check out something, make whatever changes I needed to and check it back in), but subversion has problems with it (my hypothesis is other peoples' meta data is getting mixed up with my own, causing subversion to get confused). Does anyone else have this problem? Do all of the more recent systems share these issues? Am I just a clueless old coder confused by this new fangled technology?
Because Subversion offers working out of a shared branch as the path of least resistance, developers tend to do so blindly without understanding the risk they face. In fact, the risks are even subtler: suppose that Alice's changes do not textually conflict with Bob's; she will not be forced to check out Bob's changes before she commits, so she can commit her changes to the server unimpeded, resulting in a new tree state that no human has ever seen or tested.
This statement is incorrect. Subversion requres you to update your working copy before committing whenever you have modified a file that has changed in the repository.
Each tool emphasizes a distinct approach to working and collaboration, which in turn influences how the team works.
Ok, yes, some tools do. For example, subversion supports trivial branching, but sucks at merging, so it encourages people to work on a common "trunk" branch. It also only supports a central server, so it "encourages" developing with a central server.
Git, on the other hand, "encourages" people to not put multi-gigabyte files in version control.
However, Git can be used to talk to an SVN repository. It can also talk to a central repository, or work purely via ssh between workstations, or with something like Gitjour, in a truly distributed fashion. Github is a strange and wonderful mutation of the two.
Perhaps, by making branches and merges so awesomely fast, Git "encourages" lots of little local branches, and keeping a neat patch history. But to sum it up:
SVN can handle large binary files and Windows better than Git, and is better integrated into IDEs.
Git is better at everything else, ever. Seriously -- 99% of projects that are hosted on SVN would make more sense on Git.
Don't thank God, thank a doctor!
I'd suggest Git too. But what I really want to know is... why does it matter *which* our project chooses? Surely IDE devs and bugtracker teams could build a decent abstraction layer so that any DVCS would work just fine with them.
I think Pida just spun-off an abstraction layer at least. Hopefully people will get behind it and put an end to these silly DVCS wars once and for all.
Besides, everyone knows language wars are where it's at ;)
Well except for VSS, and Microsoft isn't even dumb enough to use that on their own projects.
This article was very limiting by only talking about a few small system, didn't even talk about "interesting" systems like ClearCase (Yes, you too must hire a Clear Case administrator to figure out this beast). I really liked the underlying technology where the VCS was treated as a filesystem driver and the current code that you were working on was handled as a set of operations on the file system.
I have mod points and I am not afraid to use them
> Today, leaders of teams are faced with a bewildering array of choices ranging from Subversion to the more popular Git and Mercurial.
I think you might be confusing Internet "buzz" with popularity.
I am a bit jealous of some Git features, but the place I work -- and me for my personal projects -- use SVN for one big reason: TortoiseSVN. It is a great interface to version control and not everyone (probably the majority) who needs to contribute is a programmer, or has any idea about command line interfaces, ssh, branching, merging, etc.
I am aware of TortoiseGit, but it has not reached a stable release, so it is not up for consideration in a serious environment.
There are other things to keep in mind too; SVN is much more tailored to our repo structure than Git, so that's a big plus for SVN -- at least for us.
I have found it exceptionally difficult to explain to people why revision control systems are useful. I am not talking to computer science people (sadly). For some reason people don't seem to want to spend the five minutes running through a common git tutorial. What am I doing wrong? No, powerpoint is *not* the correct medium to teach you how to use git. Grr.
Sincerely, an angry programmer.
They understand revision control. Documents are to lawyers what code is to software developers.
We use Bazaar at ringdevelopment.com. Works fine for us, seems less labor intensive than svn.
Verbum caro factum est
Simple feature set, but none of us have ever clobbered anyone else's changes.
How is "less logical" to function robustly under a load of hundreds of developers checking in code while build jobs are simultaneously checking out code? How "less logical" is it for a single server to be able to hold the entire code reserve of a large software company and serve it to all its users? There is no other product that will function as well as Perforce under such a load.
how about the tps report system for each change the PHB makes a big fuss about it when you don't do them and gets on your ass when you take the time to do them and your other work fail behind when you take the time to do them.
The more popular Git? since when
What I find interesting is there's no mention of ClearCase. Maybe the author is unaware of it, or considers it obsolete? Then again, the author didn't seem that experienced with the debacles into which one can get with revision control SW. The example he posits is the least of the problems which can crop up.
I've used both ClearCase and CVS. First, CVS:
Now for ClearCase
Now, granted, a lot of FOSS products are not trying to be SEI level 5*. They don't have to demonstrate a repeatable process. The often don't incorporate bug fixes into older releases, or maintain several concurrent branches of the same codebase. It is also important to show which
The society for a thought-free internet welcomes you.
I've only tried a few revision control systems.
Of those I've tried, Clearcase is the hands-down winner function-wise, especially for the diverge-converge model of multi-programmer development.
Extremely lightweight branching. "View spec" - a little language to specify exactly what version of what you want: (Version x.y.z but override by the foobar feature development branch but override that by anything in /src/garble as of Tuesday at 3:15PM but override all with anything I've got checked out in MY development branch...). Integration into the filesystem so your tools "see" containing just what version of the sources you specified. A make variant that imports already-built objects that some OTHER developer made from the equivalent sources, rather than compiling them again, etc.
Downside: It's commercial and 'way pricey.
But if you're a commercial shop you should at least evaluate it. The functionality is fansastic.
(I hear some of the core functionality came from an open-sourced student project. I've often wondered why there isn't a FOSS clone of the important features - or if there is and I just missed it.)
Bantam Dominique roosters crow a four-note song. Once you've heard it as "Happy BIRTHday" you can't NOT hear it that way
How can no one have mentioned Bazaar http://bazaar-vcs.org/ yet? For me, it's a great compromise between having my eyes and brain bleeding from being forced to use the atrocity that is git (or CVS come to think of it, which I'm still stuck with at work), and all the quirks and issues with Subversion.
It works the same on Linux and Windows , has a TortoiseBZR GUI for Windows, and is very flexible in just about all respects. Sure it's written in Python and is a tad slow. If your project is big and complex enough for that to matter, you already know that and are using git or whatever. For everyone else it's great.
I haven't fooled around much with Git, but from what I understand, unlike subversion it doesn't pollute the working copy with a bunch of trash. It is trivial to corrupt a subversion working copy and I find it one of the least stable aspects of an otherwise extremely stable system.
I understand the subversion dudes are working on moving their trash out of the working copy. Hopefully they can get that done soon! The several times some brain-dead script accidentally ran over my working directory and messed it up left me just short of dumping subversion right then and there.
Friends of mine have open-sourced savana, http://savana.codehaus.org/ a thin layer on top of Subversion that makes it easy to do all work in private branches before promoting to the trunk. A common workflow is:
sav createuserbranch mybranch --calls svn copy under the covers to create user branch named mybranch ... normal checkins using svn commit go to YOUR private branch ... when you are ready to promote your changes back to the trunk:
sav sync -- pulls in any changes made to trunk since your private branch was created so you can test locally
sav promote -- merges your changes back into the trunk
The thing I like about this thin "workspace managing" layer on top of Subversion is that for the most part you can take advantage of existing tool support for subversion (like integrated IntelliJ Idea and Eclipse support), as all of the savana commands just call svn commands under the covers.
Git and Mercurial aren't more popular than Subversion. Not by a long shot.
I happen to like arch quite a bit, it does what I need and is simple to use.
Meet DVC...
Timeo idiotikOS et dona ferentes
Ensuring everyone in project is using same one is more important than which one is chosen.
If you can use the same one for a whole company even better
I work at a game company, and the majority of what's in version control is either binary or (effectively) unmergable. I know this is relatively unusual when it comes to software development, but this fact alone gives me a lot of pause when thinking about whether something like Git would be a good idea compared to SVN, Perforce, etc -- discovering conflicts immediately is vital in this sort of scenario. Mentions of things like six-second merges makes me believe they can't possibly be testing with a repository of any significant size (tens of gigs, at least). How well does something like git handle this scenario?
http://thedailywtf.com/Articles/The-Source-Control-Shingle.aspx
Please mod parent informative, because it absolutely is.
Last time I checked Subversion was the current prime choice for VC Systems, for various reasons. Widespread availability of tools being the most prominent. Could it be that the summary is bullshitting on this issue? I think so.
We suffer more in our imagination than in reality. - Seneca
I hate to say an M$ product wins, but for me and my team(s), I would not go without. Of all the M$ products I have worked with, this has to be one of the best "Can't do without" apps out there. It is very user friendly and easy to use, but the only 2 bad things, the merge is not very good, so I use my manual comparison app to then do the updates....and the SQL to VSS backup is not what I expect, so again I have to manually write scripts to keep my dbs backed up (stor procs, tables,views etc..)
Came across it recently and found it to be a little more intuitive to use than mercurial and git. Am I alone? Thoughts on it......
Niggers hate working, so they love unemployment (and unemployment benefits). That's all you need to know about the Obama presidency.
I use git to follow a couple projects (from github). (This is on debian (lenny) with debian's git binaries.) I don't touch the local code myself, just do occasional git pulls.
git pull consistently gives me problems like:
error: bad index file sha1 signature .git/objects/pack/pack-969e098f674ac9f6eac22f9dca0c61bf3aca615a.pack
fatal: index file corrupt
remote: Counting objects: 146, done.
remote: Compressing objects: 100% (92/92), done.
remote: Total 124 (delta 50), reused 72 (delta 15)
Receiving objects: 100% (124/124), 566.08 KiB | 501 KiB/s, done.
fatal: failed to read delta base object at 337995 from
fatal: index-pack failed
Why?
Do you even lift?
These aren't the 'roids you're looking for.
Serena Dimensions sucks donkey balls. I would rather use plain old RCS than that piece of crap.
If you haven't already.. please check out jazz.net and Jazz platform from IBM Rational. Yes the folks who brought you Clearcase has a whole new collaborative platform for version control and more. Agile developers really like Rational Team Concert