Slashdot is powered by your submissions, so send in your scoop

 



Forgot your password?
typodupeerror
×
Programming IT Technology

CVS vs. Commercial Source Control? 43

Knight2K asks: "My company is currently using CVS to handle our code repository. The project managers, however, are unhappy with some problems with the system. Most of the developers appear to feel that CVS does what they need just fine, but don't seemed to be bothered by switching to something else. It seems to me that CVS handles part of these things, and cultivating a culture of responsible revision handling would take care of others. I would like to be an advocate for CVS here, but I don't want to just promote the Open Source solution if there are legitimate reasons or advantages to switching to a commercial project."

"The project managers disliked CVS because of the following:

  • Inadequate logging. (Management wants to be able see who is checking in what, how often, and how, track known issues, ChangeLogs, etc...).
  • Controls for branching and merging are awkward
  • Files can be edited by multiple users simultaneously without checkout.
  • Work has been and will be lost due to lack of true version control.
So my questions are:
  • Has anybody made the jump from CVS to a commercial source code control system (or vice-versa)? Why? How do they compare to CVS?
  • Anybody have procedures or processes they can share for handling branching and locking? How about tools to make the process easier?
I realize the issues listed above are a little vague. If it helps, we work on Java web applications and develop on Unix and Windows with a variety of different editors. Any insights into source code control would be great."
This discussion has been archived. No new comments can be posted.

CVS vs. Commercial Source Control?

Comments Filter:
  • http://www.bitkeeper.com/3.6.1.html
    is link to comparisons of Bitkeeper to CVS, Perforce, PRCS etc.
    Distributed under variant of GPL http://www.bitkeeper.com/4.4.2.html they have restricitions on redistributing modified versions of their code, but this seems to only require Regression testing by Bitkeeper, to allow derivative works to be redistributed.
  • complement (Score:4, Informative)

    by mattdm ( 1931 ) on Wednesday September 26, 2001 @05:10PM (#2354848) Homepage
    Instead of ditching CVS, you might want to look at some tools which can complement it. The Mozilla project has several [mozilla.org] which might address some of the complaints.
  • by coyote-san ( 38515 ) on Wednesday September 26, 2001 @05:19PM (#2354921)
    Don't sell CVS short, it may be quicker and cheaper to expand your existing CVS system than to replace it with a whole new system.

    For instance, what precisely does management want to see? Can you harvest that information with simple scripts, or via calling programs at the various places CVS already provides hooks?

    If the problem is poor documentation of the changes... that's a management issue, not a tool issue. Management needs to make sure people take this seriously - it should be a line-item in the employee review process.

    As for the "problem" of multiple users simultaneously checking out the same files, that's a feature, not a bug. You would hope that adults would know how to work together, but in the real world almost every shop I've worked at with an "exclusive lock" source control system has had at least one jerk who would sit on locked files for days (or weeks!) at a time, then submit monster changes. CVS strongly encourages people to fix one thing at a time, and if someone makes a huge change then it's their responsibility to merge the differences.

    Finally, I'm curious about the "work has been lost" statement. Is this because of poor practices (resulting in frequent change collisions and someone discarding code), or something specific to CVS?

    P.S., unless you're in a completely homogeneous environment, the multitude of CVS clients for different platforms is a benefit that should not be overlooked. I've worked in several shops with CVS being used on Win9x, NT, and various Unix boxen without a problem. Most other solutions are either specific to a single platform, or very expensive.
  • It's only because I work in a MS-shop that I actually use it, otherwise I'd dump it straight away. The branching/merging is terrible, setting labels is even worse.

    The biggest problem is that it corrupts it own database, Especially when you reorganise your project structure! How un-safe can your sources be in "SourceSAFE".

    • I have no love of VSS (you hear me? _no_love!) but how is setting labels hard. Load up VSS. Right click on what you want to label, select label from the menu, type in a name for the label, and a comment if you wish and select O.K.. How is that hard? It can be done programatically. Is there something 31337 you're doing I don't know about? If you're going to bitch about source-safe bitch about the crap non-standard UI, the poor,contradictory documentation, and probably the most concerning of all(as you point out) the data corruption issue.
      • Ah - it all seems easy and intuitive, doesn't it? Until you find out that it does really crappy things like:

        1. Treat file level and 'project' level labels differently.
        2. "Lose" certain label types during "Archive / Restore" operations.
        3. Actually create a new file revision for multiple labels applied to the same file version.

        I could go on for hours about how much VSS really sucks.

        -jerdenn
        • I've never seen any of that happen, and we _did_ use labels a lot at my last job, but it wouldn't really surprise me. VSS is a dodgy. I hope they've made significant changes in VS.NET. There's no reason why SQL Server or Web Storage System couldn't be used as a good back-end for VSS (which might make it a half decent system if the re-wrote the UI too).
          • Nope, no significant changes scheduled for VisualSourceSafe.NET - I think they've done a few minor bug fixes, but it's still the same old thing. If you want a good source control system, go to a third party.
  • by bluestar ( 17362 ) on Wednesday September 26, 2001 @05:55PM (#2355102) Homepage
    Inadequate logging. (Management wants to be able see who is checking in what, how often, and how, track known issues, ChangeLogs, etc...).

    CVS logs all checkins. If the comments supplied with a checkin aren't adequate yell at the developer. A different/better tool won't make the slightest difference here.

    CVS can also send notifications to people when various events happen (I think CVS calls them triggers). If someone makes a change to globals.h, for example, everyone would be told about it.

    Controls for branching and merging are awkward

    Has anyone tried a GUI frontend? I like the command line but I've set up a couple people here with WinCVS and it looked pretty good.

    Files can be edited by multiple users simultaneously without checkout.

    As someone else has pointed out this is a feature. And it's very good at merging changes. If it can't, it tells the poor developer to do it manually.

    Work has been and will be lost due to lack of true version control.

    This just can't be right. Version control saves work, that's what it's there for.

    Keep in mind that CVS handles some of the largest Open Source projects in the world, like Mozilla, Gnome and the Linux kernel.
  • CVS is bad... (Score:3, Insightful)

    by jmaslak ( 39422 ) on Wednesday September 26, 2001 @06:06PM (#2355166)
    Where is CVS bad? Simple - where you have multiple active branches at one time (think a QA branch, a development branch, and a production branch - you might fix bugs in production, so it is still an active branch).

    Try the following with CVS:

    - Merge the changes that fixed bug #5212 from branch A to branch B. Don't merge any of the other development that has happened in branch A since then. Make sure to get all the files that were affected.

    Simply put, CVS doesn't do this well.

    Perforce is the tool I recommend, although CVS is fine if you only have one line of development at a time.
    • How I fix bug #5212 (Score:3, Informative)

      by X ( 1235 )
      I grab the pre-bugfix label from CVS. I do a CVS diff against the label "bug5212" (indicating the verision with the fix). This generates a patch file. I switch to my other branch and apply the patch.

      Resolve conflicts and compile. Really, it's not that hard.
    • - Merge the changes that fixed bug #5212 from branch A to branch B. Don't merge any of the other development that has happened in branch A since then. Make sure to get all the files that were affected.

      Simply put, CVS doesn't do this well.


      Can you tell us any tool which can handle this better? IMHO, in general case I can't imagine any better way than CVS way of doing this. Or is just that you don't know it's possible to get changes between any two versions and get it applied to some other version?
  • by MemRaven ( 39601 ) <kirk.kirkwylie@com> on Wednesday September 26, 2001 @06:27PM (#2355267)
    I know somebody else has mentioned this already on this statement, but you should really take a look at Perforce [perforce.com]. They've got high level technical overviews [perforce.com] and comparison with CVS [perforce.com]. But it fundamentally solves everything that you say you're lacking right now:
    • Logging: P4 is much more server-centric than CVS, so at any time you can see what files are opened by which developers on which machines, which is one of the things that you're looking for. In addition, the ChangeList metaphor that it uses for atomic changelists ties the whole thing together by allowing you to easily do lots of tracking by changelists. Finally, you can do a lot of reporting with the built-in tools, such as "show me the last 10 submissions by Bob" or "show me all changes to affect that branch of development".
    • Branching and Merging in Perforce is great. Fundamentally, it keeps track of the different file revisions as separate subtrees of the system. So, for example, you can have //dev/... (the current development branch), //dev/v2/... (version 2), //dev/v3/..., etc. Or you can have //dev/..., //v2/..., //v3/... You can pick and choose precisely where you have branch points however you choose, and because that mapping ends up affecting the client's file hierarchy, users have the same hierarchy for different versions of the code hierarchy at the same time. Merging is incredibly easy (we currently have 4 active branches of development, and it's reasonably easy to keep them all in sync).
    • I think what you want is to be able to see who's working on something. Let's say you've got a binary file checked into CVS. Two people might be working on it. How will they know? Are they expected to email everybody else that they're working on it? What happens when they try to reconcile the changes? P4 handles this by keeping track of who's working on what file, WITHOUT locking the files. So you can have two people working on the same file, but they at least KNOW about it at the time that they're making their changes. Furthermore, for troublesome binary files, you can now have a file attribute on the server say "multiple people can read this file, but only one person can have it checked out." You can control that on a per-file, or per-file-type (such as "all .doc files") basis, which can be huge for the few files that inevitably have those problems.
    • I'm not sure what you're talking about with the lack of true version control, but P4 has a very strong transactional background, and perfectly atomic submissions (which CVS does not). It's impossible to synchronize to an inconsistent state without specifically wanting to do it. If you're talking about RCS file corruption, P4 stores digests of all the revisions of all files in the depot in order to ensure that it can recover from RCS corruption (or at least detect it, I'm not sure since we've never had a case of corruption there).

    There are even tools for automatically taking a CVS hierarchy and putting it into P4. I've not used it, but apparently it's quite easy to do.

    The biggest change that people I've seen always notice is the fact that with CVS, you just start editing files and it'll figure out later how to work that into the server. With P4 you have to tell it, which is not that great. However, there's a tool called C4 which a couple of our engineers who are most comfortable with CVS use which presents a view almost identical to that of CVS (except for the specific P4-isms), so that the learning curve is greatly decreased.

    • How is the command-line client? I've worked a little with perforce and was pretty neutral about it.

      For me, a vcs MUST have a command line client to be useful. I'm a big believer in reproducible builds and good version control and a command-line client go a long ways towards realizing that.

      • Perforce has the following client options:
        • The p4 command-line tool. This is definitely the most full-featured, and if you're experienced with command-line tools, easiest to use. It has the full functionality of the system in the tool, as well as some nifty scripting bits (like the -g option, which returns all output as marshalled Python dictionary options, or the -s option, which prefaces each line with a tag letting you know if it's Info, Warning, or Error to grep through more easily).
        • P4Win, which is the standard windows GUI. It's raelly full featured, and looks enough like other similar tools that even our non-technical people use it on a regular basis.
        • P4Web, which is a little mini-web server that runs on your machine and presents a GUI view for those who aren't on Windows. The P4Win GUI only runs on Windows, but P4Web runs on pretty much everything, and provides essentially all the same functionality as p4win and the p4 command line tool, it just has the latency gap of being a command-line tool.
        • P4Ftp, which is an FTP daemon which again presents an FTP view on the depot. While this might not seem great, it's a HUGE boon if you work with a bunch of tools that allow you to save to an FTP server and you're not a technical person (think: web designers working in DreamWeaver). Rather than teach them how to use a command-line tool or deal with a version control system, just stick P4FTP in front of them, and every time they close the FTP connection it will submit the change to the depot.


        Most functionality is provided in all tools (except P4FTP), but the P4 command-line tool works the best for me, and I use it even on windows for a lot of stuff. There's also integration with Ant at this point for many commands based on running the command-line tool.

    • Anybody ever work in an environment where there were developers on Macintoshes also using a Perforce system? How did that work out?

      My team has mixed Windows, Unix, and Macintosh developers. It's been a relative pain trying to get a nice source control environment that we could all use relatively painlessly set up.

      The Windows and the Unix users are usually no problem...but those bloody Macs!
      • I know that Perforce has ported their clients to several versions of MacOS, including MacOS X. Aside from any compatibility issues with filenames (which you'll have to deal with no matter what system you use) it should work, though I don't have direct experience with it.


        At my last employer, some of the graphics people were using Macintoshes with Perforce with no problems.

    • > Let's say you've got a binary file checked into CVS. Two people might be working on it. How will they know?

      If all developers are using "cvs edit" before editing a file, they will know.

      You might want to read http://www.loria.fr/~molli/cvs/doc/cvs_10.html#SEC 83 which explains how to avoid that problem.
  • Tried them all (Score:4, Insightful)

    by a42 ( 136563 ) on Wednesday September 26, 2001 @06:32PM (#2355294)
    I've tried them all. Well, maybe not all, but a bunch. Let me start by saying that these are based on my personal experiences with the following and that YMMV. Mmm-kay?

    Source Safe
    I've used multiple versions all the way back to 1994. (That was before Microsoft got their hands on it.)

    Pros:

    Decent client UI, fairly intuitive.

    Easy to set up and administer.

    Integrates well with MS tools.

    "Project Oriented" -- maps well to your file system.

    Cons:

    Doesn't scale well.

    Performs like dog crap unless you're running it on a local network.

    Tends to get corrupted for no apparent reason.

    Support for non-windows platforms is weak.

    PVCS
    Used in 1995 and 1999. The company I worked for in 1996 bought it over my strenuous objections then threw it away in favor of Source Safe.

    Pros:

    Industry standard, at least at one point.

    Cons:

    Slow.

    Expensive.

    Slow.

    Arcane.

    Slow.

    Totally counter-intuitve. The client UI is, perhaps, the worst ever.

    Oh, did I mention Slow?

    Perforce
    Have very little experience with this and none at all on a local network. I would rate it somewhere between SS and PVCS in terms of useability. Probably faster than both in a non-local network scenario. Disclairmer: We were running it over a vpn. Our client (owner of the repository) not exactly network whiz-kids. It took them months to get us additional VPN logins when we added more people to the contract. I suspect that, given a different client, Perforce might have been much better.

    Pros:

    True client-server.

    Speed is okay provided you have decent bandwidth between client and server.

    Cons:

    Configuring it was a little weird.

    Never quite managed to wrap my head around the way it wanted you to work. (Didn't use it for long enough, I guess.)

    Clear Case
    I have the least experience with this. I'd like it to stay that way, but... my current employer spent about a gazllion dollars buying into the whole "Rational Suite" idea, the gullible bastards.

    Pros:

    Uh, it's from Rational?

    Cons:

    Uh, it's from Rational?

    Expensive. (Oops. Guess that's included in the previous point.)

    Extremely difficult client configuration, at least on Windows. (Why does it need to run as a service on the client?)

    Needs mondo hardware on the server.

    Harder to administer.

    The server crashes alot, at least ours does.

    CVS
    Those Linux geeks can't all be wrong, can they?

    Pros:

    True client-server. (Or not, your choice.)

    Scales extremely well.

    Free/beer.

    Free/speech.

    Requires very little server horsepower.

    Flexible.

    Plays well with others. etc.

    Cons:

    Doesn't handle binary files well.

    Documentation leaves a little to be desired.

    Like most Open/Free software there's nobody to point the finger at when something goes wrong -- this makes suits nervous.

    Confusing use of the term "checkout."

    The whole "concurrent" thing can take some getting used to.

    I'm sure there are other pros/cons but I think that's enough.

    --john

    • Re:Tried them all (Score:3, Insightful)

      by stephend ( 1735 )
      Just to add a little to your assessments...

      SourceSafe follows the standard Microsoft line: it's pretty and fairly easy to use, but limited in a number of areas and not cross-platform (I used a Solaris version but it was very nasty).

      PVCS is absolutely appalling.

      I've not used Perforce, but I read that it's transactional, i.e., if you check in three files together it remembers that they're all connected to the same change. That sounds very useful.

      You've been very harsh on ClearCase. I like the fact that you 'mount' the archive as a drive and use a filter to configure what you see. It's very powerful, although, as you say, it does mean you need a big server to support it. Also it versions directories, which means you don't lose history when you move or rename files.

      Similarly, you've been overly nice to CVS! It takes the Unix approach to configuration: very minimal by default but can do wonderful things once you learn it. Or put another way, you can do just about anything with it given enough time. Statements like that, unfortunately, tend to scare managers. Also, I remain unconvinced about its scalability.

      And, to answer a question in the original post, merging branches is always a pain, no matter which system you use.
      • Also, I remain unconvinced about its [CVS'] scalability.

        Let's see...

        Mozilla has about 1000 developers (see http://www.cvshome.org/cyclic/cvs/proj-moz.html) and "many" source files.

        OpenBSD http://www.openbsd.org/why-cvs.html claims 70+ developers working on 75,000 files that total 1349 MB.

        Sounds pretty scalable to me...

        • My experience is mainly in commercial software development, hence my bias. However...

          As you increase the number of developers, the chances of two people making conflicting changes increases. That's a fact.

          From this, I could conclude that:
          1. Those 1000 developers are not actually active, i.e., they have made edits but are not any more
          2. There's not much activity
          3. There's better communication than on a 'normal' commercial application

          In reality, number "3" probably has the greatest impact. I've no problem with CVS' technical ability to scale to large applications, and I should have been clearer in my first post.
    • I am currently looking for a new SCM system as well.

      One package I haven't found anyone commenting about was MKS's Integrity Manager. Has anyone used that and do you have any comments on it?

  • CVS book answers all (Score:3, Informative)

    by ryants ( 310088 ) on Wednesday September 26, 2001 @06:50PM (#2355360)
    Most if not all of your concerns are answered in "Open Source Development with CVS" (Coriolis, ISBN 1-57610-490-7), most of which can be downloaded from here [red-bean.com].
    • I've borrowed the book from my boss every time I have to do something wierd with CVS. It has never answered my question.

      It may be a good primer but there is an overabundance (but scattered) free documentation out there already
  • by dpranke ( 136169 ) on Wednesday September 26, 2001 @11:09PM (#2356292) Homepage
    I recently had the job of evaluating what SCM system to use for our company. We were using CVS [cvshome.org] at the time.

    I believe that the complaints your bosses have about logging and concurrent editing can all be fairly easily fixed in CVS.

    The major gripes we had with CVS were:
    . slow (see below)
    . merging between branches was miserable, because the system didn't keep track of what had already been merged
    . renaming files lost all the history
    . windows interface was cumbersome

    We actually worked with a system layered on top of CVS that allowed us to submit batches of files at once, in a single transaction. This was the major cause of slowness, and CVS didn't really support transactions, so in some sense we were just fooling ourselves. The other major cause was doing a 'cvs update' on a large tree could be slow.

    Most of the problems we had could've been fixed
    if we spent the time to fix it. Some (transactions, renaming) we couldn't really fix at all. But, when I looked at everything I wanted to fix in CVS, I found that I had just described Perforce [perforce.com]'s feature set, and when I looked at how they implemented things, they did it like I would've. Plus, comparing the cost of Perforce (relatively cheap) to the time it would've taken us to implement the same features ...

    So, we switched to Perforce, and I've been (more or less) happy since. The branching structure is a little weird (compared to ClearCase's, which is the most intuitive I've seen), but we're learning to live with it.

    At a previous company, we used ClearCase [rational.com]. This was also a fine product, and it does a few things that no other product does, but it's very expensive, and a major hassle to administer.
    ClearCase (at least in the mode we used) implements its own filesystem, and can provide a level of security that the others just can't. But, is this worth paying 10+ times the amount for it?

    I also looked at AccuRev [accurev.com]. This was about on a par with Perforce, and had one or two features that looked really cool. But, in the end, Perforce won mostly because we went with the product that had bigger market share and more people had used it before.

    VSS [microsoft.com] wasn't an option because we're a mostly linux based shop, and because I had heard many of the complaints that others are making as well.

    PVCS [merant.com] I think is mostly an also-ran in this day and age. I think most new source-system users use one of the other previously mentioned systems.

    One new open source project (Subversion [tigris.org]) looked promising, but it was too immature for us to use.

    Bitkeeper [bitkeeper.com] also looked interesting, but not enough so to beat out Perforce or AccuRev.

    Another thing you might want to consider is how well the SCM integrates with a change mgmt system (or bug/task database). Perforce has a simplistic change database built in, but it's good enough for what we want it to do, and it can also be used with Bugzilla [mozilla.org] and a few other systems. Of course, CVS and at least ClearCase can do these as well. I've found Bugzilla somewhat cumbersome to use on limited inspection. Other freeware systems (GNATS [gnu.org], for example) are very weak.
  • by stephend ( 1735 ) on Thursday September 27, 2001 @03:51AM (#2357227) Homepage

    Inadequate logging. You can add extra technical measures to increase the quality of your logs. We have a system here where each comment has to have a bug report number in it. CVS checks to make sure the number is valid and in the bug report tool you can see which files have been modified for that defect.

    That does mean that every change requires an entry in your bug database. This can be a pain for minor, ad hoc changes (but there's an argument that you shouldn't be making changes like that anyway).

    Controls for branching and merging are awkward. Frankly, branching/merging is difficult in all the tools I've come across. CVS appears to be above-average in this regard. To paraphrase Tommy Cooper: "Slashdot, it hurts when I branch/merge." "Well don't do it then."

    Files can be edited by multiple users simultaneously without checkout. Another management thing. You shouldn't schedule work that's likely to make significant modifications to the same chunk of code at the same time. If team members talk to each other this isn't a huge problem!

    Work has been and will be lost due to lack of true version control. I'd bet that more work would have been lost without CVS. I think you need to find out what your manager considers "true version control" to be before anyone can answer this.

  • From a user standpoint, (I haven't administered a Perforce or VSS server) I would vote for Perforce if you don't mind using a commercial product, i.e. paying. First of all, I would throw VSS out the window, it's a mess for a lot of reasons stated in earlier posts (database corruption, branching, using it on OS's other than windows sucks and also if you want to get to your code from outside your local network Source Safe is not to friendly to that either.) On the other hand Perforce does mostly everything you would want. I think it takes a week of use to get aquainted with, but after that you'll find it a breeze. It has a windows and linux gui and also a command-line interface for the terminal junkies. It has some kind of client for most OS's (and a web interface). And they seem to update the clients often with bug fixes and new features. In the end CVS is great for online-collaborative projects, and it works well in the business environment, but I think Perforce has more to offer in the business environment.
  • by DarkHelmet433 ( 467596 ) on Thursday September 27, 2001 @07:07PM (#2361283)
    I've used perforce for years now, as far back as when it was called 'p3'. I find it absolutely invaluable and could not live without it for doing my FreeBSD development work on. Right at this instant, my development p4 repository has about 40 active branches on it. One has been alive for 2 years now and part of it has just recently been committed to the main FreeBSD tree. I must have done at least 80 to 100 merges to pull in the freebsd base changes into my branch. I am constantly suprised at how easy/painless this is compared to CVS. Yes, you can do it in cvs as well, but you have to mess around with tags etc. With perforce it is a no-brainer. In other cases I have a branch of a branch of a branch. Perforce was designed for this so that branching is so cheap and easy that it is quite practical to do *every* non-trivial feature development in a seperate branch.

    The only weaknesses that I regularly complain about with perforce is the relatively weak command line interface (compared to cvs, for example) and the lack of detached operation capabilities. For a corporate development environment the latter is generally harmless, but when you take a laptop on a plane or to a conference it can be a pain.

    p4 does require that you think a bit differently compared to traditional SCM's but the payoff once you've learned it is fantastic. But people who are doing the occasional patch here or there are not going to see these benefits. For them they may as well keep on using cvs.

  • The Apache project has created many scripts for use with CVS which helps out a lot with the types of things you describe. To get some of these tasty treats check out their cvs web interface [apache.org], or check out their CVSROOT module directly. I believe they encourage people to use these scripts (it is Apache, after all :)

    Apache provides:

    • Access Control Lists
    • Commit Message Mailing System
    Detailed instructions on how to install the scripts can be found in the README [apache.org].

    Also, like someone else mentioned, Mozilla.org has developed some killer online tools [mozilla.org] for managing source code with CVS. You get things like:

    • LXR - a "massively-hyperlinked source code browser that lets you cross-reference function and variable names"
    • Bonsai - a tree control "tool for watching up-to-the-minute goings-on" in CVS and "viewing checkins and log messages, reading diffs, etc."
    • Other tools like Tinderbox and Bugzilla
    If you end up staying with CVS, you will definitely want to check these out. Hope this helps.

    --Micko

  • I've had to teach many old-school corporate engineers how to use CVS, and the complaints discussed here I know all too well. The main one however seems to be the non-exclusive checkouts. To gain true appreciation for CVS and understand why the creators chose to be different, you need to step back and look at the issue of development conflicts.

    The general process for using a source control system consists of three steps:

    1. Obtain a file from the repository.
    2. Modify that file on a workstation.
    3. Return the new version to the repository.
    During which of these steps do development conflicts arise? The "traditional" source control systems say step two. Two or more people editing the same file at the same time will inevitably step on each other's toes. But therein lies the rub. Just because two people are working on the same file doesn't necessarily mean their respective changes will conflict. And notice I said WILL conflict. Future tense.

    This is where many source control systems have it wrong. Conflicts don't occur in step two. Multiple people never edit the same file. They each have their own COPY that they work with. The only way conflicts would happen there is if they were trying to use the same workstation. No, conflicts really happen in step three. If the file in the repository has changed since you've been working on your copy, then you might have a problem, and manually checking the files is the only reliable way to solve it.

    So yes, CVS is different ... and for good reason.

"Protozoa are small, and bacteria are small, but viruses are smaller than the both put together."

Working...