Follow Slashdot blog updates by subscribing to our blog RSS feed

 



Forgot your password?
typodupeerror
×
News Books Media Book Reviews

Open Source Development with CVS 127

Managing software development is a job right up there with aircraft controller in the realm between fascinating and nerve-wracking. chromatic's latest review is of a book introducing one of the best known tools for managing the complexity inherent in such projects, Karl Fogel's Open Source Development with CVS.

Open Source Development with CVS
author Karl Fogel
pages 316
publisher Coriolis Open Press
rating 8.5
reviewer chromatic
ISBN 1-57610-490-7
summary More than a summary of CVS commands, Open Source Development with CVS is a study of how to organize and lead free software projects.

*

The Scoop

Free software, the theory goes, is in a constant state of release. Instead of working in secret for years to produce a Grand Unified Model of Everything, then unleashing it on an unsuspecting world to the accompaniment of television commercials and full-page ads in trade magazines, development occurs in public view. That's aided, in no small part, by the convenience of CVS. So argues Karl Fogel in his introduction to Open Source Development with CVS. In that case, why not try it yourself?

Interspersed between CVS How-To chapters are Developer How-To chapters. For example, chapter 3 describes the author's theories on the entire Open Source process. That includes such common-sense advice as "Release something useful" and "Release something usable." There're plenty of examples to back up these ideas, drawn from the examples of large and popular open source projects.

What's to Like?

CVS-specific chapters build on each other. Though 95% of the commands the average developer will ever use are covered in chapter two, the increasingly specific information just may come in handy someday. Though there's a price to pay for flexibility, the increased power it brings is worth it. If you've followed the examples and done some testing of your own, you'll have earned the title 'CVS Guru' by the end of chapter six.

Fogel's development essays take the pragmatic approach. Rather than preaching the One True Way to Do It, he analyzes several successful projects (Apache, the Linux kernel, and CVS itself being among the most prominent) and attempts to draw general principles from their histories. His overall philosophy seems to be "manage a few things well and strictly, and let your project evolve." With a good framework in place (both in your code and for your project administration), things will work smoothly and you'll be more likely to reap the benefits of the free software model.

Chapter eight gives troubleshooting tips. Fogel walks through the most common errors he's seen, doling out explanations and solutions with abandon. Chapter nine is a good reference, neatly summarizing CVS commands and files. Having completed the rest of the book -- and understanding the concepts, this section has the exact syntax at your fingertips.

What's to Consider?

Though a complete reference on its own, occasionally the author defers discussion of some subjects in favor of referring to the Cederqvist manual accompanying a CVS source distribution. To be fair, these are often highly technical minutiae, but at 316 pages there is space for an expanded explanation of topics such as the RCS roots of CVS (knowing the source of CVS can help one to understand why some things are the way they are). Thankfully, there's information provided about the official FAQ and mailing lists where such data can be found.

The Summary

Beyond a comprehensive guide to using and administering CVS, Karl Fogel has written an easy-to-read guide on successful Open Source development. His practical focus and laid-back approach should prove workable for everything from pet projects to large undertakings. The author and Coriolis, the publisher, have also made chapters 2, 4, 6, 8, 9, and 10 available online at http://cvsbook.red-bean.com, under the GPL.

Table of Contents


Purchase this book at ThinkGeek.

  1. Why Open Source Development and CVS Go Together
  2. An Overview of CVS
  3. The Open Source Process
  4. CVS Repository Administration
  5. Designing for Decentralized Development
  6. Advanced CVS
  7. Building, Testing, and Releasing
  8. Tips and Troubleshooting
  9. Complete CVS Reference
  10. Third-Party Tools That Work With CVS
  1. CVS Maintenance and Development Today
  2. GNU General Public License
This discussion has been archived. No new comments can be posted.

Open Source Development with CVS

Comments Filter:
  • by heiho1 ( 63352 ) on Thursday June 15, 2000 @05:35AM (#1000171)
    Clearcase is pretty good and Visual Source Safe works well on Win32. I think CVS is superior because it is more cross platform and *flexible* about what you can do with it. I like being able to migrate development over various platforms because you never know when Win32 will suddenly cease to be viable or Linux will pale next to Solaris for some high-performance server side code [hey, it could happen]...
  • by YASD ( 199639 )

    If some of the chapters are being released under the GPL, doesn't that make the whole book a derived work...which would also have to be released under the GPL?

    ------
  • by Anonymous Coward

    The so-called "release it early, release it often" model of open source development is quite simply a load of nonsense, and not one that anybody engaged in a project which they want to ever complete should bother with.

    If you have some ivory tower ideal in which bug are found as soon as possible, then you end up spending all of your time fixing these bugs (because all open source does is let more people complain about bugs) and trying to satisfy vocal Linux "hackers" who want feature X, compatibility with program/desktop/window manager Y or whatever by spending additional time doing this in an attempt to deliver.

    Let's face it, how many open source projects ever get anywhere? Apache and Linux are the only two that I can think of, and that's because they got in before everyone jumped on the bandwagon. On the other hand we have vapourware like ext3, wishware like the GIMP and crapware like Mozilla to try and keep us going.

    All I can say is thank God for Borland, leading the way in allowing corporate interests to migrate to Linux.

  • Version control software is a cornerstone of any collaborative programming effort, and this book certainly looks good.

    But, come on now, this article is just an add for think-geek.

  • Not only is he releasing a nice portion of the book for free electronically, but he encourages you to avoid amazon.com. From the site:
    You can get it directly from the publisher at
    http://www.coriolis. com/bookstore/bookdetail.cfm?id=1576104907 [coriolis.com] (due to Amazon.com's recent abuse of the patent system, I am participating in a boycott of Amazon, and ask that you not purchase this book, nor any other, from them).
    After looking at his site, this not only looks liek a great book, but an author I'd like to support. Besides, my CVS skills need the polish.
  • I like being able to migrate development over various platforms because you never know when Win32 will suddenly cease to be viable or Linux will pale next to Solaris for some high-performance server side code [hey, it could happen]...


    More importantly, you aren't stranded when the company that owns it gets bought out by a competitor who give you an uncomfortable migration path to their product. That would be the competing product you rejected last year because it didn't do what you needed. And speaking of that, like all other GPL'ed projects, if you need a feature, add it, or offer to support a development team that will.
  • by Iorek ( 68393 ) on Thursday June 15, 2000 @05:44AM (#1000177) Homepage Journal
    My employer purchased the book about 6 months ago on my recommendation. The FAQ and Cederqvist are great, but I thought this was the best way to introduce the office to CVS.

    As the review said, when you're asking the technical questions, the answers can be found. I don't think that Fogel was trying to replace Cederqvist on that front.
  • by smileyy ( 11535 ) <smileyy@gmail.com> on Thursday June 15, 2000 @05:45AM (#1000178)

    Um, no.

    Karl Fogel and Coriolis, the copyright holders, can do whatever they want with the material that they hold the copyright to.

    Another author using those chapters in a derived work would have to release the derived work under the GPL, or obtain a separate license from the copyright holder(s).

    FWIW, I went to school with Karl. Never knew him, but it's neat to see that he's written a book. Makes me feel inadequate, too.

  • by Darkseer ( 63318 ) on Thursday June 15, 2000 @05:48AM (#1000179) Homepage
    I work for a consulting company who just implemented CVS for a client. The were using VSS and had to be shown the light. They were actually loosing productivity do to currupt version databases and VSS's oh so discriptive data files. This book helped me and others easily learn the intracacies of CVS and implement CVS in a sane manner for both remote and local development. I highly recommed it to anyone doing Config Management work!! The watches section was especially useful for what we were doing.

  • As a matter of interest, do projects using CVS find that the builds of software projects get broken under a concurrent development scheme, as changes by others working on the same files may have unforeseen side effects not picked up by the automated merge tools?

    And on a related line of inquiry, do race conditions every occur on busy projects where by the time you have merged and tested the latest additions to some file, someone has already checked in yet another update to a file you are working on forcing you to do another round of merging and testing?

    Cheers,

    Toby Haynes

  • I own this book, and I found it interesting that the chapters that were made available on the net were the chapters concerning technical matters, whereas the chapters I found most interesting, concerning the social aspects of CVS and Open Source projects are only available in the printed version.

    This makes a lot of sense, from the authors perspective (and from ours as users of open source), since technical documentation is what's most desparately needed for many projects.

    But I wonder how difficult it was to convince the publisher of this, who must have wanted to flip the situation around, and only offer the 'soft' information for free.
    --
  • CVS is one of those tools in unix-land that simply needs to be taken outside and shot (along with "make" and a few others).

    To this day, most usrrs and admins resolve CVS problems by mucking with the /CVSROOT files themselves, and just taking it from scratch. It is incredibly easy to get CVS into a confused state, particularly when removing or moving files.

    Gripe mode off.

  • Visual Source Safe works well on Win32.

    Excuse me? VSS *sucks*. Ok, it might be reasonable for one, *maybe* two people absolute max. We're (trying to) use it for ~30 people and it is awful...

    CVS, OTOH, is a wonderful tool. I haven't had to use it in a group of more than a half-dozen developers, but it holds up well, provides a better security model, and is truly cross-platform (the win32 clients work quite well). And I must say that this book has been a valuable reference. If you have to admin CVS, definitely get it. If you are just using CVS, get one or two copies for the group to share.

  • Well... it's more of a way for Slashdot to make money through a referral program. I guess it's an ad as well. If you don't want to help Slashdot, you can buy the book by just going directly to ThinkGeek [thinkgeek.com]. Better yet, you can get the book a lot cheaper here [bestbookbuys.com].

    --

  • From another point of view, the "hard" information is mostly just reboiled from the Cq. The "soft" information is the "value add" that the author provided.

    If all you really want is the technical information, you can get all of this from online sources (and print it if you want a hardcopy). The thing that made me buy the book were the chapters on the philosophy of open source project management.

  • by Anonymous Coward
    The so-called "release it early, release it often" model of open source development is quite simply a load of nonsense, and not one that anybody engaged in a project which they want to ever complete should bother with

    The "relase early, release often" model is the very soul of Open Source Software. Eric Raymond, in his landmark Cathedra l and the Bazaar [tuxedo.org] , which lead directly to the start of the Open Source Revolution, wrote so much, and am I to believe that you are more knowldgeable than the inventor of Open Source?

    If you have some ivory tower ideal in which bug are found as soon as possible, then you end up spending all of your time fixing these bugs (because all open source does is let more people complain about bugs)

    As Mr. Raymond said, "Many eyes make all bugs shallow", once again proving he is right. Open Source Software rarely has bugs do to it's very nature. OSS programmers make fewer, if any, mistakes than their commerical counterparts, and scientific studies have backed this up.

    Let's face it, how many open source projects ever get anywhere? Apache and Linux are the only two that I can think of

    Fetchmail [tuxedo.org] is a very sucessful Open Source Projects which from Eric S. Raymond. I use it all the time.

    On the other hand we have vapourware like ext3,
    wishware like the GIMP and crapware like Mozilla to try and keep us going.


    Well, I heard that ESR will be working with the Gimp's Scheme code (since he helped to write Scheme), but I haven't heard anything about his involvement in the Mozilla project since the early days of it. He hasn't even mentioned ext3, so I can't comment on it.

    All I can say is thank God for Borland, leading the way in allowing corporate interests to migrate to Linux.

    I'm just hoping they'll become interested in NetBSD! [netbsd.org]
  • I have limited experience of Visual Source Safe, but I do have one very strong criticism - it's not good over high latency networks. I collaborate with a colleague in London who does most of the coding on some of our modules. Because our repository is in New York, he had to stop using Visual Source Safe for day-to-day source code control as it was taking WAY too long to do simple operations. By contrast, our shared CVS repository on my Sun workstation here in NY works fine when he is dialled in from home in London even!
  • I tried to view the online version, but I keep getting HTTP 404's.

    Has anyone actually been able to get to it?
    Bad link?
    Slashdotted?

  • This the funniest post I have read in ages, would you people moderate that post up to 6!!!!

  • I've used CVS since being converted by an ex-Prisma employee back in '89 at Cray Computer. I think it rocks, especially when compared to the in-house developed tools that I've been forced to use over the years.

  • Agreed. I want my work done 5 minutes ago, now I have to deal with a corrupt repository? For CVS, you haven't used WinCSV, have you?
  • To this day, most usrrs and admins resolve CVS problems by mucking with the /CVSROOT files themselves, and just taking it from scratch. It is incredibly easy to get CVS into a confused state, particularly when removing or moving files.

    Um, yeah, and if you happen to think that "rm" stands for "RenaMe", you can also get yourself in trouble. This is kind of a sore subject for me, because a number of people where I work loudly and consistently preach the virtues of supporting user stupidity. "Oh, if they set this environment variable and used this command-line option and delete the temporary file, the button might be an ugly color! Lock it down!"

    At some point, you have to stop trying to protect users from their own stupidity. Especially admins, come to think of it. Anyone who ignores the instructions in the manual (freely available [cyclic.com] btw) shouldn't be administering anything, let alone the version management system for a multiple-developer project.

    Face it: system administration can be hard work sometimes. Doing anything right can be hard work sometimes. If you don't know how something works, learn! Most any package comes with something, and there's always mailing lists, IRC channels, and newsgroups...

  • I know it's easy for CVS to be run over commonly-available secure connections like ssh. Does anyone know if that's possible with VSS, or would one have to go about setting up a VPN to securely communicate?

  • Is there such a thing?
  • I agree, but my point was, how difficult must it have been to convince the publisher of this?
    --
  • by QZS4 ( 7063 )

    What's up with the title? I mean, is there any substantial difference between "Development with CVS" and "Open Source Development with CVS"? The process should be the same regardless if it's only in-house or throughout the 'net. Right?

  • by Anonymous Coward on Thursday June 15, 2000 @06:08AM (#1000197)
    Before buying this book, I read that it would be effective for quickly coming up to speed and getting CVS working. This wasn't the case for me.

    First, there's a pretty grievous error in the inetd config line he gives which makes the server not run. I can't remember the entire line but remove the duplicate 'cvs' text.

    Second, although I know it doesn't fit in with the theme of the book, there isn't much in the way of setting up CVS for commercial use. In my case, I want to have CVS controlling both some OS and commercial code. Setting up SSH access, multiple CVS servers, access control, etc are not covered very well, if at all. Unfortunately, these are the same topics the Cederqvist doesn't cover either. I was hoping this book would fill in those gaps but it just doesn't.

    On the upside, the author frequents the cvs newsgroup so you're likely to get book questions answered there (the group is pretty good for questions in general as well).

  • I am currently a user of Visual Source Safe, but it is a obvious that CVS is much more popular among this community.

    Could somebody please post a summary of the differences between CVS and VSS?

    Also, if I were convinced to switch to CVS, what would the migration process consist of?

  • As a matter of interest, do projects using CVS find that the builds of software projects get broken under a concurrent development scheme, as changes by others working on the same files may have unforeseen side effects not picked up by the automated merge tools?

    Yes. In fact, we've implemented a couple things at work to alleviate this. Some of the cvs commands have been abstracted into a script. You can't commit changes to the repository unless you put a lock on it first with a new command. Once in a while things still get stomped, but it's happening a lot less frequently now.

  • http://sourceforge.net/

  • BitKeeper is a source management system that claims to be "especially tuned to the needs of the Linux team". It has some interesting features for distributed development. The "trees of repositories" looks particularly useful for open source projects.

    I'm impressed with what I read about BitKeeper, but since CVS does the job for me I've never tried it. Anyone used it?

    You can get more info here [bitmover.com]

  • 1) Yes. We use CVS extensively for reasonably-sized development teams--25-30 people. We often have people who break the build.

    NOTE: Peter Miller's Aegis appears to deal with this specific problem.

    2) Yes. This sort of thing happens periodically, but not in the manner you describe. For individual files, cvs appears to do a good job with concurrency. Problems like this arise when configuration management branches the code and doesn't adequately notify the developers. This results in fixes being checked into the old branch. Unless the developer or cm person is diligent, the new branch *won't* have the fix.

  • n/t
    --
    Change is inevitable.
  • The author actually includes several chapters which relate specifically to the development of Open Source Software. So here, the distinction is actually relevant.
  • Correction: 'Point and Click' Power User ;) CVS and SourceSafe aren't really competing apps. Yes, they have the same general purpose, but they fullfill this in two very different environments. If you're cracking out anything related to these MS buzz words, use SourceSafe. If you're programming in c or Perl or something else in Unix, CVS is by far your best bet.
  • What do you expect? it's a BOOK REVIEW .
  • My group also used VSS in the past, and we also had some major issues with the VSS database corrupting on us. One of the major advantages of CVS is the simple file format it uses. I've moved our repository three times already and I've never had much of a problem doing so. Moving to CVS also allowed us to use any OS we wanted to for development (in Java), which was also a big plus.

  • I read this book cover-to-cover a few weeks ago, a definate rarity for me; a lot of times I'm lucky to get to the 2nd chapter before giving up. The author spiced it up pretty good with Open Source anicdotes and human language. I walked away with more than an understanding of how to use CVS.
  • by nthomas ( 10354 ) on Thursday June 15, 2000 @06:31AM (#1000209)

    The same problems I had with trying to learn Expect, I had trying to learn CVS: lack of good online tutorials & documentation.

    Richard Stallman (a man with whom I disagree on a great many topics) said it best: He had heard so many good things about Perl, and wanted to learn the language, but when he started looking for online tutorials, the ones he found were far and few in between, and not to mention of very low quality. Everybody kept telling him to buy the (O'Reilly) "books", but he wanted online stuff, stuff that just wasn't available.

    When I wanted to learn Expect, I asked around, and posted to the newsgroup, on where would be a good place to learn, everybody replied, "get the Exploring Expect book." When I told them I couldn't afford it, I just got a "tough luck" and a shrug.

    I have been wanting to learn how to use CVS for quite some time now, and I'm sure this book is great for someone that can afford to shell out the $40 bucks for it, but I can't, so can anyone point me to some good docs?


    --
    N. Thomas

  • by Mignon ( 34109 ) <satan@programmer.net> on Thursday June 15, 2000 @06:33AM (#1000210)
    One difference is speed. I don't know the details but I understand the problem is that VSS uses a more chatty protocol. I have an overseas colleague, and he found VSS unusable across a trans-Atlantic link. CVS works fine for him, though.

    Our program is cross-platform (Win32/Solaris); I don't know if VSS clients are available for Solaris (or any non-Windows platform), but a nice thing is that the CVS command-line tools are the same on Unix or Windows. Some of us use WinCVS on Windows. It's even possible to integrate CVS with Developer Studio by customizing some menus. There's a page out there detailing this, if you're willing to search for it. Of course, CVS can be integrated into Emacs on either platform as well.

    One nice thing we use is the webCVS [fh-heilbronn.de] interface, which allows browsing the CVS repository in just about any web browser. One handy feature is its ability to display color diffs of arbitrary revisions.

  • I acutally did buy a copy of this book, and to the limited degree which I've been able to read it (life? what life?), it's been quite enjoyable. However, I do have one beef with the author.

    In his initial description of what constitutes Open Source, the author describes OSS licenses as falling into one of two broad categories: the GNU Public License, and "everything else". Given the constant flamewars which seem to erupt over "which is really more free," I would have thought that a mention of the BSD license as an alternative was appropriate.

    Is it a critical flaw? Probably not. Anyone interested in OSS enough to purchase this book has probably already heard of the BSD license. But it bothered me to see the GPL presented as the be-all, end-all when there are other licenses with substantial differences and large followings.

    (disclaimer: other than a mild personal preference for the GPL, I have no opinion on the relative worth of either the GPL or BSD license.)
  • You can lock files under CVS if you want to. It requires a few scripts on the server side, but it's all fairly well documented.

    You can also implement advisory locks too...

  • I've found that Cervisia is a _very_ nice GUI frontend for CVS.

    Check out
    http://cervisia.sourceforge.net/

    There is still room for improvement and more features, but it does make dealing with CVS less painful.
    I like the fact that it shows you the commands it is executing so that you can learn as you go.

    eli173
  • This is just silly.
    If you have some ivory tower ideal in which bug are found as soon as possible, then you end up spending all of your time fixing these bugs
    And the alternative is what, not fixing bugs?
    and trying to satisfy vocal Linux "hackers" who want feature X, compatibility with program/desktop/window manager Y or whatever by spending additional time doing this in an attempt to deliver
    "I want feature X."

    "I don't care so much about feature X, but if you want it, then you write the code for it."

    Where's the problem?
    --

  • Speaking of which, I just tried to download the GPL'ed chapters, and not one of the links worked. Nothing but "Page Not Found" errors. Very disappointing. Is it me, or are there a greater number of annoying little things like this in OSS that would raise screams if done by, say, Microsoft, but are blithly overlooked when done in the name of OSS?
  • by Anonymous Coward
    Eric Raymond, in his landmark Cathedra l and the Bazaar , which lead directly to the start of the Open Source Revolution, wrote so much, and am I to believe that you are more knowldgeable than the inventor of Open Source?

    I beg to differ. The true father of the Open Source Revolution is none other than Richard M. Stallman. ers is nothing but an outcast, a reject, with inferiority syndromes because his contributions were not of high enough quality to be included in the allmighty emacs [emacs.org].

    OSS programmers make fewer, if any, mistakes than their commerical counterparts, and scientific studies have backed this up.

    Agreed. Only I would have chosen the British spelling: commercial.

    Fetchmail is a very sucessful Open Source Projects which from Eric S. Raymond. I use it all the time.

    But isn't emacs a much better example? It allows you not only to fetch mail, but to read it as well. Furthermore it allows you to read news, compile and even execute programs, play games and it is self documenting too! I hope you see the error of your ways and are more careful in the future when choosing who you listen to.

    I'm just hoping they'll become interested in NetBSD!

    Aha! Another indication of your ignorance, although I do not blame you. You have clearly been misguided by that blasphemous esr.

    As the wonderful Richard M. Stallman says here [gnu.org] NetBSD [python.org] has numerous problems with its license, including even advertising clauses! Well, so much for Open Source Software.

    Thank you.

  • by selectap ( 30841 ) on Thursday June 15, 2000 @06:43AM (#1000217)
    I've used both before, and here's my take:

    If you're using strictly MS tools and you're not dealing with a lot of files, then VSS should do OK for you. Visual C, VB and family make it very easy to check files in and out of VSS, and it also makes it easy to deploy content to IIS based web sites. (although I know nothing about how secure that is)

    If you're dealing with a large project, I think that it greatly increases the chance of the VSS database corrupting, which to me is one of the biggest flaws and a major reason why I would not use VSS.

    The advantages of CVS are:

    Simple file format eliminates chances of corruption. I've moved our repository to 3 different machines without any problems...I just had to tarball the cvs root directory and move it.

    Support for multiple OS's, including a VSS-like client for windows [wincvs.org]

    Comes by default with many Linux distributions, so all you have to do is dig up that old 486, put a good size HD on it, and you have instant version control.

    Conflict resolution works just as well as VSS, if not better.

    No license fees. :)

  • Trolling ... GIMP is "wishware" ? What a dork. However, it's a reasonably successful troll, judging by the number of fish in the net.

    I guess you have to add me to that count =)

  • by sbeitzel ( 33479 ) on Thursday June 15, 2000 @06:48AM (#1000219) Homepage Journal

    I have used both systems, so I'll comment on my experiences. I haven't administered a CVS repository, so some of my knowledge will be incomplete there.

    The migration process question is easy to answer: when you migrate, you're gonna lose all your history. So when you do, I recommend you burn a CD with your VSS repository on it and archive it on a server somewhere. Then, do a complete checkout of your source tree into a fresh location. From there, do a massive add to your CVS repository and boom, you've got your source migrated over. One thing you may want to do is write a script that will insert an $Id:$ tag in a comment up at the top of each of your source files before they get added; I find it awfully nice to have the revision number right there so that when somebody asks me what version I'm working on, I can tell 'em.

    On the differences, an exhaustive list would be really long. You might take a look at the FAQ [honeywell.com] for comp.software.config-mgmt as a starting point. In brief, though, CVS has these advantages over VSS:

    • The repository doesn't automatically get corrupted by usage. (VSS does this.)
    • Checking in and out don't get exponentially slower as the repository gets big.
    • There are clients for just about any development platform -- so your Mac HTML/Graphics people don't have to have CodeWarrior and the VSS plugin in order to check in their work.
    • It's free

    Actually, if you can afford the package, I'd suggest looking into Perforce [perforce.com]. It's very similar to CVS (including the variety of platforms for which it has clients - although the Mac client is an MPW tool, which is great for programmers but icky for designer types), and it introduces a couple of very nice features: atomic changes (so when you check in a bunch of files, the commit doesn't happen until they're all in) and a really slick use of the filesystem so that with really huge repositories it's still lightning fast.

  • It's still freely available via anonymous CVS. See http://cvsbook.red-bean.com/anoncvs.html [red-bean.com] for instructions on getting it.

    The CVS version is the texinfo format, and includes a Makefile to build the alternate formats.

  • As the review says, half of the book (the technical chapters) are GPLed and downloadable from http://cvsbook.red-bean.com [red-bean.com]
  • If you don't know how something works, learn!

    User education isn't the issue - CVS simply lacks adequate functionality.

    Major source tree cleanups, as another poster has pointed out, are incredibly painful, and typically result in the admin going into /CVSROOT and just tickling the filesystem directly (which is what any type of database should prevent you from having to do).

  • Once again, the /. group-mentality rears its ugly head.
  • additional:

    And on a related line of inquiry, do race conditions every occur on busy projects where by the time you have merged and tested the latest additions to some file, someone has already checked in yet another update to a file you are working on forcing you to do another round of merging and testing?

    Only if 1) Your developers don't talk to each other or 2) Your files don't map to the modular chunks of the system the developers are working on.

    Most of the time, developers are working on separate functionality in separate files; when they overlap, you talk to each other...

    CVS probably implies a build system broken into lots of files along natural system module breaks, but then you probably ought to be doing that anyway...

  • It appears that pretty much all the links to the free chapters are currently bad. Since they're all dead, and there's no mention of it on the site, I'm guessing it's due to a mistake. Especially as they were all working a week or two ago.

    However, it's still freely available via anonymous CVS. See http://cvsbook.red-bean.com/anoncvs.html [red-bean.com] for instructions on getting it. (I just tried it, and it does work)

    The CVS version is the texinfo format, and includes a Makefile to build the alternate formats.

  • when they overlap, you talk to each other...

    Ha! Would that it were. :-b

  • I don't know the details but I understand the problem is that VSS uses a more chatty protocol.

    Speaking of chatty protocols, has anyone noticed the response string that a remote CVS server gives after authenticating a client? If your login is accepted, it sends back "i love you", if it's rejected, you get back "i hate you". I wonder what the story behind that is?

  • Luckily, we only have three or four people using VSS here.

    It really is a joy to use, though, if you're using visual interdev. (I wonder if they named that to try to steal the name "vi"?) Since you can check files in and out from the project pane, it's very very convenient.

  • Clearcase is pretty good and Visual Source Safe works well on Win32. I think CVS is superior because it is more cross platform and *flexible* about what you can do with it. I like being able to migrate development over various platforms because you never know when Win32 will suddenly cease to be viable or Linux will pale next to Solaris for some high-performance server side code [hey, it could happen]...

    And if you want something superior to CVS, but without the financial hemmorage that is ClearCase, get Perforce [perforce.com]

  • Sorry, you caught us with our pants down. Apparently the scripts we use for keeping the book on-line failed recently, and of course we didn't notice till today. :) The HTML is back on-line, and the rest of the links should be working shortly.
  • "make" is one util that needs replacing. The use of \t as deliminator has cost countless hours of troubleshooting.
  • by Anonymous Coward
    If you're programming in c or Perl or something else in Unix, CVS is by far your best bet.

    But why on Earth would anyone want to use Perl for a project which is going to be large enough to require CVS? So much bullsh*t about Perl is spoken on Slashdot and Usenet, and it's starting to annoy me. Here are the facts:

    1. Perl is slow. This fact will become obvious once the Perl program becomes sufficiently large. Compiled languages are the only serious option for coding any non-trivial software.

    2. Perl makes inefficient use of available resources. The interpreted nature of Perl creates a huge overhead, thus wasting processor resources and making your 1GHz Athlon perform like a 486.

    3. Perl is hard to maintain. It is impossible to create weakly-coupled, highly abstracted code in Perl, thus it is also impossible to maintain Perl code on large projects. Object Oriented languages win every time.

    4. Perl is unecessary. There really is no sane reason to use Perl - The argument that Perl is simpler to learn is completely invalid, since any reasonably skilled Perl 'coder' can easily make the step up to C. The sheer inefficiency of Perl means that C and C++ are more suitable than Perl for 99% of programs.

    Please don't moderate this down because it disagrees with your own beliefs about Perl. The truth is, everything I've said can be backed up with facts.

    - Lita Juarez.

  • If you mean WinCVS, it's ass. On Win98, Win2k, and NT4, it managed to sometimes botch perms and sometimes not at my last place of work. This is really fun when you have six people working on a website.

    That said, I can see some real uses for CVS, especially in a web development environment; You can set up a cron on your remote server to periodically do a CVS update. rsync is better at moving files around, but CVS does it all in one package.

  • Richard Stallman (a man with whom I disagree on a great many topics) said it best: He had heard so many good things about Perl, and wanted to learn the language, but when he started looking for online tutorials, the ones he found were far and few in between, and not to mention of very low quality. Everybody kept telling him to buy the (O'Reilly) "books", but he wanted online stuff, stuff that just wasn't available.

    I think the proper "free" response to this is to say.. "What do you want for free?" If you don't like it write your own documentation...
  • It's one thing to say they don't use VSS; It's another to back it up by telling us what they do use. So, uh, what do they use?

  • We chose CVS over VSS for stability and speed. Was on a project that used VSS for 9 months and lost the repository 4 times. Never heard the specific cause (could have been human error), but don't want to risk it. On speed, VSS takes roughly twice as long as CVS. Upside of VSS is NT integration (if you like that sort of thing) and nicer GUI, but source safety is paramount in my mind, with minimizing developer wait-states a close second.
  • I wish I had not already commented on this thread or I would moderate your post up.
  • when they overlap, you talk to each other...
    Ha! Would that it were. :-b

    :-) In an ideal world that is...

    Advisory locks at least stop people unwittingly editing the same file. The paranoid can use mandatory locking...

  • Look into Ant [apache.org], the XML based build tool from Apache.

    It's still in its infancy, but the idea is solid I think. Just needs to be developed more.
  • Gah. Perl comes with some of the nicest, most complete, and entertaining man pages that I've ever seen in a software package. I don't believe there's a reason to complain about the lack of perl docs.

    I was slightly disappointed when I finally went out and bought one of those O'Reilly books after using perl for a year or two, and found that much of it was pulled straight from the man pages.

    Perhaps old rms was trying 'info perl' instead of 'man perl'.

    -joel
  • We have about twenty developers using both Windows and Linux and VSS seems to work nicely enough. I would have preferred CVS but the Windows guys didn't like the fact that you can't lock the file you are editing (it's possible but it's not the CVS way). SourceOffSite has a nice (commercial) client available for Linux so that I don't have to use VSS Win32 client and a Samba share (puke) for Linux development.

    More about SourceOffSite here [sourcegear.com].

  • Apologies for the broken links at
    cvsbook.red-bean.com [red-bean.com], the problem is now fixed.

    -Karl
  • Jesus. Richard Stallman can't do "man perl"?

    I spent $40 or whatever on O'Reilly's _Programming Perl_ and while I consider it money well spent, the most consistently referenced chapter (and the only one I can claim to actually need) is Chapter 2, which lists all of the functions that Perl has and uses, which is a direct conversion from the manpage, right down to the typos.
  • I wanted to make the entire book free, but the
    publisher wasn't comfortable with that. However,
    they were enthusiastic about making the CVS-
    specific portions of the book free. In fact,
    they may have suggested it before I did.

    I think the logic was that CVS is free, so the
    documentation about CVS should also be free.
    It was certainly more important to me that the
    CVS portions be free than the rest, although I
    wish the entire thing could have been free.

    Deep down, I think intellectual property is
    a contradiction in terms, but in order to get
    this book published I made a compromise. :-)

    Fortunately, it looks like Coriolis has no reason
    to regret their agreement to release the majority
    of the book for free. Sales are doing well, and
    it's already into reprint. Long live dead trees!

    -K
  • Well, if you can afford more like $9 (or cheaper through some discount places like FatBrain [fatbrain.com]), you might consider my forthcoming book (from O'Reilly) the C VS Pocket Reference [fatbrain.com]. Of course, I'm biased, since I'm the author. And, the book is a reference rather than a tutorial, although it does have some basic "primer" type material in the introduction.
  • In my mind, the one outstanding difference is that in VSS you have to lock the file before you can can change it. While it is locked, other people cant change it (easily). In CVS, several people can work concurrently on one file. When different developers check in changes of one file, CVS has to try to merge them. This often works, but not always.

    My personal opinion is:
    Use CVS for open source projects. When one developer starts work on a file and then doesn't have time to finish, other people are not hindered.
    For commercial apps I prefer the VSS-style. You know your working hours and your holidays, when you start working on a file, you will usually finish it. If you don't, you can still give it back. If someone needs a file somebody else is working on, its no problem contacting the other person (this might be a problem with open source). I don't say, use VSS. There are many VSS-like programs out there. For example, in my old company (>=7 years ago) we used PVCS, which was already quite nice. In my current job we work with VSS, which is alrightish (we only have 2.5 developers :-)), but we also have had file corruption.
  • Anyone who resorts to mucking-around in CVSROOT manually needs to read the FAQ [loria.fr].
  • Anyone who resorts to mucking-around in CVSROOT manually needs to read the FAQ

    Will the FAQ tell me why CVS is unable to rename files easily?

  • I agree with these criticisms, and that CVS is in dire need of either replacement, or a forking of the CVS codebase. The development mailing list is heavily guarded by a few people who work hard to prevent any progress in the development of CVS, so replacement is probably the answer.

    One feature that I would like to see is the ability to configure the diff algorithm by file type, so that revisioned binary files (images, for instance) can be stored in the repository on a space-efficient manner. PRCS does this with the xdelta library, but I don't know if PRCS allows the use of a line-oriented-text diff algorithm for source files.

    I also find the event hooks in CVS to be lacking. A generalized hook mechanism is needed that has access to both the name of the checked-in file and its contents, with both pre-commit and post-commit triggers, by file name, file type, directory, module, user, and whatever other parameter might be useful. CVS has some of this, but not enough.


  • I'll chime in here and share my experience.

    I use both CVS (on Linux and NT, 2 users) and SourceSafe (on NT, 40 users) constantly. I've also used ClearCase (on Solaris and NT, 20 users) for two years.

    I also maintain and administer CVS (for a project a buddy and me are working on).

    ClearCase is extremely powerful, but is has its own filesystem and is so complex, my group had many problems with it. I also found the performance, even over a high-speed LAN, crummy. I know there are snapshot views, but we found them problematic. ClearCase is probably well-suited to
    huge legacy systems supporting multiple concurrent
    releases, but it's expensive (I hear > 100,000 per year for my company) and very difficult to administer (probably need a person who does nothing else). Distributed development over many cities seems unlikely.

    SourceSafe is easy to use and better than most Microsoft products (of course, they bought it rather than develop it in-house), and even supports distributed development through an add-on
    called Source OffSite. But it's not cross platform, can't be administered remotely and is primarily GUI-driven (although I hear some things can be done from the command line). The biggest complaints, which I haven't seen myself yet, are that it doesn't scale well, nor does it properly support multiple branches well -- which ClearCase does.

    CVS has been an absolute pleasure, and I administer it myself from 600 miles away where it is hosted on an old Pentium 200 running Linux. The online chapters of the CVS book have been extremely helpful. Even a newcomer like myself has been able to set it up. Plus, with the wonderful web front-end, CVSweb, as well as TkCVS, it's as easy to use on the client side as SourceSafe. I can't speak to the scalability or branching management personally (although large projects that use CVS do), I find it offers the best of both worlds -- configurability and ease-of-use.
  • There is! OpenAvenue, which hosts and sponsors CVS at http://www.cvshome.org, offers CVS hosting as well. Free for public OSS projects.
    //jt
    -------------------
    Community Relations
    OpenAvenue, Inc.
    http://www.openave.net
  • You can find some useful information on using CVS on its new home, http://www.cvshome.org/CVS/support. This is mostly information from the original Cyclic and Sourcegear sites but cvshome.org is going under a massive redesign right now. Tell us what you want at the talkback forum and keep checking back for updates.
    //jt
    -------------------
    Community Relations
    OpenAvenue, Inc.
    http://openave.net
  • A couple posts mention that more than one person can not work on a file in VSS... that is not true. Run VSS administrator and look under options. And if there are conflicts because of multiple checkouts, VSS pops up a nice merge tool instead of dumping characters out to your local copy.
  • You don't get hung up on the the word 'open source' and instead use 'distributed development', and avoid getting hung up on your love of VB, you'll find that CVS solves most of the problems that other version control systems can't touch. CVS is not idiot-proof, and is prone to pilot error. It needs to have some solid project management to avoid serious problems. But you know what, if you don't have decent development management, you have bigger problems that your source control solution. Here is why CVS is great: it's small, lightweight, works extremely esily with developers writing on multiple platforms, is amazingly easy to maintain when compared to the extremely cumbersome and slow solutions of other systems. Solutions like ClearCase and VSS require system configurations that take over major portions of both the server and clietn software, and make distributed computing nearly impossible. Have you ever tried setting up ClearCase to work for multiple offices in different states, and engineers who telecommute? It is nearly impossible. With CVS, you set up a repository, set up a pserver port, and blammo, any one that can get behind your firewall can access the source control sytem, from anywhere, with a very limited toolset. And build times are also trastically reduced. Try this sometime: do an export of your files in source control to a flat file system. I did. 20 minutes for about 10,000 odd files (java,xml templates, images and shell scripts) for CVS. About 4 hours for ClearCase. CVS is not the end-all be-all that many source control systems claim to be, but it also doesn't ahve a lot of the baggage that limit development flexibility those other systems have.
  • Yes, CVS will do this. It only does this when you are using reserved checkouts; but it is a configurable option like any other that you set up when you are outlining your development processes.
  • "Easy" is a relative term. Anything is "easy" if you already know how to do it, and if you want to reduce the number of keystrokes involved you can write a script. In general, you just copy the file to the new target name, then do a cvs add of the new file, then rm the old file & do a cvs remove on it. Finally, a cvs commit and you're done. I agree it's not as easy as it could be, but it's not something that requires frobbing the CVSROOT control files directly.
  • How about BitKeeper [bitkeeper.com]. I've never used it, but it looks pretty nice. I've been meaning to try it out. It's been in beta for a while. It has lots of GUI tools and support for 'Lines of Development' (LOD). It aims to be the version control system for the Linux kernel. A lofty goal indeed.

    The licensing is a bit wacky, as it's not exactly free.

  • by KainX ( 13349 )
    Have you ever actually tried controlling air traffic? There's no comparison between ATC and CVS, other than perhaps that they are both TLA's.

    With open source development, you can always take a break. If you turn your eyes away from your code to check the latest news on Slashdot, nobody dies.

    But air traffic control...dammit, man, those planes! They just keep coming and coming! Make them stop!
  • by Tim Pierce ( 19033 ) on Thursday June 15, 2000 @09:46AM (#1000259)
    First, there's a pretty grievous error in the inetd config line he gives which makes the server not run. I can't remember the entire line but remove the duplicate 'cvs' text.

    That's interesting. What operating system are you running?

    Here's the line that I think you're talking about:

    cvspserver stream tcp nowait root /usr/local/bin/cvs cvs \
    --allow-root=/usr/local/newrepos pserver


    The inetd implementations I'm familiar with would require both "/usr/local/bin/cvs" and "cvs" in that line. The first tells inetd where to find the binary, and the second is the first argument in the command-line invocation. If there are inetds floating around which choke on that line, you should definitely report it as a documentation bug.

    Second, although I know it doesn't fit in with the theme of the book, there isn't much in the way of setting up CVS for commercial use. In my case, I want to have CVS controlling both some OS and commercial code. Setting up SSH access, multiple CVS servers, access control, etc are not covered very well, if at all.

    I will venture a guess that Karl didn't cover those topics because he didn't think it necessary. :-) Setting up SSH access is trivial -- as long as someone has a shell account on the CVS server, they should be able to run "cvs -d myuserid@cvshost:/path/to/repository" to access the remote repository. It did not even occur to me that this needed to be documented.

    If I were setting up a CVS server with projects that needed different levels of access control, I would probably put them into completely different repositories. Put your free code into /path/to/open and your closed code into /path/to/closed. Take away world-read permission and put them under ownership by different groups. Then, in order to view the closed repository, you must be in the closed user group. But you raise a good point that this would be a useful cookbook-style example.

    Disclaimer: I was one of the technical reviewers for the book and so am not objective about its quality. :-)
  • Maybe somebody can explain this to me. I want to get a "non-working" copy of a module. I can do 'cvs export Module'. But if I later want to update my local copy and there are changes in CVS, I get problems and it refuses to do so. I can do 'cvs co Module; cvs release Module' and cvs update works fine.

    And then what if I only want to check out a single file, work on it in the "non-working" directory, and then check it back in. Does CVS force upon you to work with modules by checking out the entire thing?

  • The problem with this method is that you lose the capability to merge changes made by another developer while you relocated it. All his changes end up in the Attic.
  • there isn't much in the way of setting up CVS for commercial use [...] I was hoping this book would fill in those gaps but it just doesn't.

    *boggle*
    What part of Open Source Development with CVS did you not understand? Why would anyone expect this book to cover commercial software?

    "Hey, this book is titled Tips for Baking Chocolate-Chip Cookies, so I'll purchase it because I'm hoping it will also cover meatloaf."

  • I've been trying to get at the online version for 3 days now, and the only link that wasn't broken was the CVS access to it. I have actually been compiling tetex just so I could look at the damn thing, and then suddenly when it's mentioned on Slashdot, the links are back in working order.

    Gaaaah!

    :)

    :wq!

  • The problem is that many, many people don't get that. Your comment assumes a knowledge of the concept of best practices. Didn't you ever work with anyone who thinks CVS, et al, are backup systems? Consider yourself fortunate. As an aside, version control is also a cornerstone of a concurrent project model as well as a general product model.
  • by sbeitzel ( 33479 ) on Thursday June 15, 2000 @10:58AM (#1000268) Homepage Journal
    in VSS you have to lock the file before you can can change it

    Not necessarily true. When the administrator sets up a VSS database (repository) s/he can enable multiple checkouts, so multiple developers can have concurrent modify access. When this happens then the conflict resolution is the same as in CVS: the second and subsequent checkins have to do a diff to resolve the possiblity of conflicts. The builtin diff tool is pretty cool, but it doesn't let you make decisions in situ. Still, I worked at a shop where there were 5 developers working on the same codebase and the automatic merging worked very well for us. Note that this works fine for things like C, where local changes tend to be locally scoped, but it is lousy for things like HTML or PostScript where local changes tend to have global scope.
  • Quoth an Anonymous Coward:
    ya, you know at MS they don't even use VSS for there major projects.


    Win2k, Office, etc... no VSS. they don't use CVS either. it's something else, i forget.
    I don't *think* I'm violating any confidentiality agreements by saying this (but don't tell anyone, huh?):

    Microsoft at least used to use an internally developed tool called "SLM" ("shared library management", maybe?). It was command-line oriented, and as I remember it, it did file locking by default (when you have a file "checked out", no one else can until you do a "check in").

    Anyway, Source Safe didn't exist when they started using SLM, and I wouldn't be suprised if the developers just never felt like switching version control software just to be dogfood-compliant.

    (A better question might be, if SLM is so useful, why didn't they ever ship it as a product? My experience with it was that it was kind of balky to use, but I later realized that all source control systems are -- certainly including CVS.)

    But then my only experience with using Source Safe was that the guy administering it couldn't figure out how to give someone permission to check something out. It was a little *too* safe... things would go in, but never come out again. (We went back to using CVS.)

  • I agree. [tigris.org]

    Brian


  • I know perfectly well what CVS is for. I use it daily. You are responding to the wrong parts of my message (because you feel cool doing so, or something).

    Let me try again. Read carefully. The book is not about "how to use CVS". It is not about "how to apply CVS to whatever you work on". It is not the CVS manual. It is not, repeat NOT, addressing general development issues like CVS does. CVS != this book.

    The book is specifically targeted towards open source development. The first poster's complaint was that the book -- NOT CVS, JUST THE BOOK -- didn't treat proprietary stuff. My point is that the book -- NOT CVS, JUST THE BOOK -- made no claim of treating proprietary topics.

  • > The so-called "release it early, release it often" model of open source development is quite simply a load of nonsense

    So, what release model do you use for your OSS project, and what are the pros/cons of using your model vs the RO2 model?

    --
  • If you see the CVS page for Slash code [sourceforge.net], you see I have a hell of a lot of commits there, and I have done almost all of it with maccvs. Cross platform, indeed. :-)

"Here's something to think about: How come you never see a headline like `Psychic Wins Lottery.'" -- Comedian Jay Leno

Working...