Follow Slashdot stories on Twitter

 



Forgot your password?
typodupeerror
×
Programming IT Technology

Making Sense of Revision-Control Systems 268

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."
This discussion has been archived. No new comments can be posted.

Making Sense of Revision-Control Systems

Comments Filter:
  • Git and Mercurial? (Score:4, Insightful)

    by capnchicken ( 664317 ) on Tuesday August 25, 2009 @07:24PM (#29194463)

    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.

  • by Vanders ( 110092 ) on Tuesday August 25, 2009 @07:35PM (#29194579) Homepage

    it would be crazy not to use Mercurial is a new project

    Mercurial is a distributed system, Subversion is centralised. They suit almost totally different workflows and teams. If you're a large group of Open Source developers in different countries and timezones Mercurial may suit you. If you're a small group of developers in the same office doing rapid development, Subversion may be better for you.

  • Re:Perforce (Score:5, Insightful)

    by xmundt ( 415364 ) on Tuesday August 25, 2009 @07:38PM (#29194589)

    P4 is awesome and works great for huge repos with lots of developers.

    However it is getting stale. I can't think of a single new feature added to it since I started using it in 1999.

    Greetings and Salutations...
              Funny...I tend to think of software more like a truck than a stalk of celery, so, staleness really never popped up on my radar. What new features would add to the capabilities of a package that you describe as "awesome"?
              Not flaming, I am really curious, as I have done some software development myself, and, wonder where the line is between actually adding good functionality to a tool, and "creeping featuritis" that adds bells, whistles and complications, but no real increased usability.
              regards
              dave mundt

  • by JohnFluxx ( 413620 ) on Tuesday August 25, 2009 @07:47PM (#29194671)

    This can only be said by someone that hasn't used a distributed system.

    Even if you are the only coder, a distributed system is still better since you're going to have your version, and the version on the server, and you want to be able to play about with your local version before pushing to the server. That's the sort of thing that git/mercurial are excellent at.

  • by Anonymous Coward on Tuesday August 25, 2009 @07:51PM (#29194717)

    This can only be said by someone that hasn't used a distributed system.

    I used Mercurial (& CVS) in my last job. Prior to that I was a Build Engineer & SCM administrator, using Subversion, CVS, VSS (Oh God) and a little Perforce.

    Distributed systems like Mercurial are nice but they do not suit every development style. A large scale commercial development team, for example, is much more likely to be structured in a way where Subversion would be a better solution. That doesn't even begin to cover things like the vast number of SVN plugins & clients for all sorts of IDEs and editors, effective backups, build management and possibly other minor issues depending on the team and the organisation.

  • by MerlynEmrys67 ( 583469 ) on Tuesday August 25, 2009 @07:51PM (#29194729)
    in common - they all suck and suck equally

    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.

  • "More Popular"? (Score:3, Insightful)

    by adamkennedy ( 121032 ) <adamk@c[ ].org ['pan' in gap]> on Tuesday August 25, 2009 @07:52PM (#29194733) Homepage

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

  • Re:Errata (Score:4, Insightful)

    by forkazoo ( 138186 ) <wrosecrans@CHICAGOgmail.com minus city> on Tuesday August 25, 2009 @07:54PM (#29194763) Homepage

    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.

    Yes and no. It is possible to only update/checkin at a certain level in the directory hierarchy, and miss a change to a header outside of the scope you are interested in. You have to be slightly beligerent to get into such a situation, but it can happen.

  • TortoiseSVN (Score:4, Insightful)

    by ImustDIE ( 689509 ) on Tuesday August 25, 2009 @07:59PM (#29194807)

    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.

  • by Rob the Bold ( 788862 ) on Tuesday August 25, 2009 @08:07PM (#29194879)

    This can only be said by someone that hasn't used a distributed system.

    Even if you are the only coder, a distributed system is still better since you're going to have your version, and the version on the server, and you want to be able to play about with your local version before pushing to the server. That's the sort of thing that git/mercurial are excellent at.

    Wouldn't distributed and centralized version control degenerate to the same thing in the case of a single user? I've never used a distributed system, what difference would there be in that case?

  • Re:Errata (Score:1, Insightful)

    by Anonymous Coward on Tuesday August 25, 2009 @08:19PM (#29194999)

    Kind of. I think what the author was getting at is that if SVN doesn't detect a conflict, it will perform the merge and won't /force/ you to look at the file before committing. So, you can wind up with Bob calling function foo in his checkin while Alice deleted foo in hers, or more subtle errors.

    It's still Alice's fault for not checking that SVN did the merge right, but that's not much consolation.

  • by RiotingPacifist ( 1228016 ) on Tuesday August 25, 2009 @08:49PM (#29195213)

    you can do that with either centralised or distributed systems, i fail to see your point.

  • Clearcase. (Score:3, Insightful)

    by Ungrounded Lightning ( 62228 ) on Tuesday August 25, 2009 @09:44PM (#29195633) Journal

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

  • by Anonymous Coward on Tuesday August 25, 2009 @09:46PM (#29195645)

    That's like saying C is a bad language because it allows you to use both underscore_names and CamelCaseNames in the same program. If your developers don't follow your development policies and problems result then it's their fault and not the fault of the tools.

  • by ckaminski ( 82854 ) <slashdot-nospamNO@SPAMdarthcoder.com> on Tuesday August 25, 2009 @10:54PM (#29196119) Homepage
    <quote>coupled with its designers absolute refusal to support deleting contents from the repository</quote>

    I don't necessarily disagree with you, but in places I've worked, if we removed code in such a fashion and an audit found out about it, we'd get pummeled. Especially if it was discovered after a public release. It's one thing to ship code copyrighted by someone else, it's something completely different to go about covering up the fact.

    So I'm torn on this "feature."
  • by Ztream ( 584474 ) on Wednesday August 26, 2009 @02:02AM (#29197235)

    I use Subversion on a daily basis, and I believe everything positive you said about ClearCase holds true for Subversion, except point 9. There are some philosophical objections to 9 (you should test the resulting code before committing it anyway), but I don't know if it's a design decision or a missing feature.

    That's not to say that Subversion doesn't have problems of its own though, but using CVS as a representation of the state of version control systems is like judging proprietary software on the basis of Windows 95.

  • by ztransform ( 929641 ) on Wednesday August 26, 2009 @06:35AM (#29198893)

    Essentially everyone who knows anything about modern version control considers CVS obsolete.

    Clarification: everyone who thinks they know everything about modern version control considers CVS obsolete.

    CVS still has advantages, in my opinion:
    - simple underlying storage structure that any administrator can understand
    - ability to simply administratively repair obscene or damaging check ins (investigate the cvs admin -o command, few other version control systems can do this)
    - simple file numbering scheme

    At the end of the day your needs may be more complex (regular branching, regular directory moves, etc) but in some commercial situations simplicity and ease of administration can be valuable points (and I think often outweighs the perceived benefits of SVN).

    As for Git with it's advanced learning curve of at least a week, sometimes you have not just programmers contributing to a project but front-end designers, template producers, who have never seen a version control system in their life. Subjecting them to Git can be both cruel and potentially uneconomic - particularly if they are all on short term contracts.

  • Re:Errata (Score:2, Insightful)

    by Ed Avis ( 5917 ) <ed@membled.com> on Wednesday August 26, 2009 @08:08AM (#29199435) Homepage
    No, the statement is quite correct. (And your statement 'Subversion requires you to update... whenever you have modified a file that has changed' is also correct.) Suppose the repository contains two files foo.h and foo.c. Bob modifies foo.h and checks it in. Separately, Alice modifies foo.c and checks it in. Subversion does not require her to update her working copy first; she can check in the file without any warning. But now the server has a new tree that doesn't match either Bob's tree or Alice's tree. They could both have run the test suite before committing and seen it pass; but the current version on the server might fail. (For even more concreteness, suppose foo.h defines an unused constant 'const int FOO_FACTOR = 5'. Bob checks in a change to remove it. Alice, meanwhile, edits foo.c and starts using FOO_FACTOR in the code. Both people are checking in working code; both Bob's tree and Alice's tree are working programs. But the state that ends up on the server is neither of those, and is a program that won't build.) I am not saying this is good or bad, just saying this is how Subversion works.
  • by David Gerard ( 12369 ) <slashdot@dMONETa ... uk minus painter> on Wednesday August 26, 2009 @05:01PM (#29208089) Homepage

    I disagree. CVS/svn worked well in my last workplace in two use cases:

    1. A project which largely has a single developer working on it. (Lots of those.)

    2. Something with several developers, but very slow code changes and much discussion before even those. (Much of the stuff us sysadmins were doing.)

    Any version control is a vast improvement on none, and svn is fine at being svn. But it's the last of its line.

"When it comes to humility, I'm the greatest." -- Bullwinkle Moose

Working...