Beta

Slashdot: News for Nerds

×

Welcome to the Slashdot Beta site -- learn more here. Use the link in the footer or click here to return to the Classic version of Slashdot.

Thank you!

Before you choose to head back to the Classic look of the site, we'd appreciate it if you share your thoughts on the Beta; your feedback is what drives our ongoing development.

Beta is different and we value you taking the time to try it out. Please take a look at the changes we've made in Beta and  learn more about it. Thanks for reading, and for making the site better!

Pragmatic Version Control Using CVS

timothy posted more than 9 years ago | from the means-ends-analysis dept.

Programming 181

jarich (Jared Richardson) writes "Many people will remember Andy Hunt and Dave Thomas's The Pragmatic Programmer (Slashdot review) as one of the better books on real-world best practices. It was a watershed book for many developers. However, The Pragmatic Programmer assumed a certain level of familiarity with some of the basic tools of the trade. For many readers, this simply wasn't a valid assumption, so Andy and Dave have started on a set of prequels to PragProg, called Starter Kits." Richardson reviews below that series' introduction to the Concurrent Versioning System, better known as CVS.

What's the approach?

The philosophy of this series is summed up on the Starter Kit website:

Software development is difficult enough; if you try to build on a shaky foundation it can make development almost impossible (which might account for the fact that about 50% of all software projects fail). You need a firm foundation: The Pragmatic Starter Kit is a set of basic, common-sense practices applicable in all software development environments. The techniques given in these three books are not expensive to implement and are not hard to learn, but can make the difference between being a success and being a statistic.

The first book in the series covers the what, why and how of software versioning, using CVS for the examples. It walks you through installing CVS clients, setting up your server, and using basic commands, then teaches advanced concepts. It is the new CVS handbook that can be used by both beginners and veterans.

Target Audience

This book, like The Pragmatic Programmer, should have very broad appeal. It should be required reading for any junior developers or CVS administrators, and it should be a bookshelf reference book for mid-level to senior developers. It is slanted heavily towards CVS, but given that CVS is free and widely used, that shouldn't prevent anyone from using the book to learn the concepts, even if their company uses another versioning system for production work.

What's to like?

As is usual for Thomas and Hunt's books, this one is a very easy read. The concepts are clearly laid out, with plenty of working examples throughout. There is a good coverage of the fundamentals as well as very advanced topics. Unlike most CVS books or tutorials, this text is clear and straightforward. It's easy to understand and follow. It's got the best coverage of CVS branching and merging that I've ever read!

What's to hate?

Honestly, there is not a lot here that I don't like. The introductory chapters are little too basic, but since the book is (partly) aimed at beginners, that's okay.

Why bother reading this book?

I've been using CVS for over six years now (including being the CVS admin at two companies) and this book covered a few very useful advanced topics that I had never even heard of. An example of this is the use of vendor tags (Chapter 10). Using this feature, you can have a local copy of your favorite open source project in your company's CVS server and make changes to it. You can then merge your local project with the new releases of the public project, and CVS will handle merging your changes with the public baseline. This feature is incredibly useful, but I didn't even know it existed until I read this book.

This book is a great introduction if you've never used a versioning system. By the time you've finished the book, you'll have installed CVS (client and server), created projects, created new files, merged changes, etc. If you already use versioning software, it can remind you about the features you've forgotten about (or never knew existed). This book is a great introduction and a great refresher too.

Where to buy?

Not so long ago in another Slashdot article, Andy and Dave suggested that in order to compete in the new global economy, we should all diversify our skill sets. To that end, this book is published under their new publishing company, The Pragmatic Bookshelf. You can buy copies from the Pragmatic Programmer's web site in both dead tree ($29.95) and PDF ($20.00) formats.

Summary

As we have come to expect from Andy and Dave, this is another great book. The technical content is rich and clear but it won't put you to sleep. It has appeal to both newbies and veteran developers. I give it '10 out of 10 slashes.'


Richardson met Hunt while he and Thomas were finishing up The Pragmatic Programmer and has reviewed each book that they have written since -- he makes no bones about liking their work.

cancel ×

181 comments

wahh? (-1, Offtopic)

Anonymous Coward | more than 9 years ago | (#7836499)

h to the regmjoi4mg40k0k0vowmv....foefm33mf3wmfwpf090404040 40400404

Re:wahh? (-1, Offtopic)

Anonymous Coward | more than 9 years ago | (#7836542)

i hate you

-hb

for TEh CLiT (-1)

handybundler (232934) | more than 9 years ago | (#7836505)

. trooolkoore . GNAA . not for

Re:for TEh CLiT (-1, Troll)

Anonymous Coward | more than 9 years ago | (#7837033)

yuo failed it(TM)

thank you for being my friend slashdot (-1, Offtopic)

Anonymous Coward | more than 9 years ago | (#7836509)

first poo

I am a troll, under the bridge! (-1, Offtopic)

Anonymous Coward | more than 9 years ago | (#7836532)

That's me!

more reviews (4, Informative)

Anonymous Coward | more than 9 years ago | (#7836534)

This site [verygeekybooks.com] has more reviews for this book.

well that's just fascinating (-1)

Anonymous Coward | more than 9 years ago | (#7836565)

how much money are you pulling in sitting around refreshing books.slashdot.org all day?

Re:well that's just fascinating (0)

Anonymous Coward | more than 9 years ago | (#7836692)

Judging by his piss-poor auction site and other spam-based referral farms, I'd say "certainly not enough".

Goatse link, mod down. (-1)

Anonymous Coward | more than 9 years ago | (#7836723)

Disgusting.

LIAR LIAR - It's a good link (-1)

Anonymous Coward | more than 9 years ago | (#7836751)

Pants on fire...

WARNING: SITE CONTAINS COMIC SANS! (-1)

Anonymous Coward | more than 9 years ago | (#7836811)

The site linked to uses the Comic Sans font. please mod down [bancomicsans.com] .

no it doesnt (-1, Offtopic)

Anonymous Coward | more than 9 years ago | (#7836848)

What the hell are you talking about? The only font in the page is Arial.

LIAR (-1, Troll)

Anonymous Coward | more than 9 years ago | (#7837008)

OPEN YOUR DAMNED EYES [208.176.108.155]

Re:LIAR (-1, Offtopic)

Anonymous Coward | more than 9 years ago | (#7837029)

That's an image, not a font.

Re:LIAR (-1, Offtopic)

Anonymous Coward | more than 9 years ago | (#7837169)

Even worse, making a 9K image out of three words of Comic font...

YOU HAVE WAY TOO MUCH FREE TIME (-1, Offtopic)

Anonymous Coward | more than 9 years ago | (#7837473)

Wanker.

This one's for Cowboi Neal (-1)

RecipeTroll (572375) | more than 9 years ago | (#7836538)

HAM TRIANGLES WITH POPPY AND SESAME SEEDS

Active time: 45 min Start to finish: 45 min
1/4 lb thinly sliced baked ham such as Black Forest, finely chopped
2 tablespoons mayonnaise
1 1/2 tablespoons bottled mango chutney such as Major Grey's, finely chopped
1 1/2 tablespoons coarse-grained mustard
1/2 cup sesame seeds, toasted
1/2 cup poppy seeds
16 slices firm whole-wheat bread
1/2 stick (1/4 cup) unsalted butter, softened

Stir together ham, mayonnaise, chutney, mustard, and salt to taste.

Put sesame and poppy seeds in 2 separate shallow bowls.

Divide bread into 4 stacks. Trim stacks into 2 1/2-inch squares with a serrated knife, discarding crusts. Put 8 bread squares on a work surface in 1 layer, then divide ham mayonnaise among them, spreading evenly to edges. Top each with a plain bread square.

Diagonally halve each sandwich with serrated knife. Spread a thin layer of butter on cut edges of both short sides of 1 triangle, then dip 1 buttered side in sesame seeds and the other in poppy seeds. Put, unseeded side down, on a platter, then coat remaining sandwiches in same manner.

Cooks' note:
Sandwiches may be made 6 hours ahead and chilled, covered with dampened paper towels and plastic wrap.

Makes 16 finger sandwiches.

What about (-1, Redundant)

gotpaint32 (728082) | more than 9 years ago | (#7836549)

Rite Aid or Genovese? maybe a Duane Reed....

Which book was a watershed event? (4, Insightful)

pcraven (191172) | more than 9 years ago | (#7836556)

For me, I thought Code Complete [amazon.com] was the book for learning good coding.

On another note, does anyone else want to scream every time someone says 'best practice'?

Re:Which book was a watershed event? (2, Informative)

jbaltz (219494) | more than 9 years ago | (#7836839)

Oh. My. Dog.
You recommended a book by a MICROSOFT EMPLOYEE? Heresy!
(HHOS.)

Actually, McConnell has a whole slew of good books out, Code Complete being only one of them. He even has a book on rapid development [amazon.com] , that is also mighty good.

Code Complete (1)

mbadolato (105588) | more than 9 years ago | (#7837009)

I concur with this. I highly recommend Code Complete for developers of all experience levels. It provides a nice basis for best practices, with explanations as to why the recommendations are made etc. Very useful information in there! I've had countless coworkers and developer acquaintances read it.

Re:Which book was a watershed event? (1)

An Onerous Coward (222037) | more than 9 years ago | (#7837098)

I just finished reading it last week. You would think that a ten to twelve year old book would seem crusty and outdated, but it's by far the most relevant book I've read in the last couple of years.

Actually, there were a few points where it seemed like he really should have thrown in some discussion of Java, and I slapped myself when I remembered that it predates the language.

"Best practices" isn't too bad a concept, though it tends to get abused a lot. "Best of breed" is the phrase that really makes my knuckles itch.

Re:Which book was a watershed event? (0)

Anonymous Coward | more than 9 years ago | (#7837266)

does anyone else want to scream every time someone says 'best practice'?

100% of programmers fail to use best practice for everything they do.

Aproximately 100% fail to use best practice for most of what they do.

That's why programming is still not engineering.

Sorry (-1)

Anonymous Coward | more than 9 years ago | (#7836564)

I prefer Dogmatic Version Control.

Re: Sorry (-1)

Anonymous Coward | more than 9 years ago | (#7836625)

Is that the GNU book?

GNU Arch is better than CVS (2, Informative)

Anonymous Coward | more than 9 years ago | (#7836624)

Time to bury CVS, not to praise it.

Check out Arch. [gnu.org]

Re:GNU Arch is better than CVS (1)

GoofyBoy (44399) | more than 9 years ago | (#7836819)

I wonder what source control they are using. :)

YOUR MOM! (-1)

Anonymous Coward | more than 9 years ago | (#7836905)

Re:GNU Arch is better than CVS (2, Interesting)

stefanlasiewski (63134) | more than 9 years ago | (#7836924)

Really? Could you please provide some reasons why Arch is better then CVS instead of just pasting a link?

Are the authors of the book praising CVS? Or are they just using it as an example "given that CVS is free and widely used"?

How the heck did this get a +4 Informative?

Wait for IDE support, please... (4, Insightful)

Anonymous Coward | more than 9 years ago | (#7836929)

I'm using Netbeans on Linux. The other developers are using JBuilder on Windows. I can set up a CVS server and everyone is happy. Arch won't do that yet (righ?).

I can't really dump CVS until there is support for the major IDEs (Including EMACS!).

Interestingly, Subversion support for Eclipse and Netbeans is available.

-- ac at work

Re:GNU Arch is better than CVS (1)

sfraggle (212671) | more than 9 years ago | (#7837003)

I've tried to read the Arch manual three times now and given up every time. Maybe its better for large projects, I dont know. The website and everything about just gave me this unprofessional, unfinished feel to it.


Subversion [tigris.org] looks a lot nicer than Arch. svn just tries to be a "better cvs" and fixes a load of the nasty things about CVS. Its a lot faster too, and theres a plugin which lets you use it in Eclipse. Plus it has some pretty cool features like the apache plugin which lets you check out over http.

Re:GNU Arch is better than CVS (-1, Troll)

Anonymous Coward | more than 9 years ago | (#7837201)

Repeat after me: Programming is not Eclipse.
You people are the problem with the software industry - you know-nothing hacks.

Re:GNU Arch is better than CVS (-1, Flamebait)

Anonymous Coward | more than 9 years ago | (#7837414)

The website and everything about just gave me this unprofessional, unfinished feel to it.

Why don't you download the code and compare that rather than the websites? Not every programmer has the time to maintain a high quality website with lots of graphics and cool GUI hacks while simultaneously managing multiple projects (hackerlab, arch, pika, package-framework) with little stable income to support themselves.

Perforce (0, Troll)

mr_pins (694549) | more than 9 years ago | (#7836627)

Perforce is the only version control software worth talking about. CVS just doesn't have the features or the robustness to be really useful. I wish CVS would go away, in favor of perforce, or better yet, an OSS equivalent. What's happening with subversion? Is it useable yet?

Re:Perforce (4, Informative)

N7DR (536428) | more than 9 years ago | (#7836724)

What's happening with subversion? Is it useable yet?

Yep. I started using it about a month ago. Within three days I was so enamoured of it that I switched all my projects to it. Anyone who has used CVS should be able to switch almost without retraining. And the best thing of all is that the documentation (a downloadable book) is thorough, well-written, up-to-date, and full of useful examples. This project should win some sort of prize; it deserves it.

Subversion stability? (1, Interesting)

Anonymous Coward | more than 9 years ago | (#7836860)

Subversion still seems to have a few serious issues including rename is not atomic.

Also, CVS, Subversion and Arch all require unique UNIX user accounts to access their repository - this sucks from an administrative and security point of view. I just want contributers to read from and commit to the repo - not have UNIX access of any kind. Is there a free RCS that just runs as a server and does not require monkeying around with the box's /etc/passwd file?

Re:Subversion stability? (1)

rbolkey (74093) | more than 9 years ago | (#7836988)

Subversion doesn't require unique UNIX user accounts if you handle access through Apache, which is pretty sweet by the way.

Re:Subversion stability? (1)

mbadolato (105588) | more than 9 years ago | (#7837036)

Subversion still seems to have a few serious issues including rename is not atomic

Of course, subversion isn't even at beta yet. They're making very nice progress with it though, and it will rock when it's finally ready.

Re:Subversion stability? (1)

jrumney (197329) | more than 9 years ago | (#7837467)

Learn to use PAM.

Re:Perforce (1)

cthrall (19889) | more than 9 years ago | (#7836776)

Second that...Perforce is great. Used Visual Source Safe (now with more repository corruption!), MKS (sweet jebus), StarTeam, CVS and Perforce...Perforce is the best out of those. Very simple but powerful command-line syntax. Good Windows client and VC++ integration. Works the way you would expect it to.

Re:Perforce (0)

Anonymous Coward | more than 9 years ago | (#7837629)

Around these parts, we call it Visual Sorta Safe.

Re:Perforce (0)

Anonymous Coward | more than 9 years ago | (#7836799)

I use Perfarce every day and it is a total piece of shit, period. You wanna kill something? Kill Perfarce.

Re:Perforce (0)

mr_pins (694549) | more than 9 years ago | (#7836925)

Tell me, do you use the GUI or the command line client? Just an innocent question.

Re:Perforce (0)

Anonymous Coward | more than 9 years ago | (#7837106)

GUI :(.

Re:Perforce (0)

mr_pins (694549) | more than 9 years ago | (#7837125)

Ah.

Re:Perforce (1)

ChrisKnight (16039) | more than 9 years ago | (#7836804)

I love the functionality of Perforce. I've used it at several jobs.

I hate the price, and their weird-ass pricing scheme. For a quick case of sticker-shock, just go to http://www.perforce.com/perforce/price.html

-Chris

Subversion compares favorably to Perforce (0)

Anonymous Coward | more than 9 years ago | (#7837046)

... even when you don't include price as a factor. There are a lot of favorable comments on the svn mailing lists from former Perforce users.

Hooray, Subversion! It's approaching 1.0 !! (0)

Anonymous Coward | more than 9 years ago | (#7837022)

Please consider subversion. It rocks, and the project is managed in a professional manner.

Re:Perforce (2, Informative)

RicochetRita (581914) | more than 9 years ago | (#7837250)

When our dev team outgrew CVS, we evaluated about 20 CSM products, including Perforce, Telelogic/Continuus CM, CCC Harvest, StarTeam, BitKeeper, All Change, and ClearCase (we actually managed to get Telelogic & the Rational guys to come down for a *free* live demos). We found that they all fall into one of three pricing tiers:

I. Free or nearly free--includes: CVS & SubVersion.

II. Under $1000 per seat--includes: AccuRev & Continuus CM.

III. More $$$ than you can possibly imagine--includes: ClearCase & StarTeam.

To cut it short, we eventually went with AccuRev [accurev.com] , due mostly to environmental and budgeting restrictions. It's an unobtrusive, often maddingly slow, Java-based product, which happily fits most of our needs.

There's a huge field of versioning products out there, most of which can only be found on poorly documented company websites, many without demo's. And each of them promises to be the last word in SCM, but with little to no comparison between vendors. (Oh sure, product FooSCM includes LifeCycle Management, but the definition & amount of "Lifecycle" varies greatly from one product to the next!)

Caveat emptor!

Re:Perforce (0)

Anonymous Coward | more than 9 years ago | (#7837532)

Didn't go with Continuus?

We used Continuus the last place I worked. It was very powerful, but had a huge learning curve and a not so good UI. Some of the features were great like the directory versioning, but if you didn't do everything just right, you paid dearly.

I use perforce now and life is better.

Another writeup (-1, Troll)

the man with the pla (710711) | more than 9 years ago | (#7836630)

There's another review of this book over at tubgirl tech archive [tubgirl.com]

Re:Another writeup (-1, Offtopic)

mr_pins (694549) | more than 9 years ago | (#7836662)

Do NOT click on that link! You bastard.

hahahah offtopic (-1)

Anonymous Coward | more than 9 years ago | (#7836739)

0wned

--the troll

Tired of slashdot's moderation? (-1, Offtopic)

Anonymous Coward | more than 9 years ago | (#7836788)

Join the jihad. Join anti-slash [anti-slash.org]

what i hate about cvs (4, Insightful)

Frymaster (171343) | more than 9 years ago | (#7836635)

look at this:

cvs checkout -r mytag repository

cvs log -rmytag -d 'yyy-mm-dd'

two -r switches but... the first one has a space before the tag, the second one doesn't. when you look at the cederquist doco online the html really doesn't make this clear.

if this book addresses this one quirk it's worth a hundred bucks.

Re:what i hate about cvs (0)

Anonymous Coward | more than 9 years ago | (#7837166)

The worst thing about CVS, imo, is a particular individual on the cvs mailing list. His name is Greg Woods, and the guy is a total jackass. Mailing lists for software are typically great ways to increase your power, and the CVS mailing list is no exception: there are many helpful people on the list. However, this one guy, Greg Woods, is such an asshat that it almost makes you want to quit using CVS altogether. He's always yammering on from his soapbox, berating people who are trying to use CVS in flexible ways, resisting any change or improvement in the way CVS works or can be used, and if you haven't seen him use the "if all you have is a hammer" pearl of wisdom 100 times, you haven't been reading the list very long. The good news is he seems to have cut back his postings, probably because so many people have told him he's a stuffy counterproductive twit.

I like CVS, but Greg Woods make me want to use another tool. HTH.

But does it have a GUI (3, Funny)

Anonymous Coward | more than 9 years ago | (#7836643)

Unless the source control software has a complicated GUI from which you can cut and paste stuff into powerpoint, and makes checking in a file, a longer process than software development, our bosses won't go for it

CVS good, ClearCase bad (5, Interesting)

pcraven (191172) | more than 9 years ago | (#7836681)

CVS is great for version control. Don't get tempted by Rational's ClearCase product.

A full build of a sample project with CVS takes me 30 seconds. CC takes 7 min, 30 sec.

CVS doesn't need multi-site repositories, clearcase does if you have a lot of remote development.

CVS doesn't integrate with the kernel, so if CVS crashes it doesn't take your whole machine.

CVS has better add-on GUI tools for branching and comparison.

It is easy to create and apply patch files with CVS, something not easy to do with CC.

With CC, when you check out a file, you can't actually write to it. You have to loop and keep checking for the file to be 'writable' after check out. Even then, sometimes when CC marks the file as writable, it really isn't.

A batch update in CVS is easy, with CC you have to check out individual files. I have a script for this. A batch update takes about 20 minutes compaired to 45 seconds in CVS.

CVS is free.

CVS doesn't require as much training or support time as ClearCase.

ClearCase does have excellent command-line tools. It also has a lot more features. But you can probably live without them.

Re:CVS good, ClearCase bad (-1)

Anonymous Coward | more than 9 years ago | (#7836710)

Try telling that to my bosses. We were just forced to migrate to Clearcase and it sucks ass

Re:CVS good, ClearCase bad (3, Funny)

pcraven (191172) | more than 9 years ago | (#7836772)

No kidding.

I forgot to mention where ClearCase is much better than CVS though, and that is Sales People. No CVS people will take you golfing.

Re:CVS good, ClearCase bad (0)

Anonymous Coward | more than 9 years ago | (#7836729)

Well the answer is clearly not to use ClearCase, but I wouldn't advocate using CVS instead!

Re:CVS good, ClearCase bad (1)

pcraven (191172) | more than 9 years ago | (#7836826)

What would be better? I like this rant on Subversion [jroller.com] . Most of the other version control systems don't have a lot of 3rd party support. I like WinCVS, tortoise, Eclipse intergration, ant, etc.

Re:CVS good, ClearCase bad (0)

Anonymous Coward | more than 9 years ago | (#7837001)

What would be better?

For small repositories, Arch. For anything else, Perforce.

Hell I'd rather use Visual SourceSafe than CVS for a large repository.

Re:CVS good, ClearCase bad (0)

Anonymous Coward | more than 9 years ago | (#7836738)

I'm guessing you don't work for IBM?

I used ClearCase for a number of years, but I actually prefer CVS now. CVS fits the distributed internet development model much better than CC. The free part is just a bonus.

Re:CVS good, ClearCase bad (1)

Brahmastra (685988) | more than 9 years ago | (#7836758)

Seems like a lot of the clearcase features seem to be targetted towards extremely large projects involving 100s of people in a controlled environment (such as a corporationa as opposed to open source development). Using Clearcase in smaller projects involving fewer people seems way more trouble than it is worth. Clearcase sucks ass at least for such projects.

Re:CVS good, ClearCase bad (1)

jrumney (197329) | more than 9 years ago | (#7837311)

If you're using Clearcase, you need a specialized admin for it. This puts it in the large organization category. Maybe you could get away with installing it without knowing much about it, and just using its basic check-in/check-out features, but then you might as well save the money and use RCS. CVS is a lot easier for the average developer to just pick up and run with, and learn about as they go. 90% of projects do not use what CVS has to offer (scripting to check commits and log messages, vendor branches etc), so all the posts complaining about CVS lacking features compared with other newer version control systems are moot.

Re:CVS good, ClearCase bad (2, Interesting)

Fnkmaster (89084) | more than 9 years ago | (#7836815)

CVS is good. But not great. Subversion [tigris.org] has the potential to be great - atomic commits, versioning of directories, moving files easily, cheap branching. All those things that ever made you want to smack your computer upside the head when you were using CVS because they were so obviously the WRONG way to do version control.


Unfortunately, subversion seems to be always _almost_ stable enough for real use. Maybe this has changed recently (I've just played with it, I still use CVS for real work). I haven't really checked out GNU Arch [gnu.org] - it seems to claim to support changesets (groups of changes), and thus I presume atomic commits, better/faster branching and merging and so on - the other good stuff that CVS is lacking. My guess is that Arch is even less mature than Subversion though, since it appears to have not been around as long.


Anyone else know of any other good alternatives that are more mature?

Re:CVS good, ClearCase bad (1)

Brahmastra (685988) | more than 9 years ago | (#7836854)

Anyone use Merant PVCS? Lacks some basic features but simple and quick.

Re:CVS good, ClearCase bad (1)

AKAImBatman (238306) | more than 9 years ago | (#7837293)

Anyone use Merant PVCS?

I HATE PVCS WITH A PASSION!

Does that answer your question?

To qualify that statement, PVCS does not help (in any way shape or form) in helping you track files that have changed. Instead, you have to spend your time carefully managing your locks or tracking your files in a text file. The former is not a good method, as invariably, someone else needs the same file. Even worse, is that when you do get your lock back, PVCS will not ask about merging, it will simply f**k up the file for you. I lost a great deal of work before Merant fixed this little problem.

Worst of all though, is that file-locked methods don't scale to large projects. Every file collision costs your developers that much more lost time, and the larger the project, the more often those collisions occur.

3rd party support sucks too, since PVCS command line tools don't recognize many of the GUI's repository changes. (e.g. A reorg done by "linking" files to new places.)

IMHO, CVS just does everything better than PVCS.

Re:CVS good, ClearCase bad (4, Informative)

Anonymous Coward | more than 9 years ago | (#7836866)

Informative? Makea few bold assertions without proof or understanding and its informative?

I have supported development using CVS, SCCS, ClearCase, Kintana and BitKeeper. Each system has its advantages and disadvantages. For ClearCase, the biggest disadvantage is you have to read the manual.

"A full build of a sample project with CVS takes me 30 seconds. CC takes 7 min, 30 sec."

If I tune my mustand to run like crap, it will. Don't blame a tool if you haven't RTFM.

"CVS doesn't need multi-site repositories, clearcase does if you have a lot of remote development."

Bold assertion, care to provide even the slightest amount of example, or dare I say proof? How about a plan for using CVS across 500 developers in 8 sites, on 5 time zones. Ohh, and we are a worldwide company, so all developers need access to all code.

"CVS doesn't integrate with the kernel, so if CVS crashes it doesn't take your whole machine"

True. Thanks for providing context with a claim.

"CVS has better add-on GUI tools for branching and comparison."

Probably another RTFM. ClearCase has many powerful tools, but you have to learn how to use them. This in itself is a downfall as the quality of available software engineers continues to fall.

"It is easy to create and apply patch files with CVS, something not easy to do with CC."

Why? ....

"With CC, when you check out a file, you can't actually write to it. You have to loop and keep checking for the file to be 'writable' after check out. Even then, sometimes when CC marks the file as writable, it really isn't."

Your wrong, but I don't have time to cut an paste the manual over. You really should trying reading it sometime.

"A batch update in CVS is easy, with CC you have to check out individual files. I have a script for this. A batch update takes about 20 minutes compaired to 45 seconds in CVS."

I think your kinda sorta talking about a Snapshot view. Read the manual, pick up the nomenclature. It takes me 3 seconds to pick up all the changes in need in my dynamic....

"CVS is free."

True.

"CVS doesn't require as much training or support time as ClearCase."

I call bullshit. Its clear(har har) that you have never supported Software configuration management. CVS doesnt require training if all of you engineers already understand CVS. I expect the same to go for ClearCase...

"ClearCase does have excellent command-line tools. It also has a lot more features. But you can probably live without them. "

It has flexibility, which last time I looked increases strength. Learn what you need and ignore the rest.

Re:CVS good, ClearCase bad (0)

Anonymous Coward | more than 9 years ago | (#7837095)

You aren't a ClearCase developer, are you?

Re:CVS good, ClearCase bad (1, Interesting)

Anonymous Coward | more than 9 years ago | (#7837162)

All that may be true, but something about developing your own filesystem (kernel integration) just so you can back out of mistakes rubs me the wrong way. Why not integrate into pre-established file systems that already do snapshoting? Such as Network Appliance, which already does it better and faster. Any time you need to buy disk storage and a separate server to run a revision control system, you end up painting yourself into a corner.

MOD PARENT UP (-1)

Anonymous Coward | more than 9 years ago | (#7836890)

He speaks the truth, he isn't trolling.

Re:MOD PARENT UP --like I said in the other thread (0)

Anonymous Coward | more than 9 years ago | (#7837218)

He may in fact speak "some" truth, but something about developing your own filesystem (forced kernel integration) just so you can back out of mistakes rubs me the wrong way. Why not integrate into pre-established file systems that already do snapshoting? Such as Network Appliance, which already does it better and faster. Any time you need to buy disk storage and a separate server to run a revision control system, you end up painting yourself into a corner.

What does this have to do with Apple? (-1, Offtopic)

Anonymous Coward | more than 9 years ago | (#7836701)

Although I can run CVS on Mac OS X, it is not an Apple product and therefore sucks (no offence, this is just the definition of "sucks" versus "doesn't suck"). Think different. Think better. Think Apple.

CVS cons? (3, Interesting)

jason.hall (640247) | more than 9 years ago | (#7836722)

I've always found CVS to be more trouble than it's worth. I do small-time development with Mac OS X (previously Project Builder, now Xcode) and like the *idea* behind CVS. But the articles/tutorials I've read are either how to install (which I have) and just go over the commands, or they're geared toward the expert. I haven't found much info on conceptual/fundmental questions, like on integrating with IDEs, for instance "do I check the entire development tree into CVS, or just the text files?" If it's just the text files, that seems like a lot of work. "How do I put my web site HTML files into a repository and still have the web server still be able to access it?" Overview stuff like that.

My current way of version control is the old way of just zipping up each release!

Re:CVS cons? (1)

GoofyBoy (44399) | more than 9 years ago | (#7836778)


Source control really shines when you work with multiple people.

If you are working alone, then its worth it if you want to track down the date and exact changes you made.

Re:CVS cons? (2, Informative)

Violet Null (452694) | more than 9 years ago | (#7836982)

Last item first:

My current way of version control is the old way of just zipping up each release!

If it's just you working on this...well, that's fine. And it probably is the easiest. There's little-to-no reason to use CVS if it's just you.

But, otherwise:

I haven't found much info on conceptual/fundmental questions, like on integrating with IDEs

Depends on the IDE. Most plugins for Windows or *nix shell out to the command line CVS, and process its output. But, I'm not familiar with Mac IDEs at all.

"do I check the entire development tree into CVS, or just the text files?" If it's just the text files, that seems like a lot of work.

Typically, the entire tree, but, and here's a big con of CVS, you have to have a correct cvswrappers file, or manually tell it which files are text and which are binary.

I do the entire tree, myself.

"How do I put my web site HTML files into a repository and still have the web server still be able to access it?"

Assuming you have a CVS client on your web server, and it can access your CVS server, you put in a shortcut (or nightly job, or what have you) that does a checkout module, like so:

cvs co -R -d <target directory> <module name>

(You could use cvs export, but it doesn't seem to like overwriting files that already exist)

But, again, CVS use is only compelling if you have more than one person working on the project at the same time.

Re:CVS cons? (1)

great throwdini (118430) | more than 9 years ago | (#7837056)

But, again, CVS use is only compelling if you have more than one person working on the project at the same time.

Unless, as a programmer, one suffers from split and competing personalities. Always looking over your own shoulder, second-guessing the changes made to "your" own code...

Even for a single developer, and even in the context of webwork, cvs (or arch, subversion, etc.) is a relatively painless way to track modifications over time without heavy accumulation of redundancy (=unaltered clutter) with the periodic zip/tar+gz approach.

And if you're working on something that you may later open to other developers ... well, might as well get in the habit of using cvs (or arch, subversion, etc.) from the start.

Pros for single user version control (3, Insightful)

HopeOS (74340) | more than 9 years ago | (#7837459)

I develop dozens of projects concurrently. Keeping all the development details straight can be difficult, particular when reapproaching a project that has been untouched for several months. The ability to back out non-obvious design mistakes, start speculative development branches, and distribute projects across multiple machines, depending on where I am at any point in time has made single version control a necessity for me.

Starting a project in CVS is simple.

Create a directory. Maybe add a descriptive text file or two. Run cvs import from within the directory. You'll then need to do a checkout, and you're ready to begin adding makefiles, source code, autoconf delights/madness. For what it's worth, I always rename the original directory before the checkout in case CVS has a glitch. Older CVS balked at overwriting the files; maybe that's still the case.

The last reason that I use source control even for projects that I am the sole developer is that I have on occassion, deleted critical files by mistake, and had to reimplement entire classes/modules under duress. It's a rare event, but with source control, I'm less stressed over the possibility of screwing up.

-Hope

Re:CVS cons? (1, Insightful)

Anonymous Coward | more than 9 years ago | (#7837147)

I'm a full-time admin/developer for a commercial website and I began storing 10K+ lines of PHP scripts in CVS about 2 months ago. I have two words for you: BUILD SCRIPT.

My script accepts flags for checkout, update, or export. Use checkout for a fresh copy if you think you might make some edits that you'll want to commit. Use update to refresh an older checkout. Use export to publish pure code without CVS metadata (you won't be able to commit any edits later, though). The build script clears out (rm -rf) the build directory for checkout/export. The last step is to set the proper file permissions.

It's a very safe, content feeling you get when you know that your entire codebase can be wiped out (on the webserver) and at the push of a button you can rebuild it from a remote repository.

I was intimidated by CVS at first, but now I can't live/work/play without it.

Re:CVS cons? (1, Insightful)

Anonymous Coward | more than 9 years ago | (#7837379)

Until you've rescued an inexplicably broken build with a quick 'cvs diff' its hard to understand how useful cvs can be for lone developers.

a much easier way to accomplish all this (0)

Anonymous Coward | more than 9 years ago | (#7836728)

is using debian apt-get

Slow Starter (1)

Dr. Ransom (117560) | more than 9 years ago | (#7836759)

I'm crazy about Andy and Dave's Pragmatic Programmer and Programming Ruby books, so naturally I had this book as well as Pragmatic Unit Testing on my Christmas list.

As someone whose been desparately trying to get a grasp on some advanced CVS concepts lately, especially vendor tags and tracking of third party sources, I'm a little disappointed at the slow start the book gets off to; it feels just a bit belabored reading another introdution to the basics, but I'm glad to hear there's good stuff further on. Guess I'll get back to it.

svn (1, Informative)

XtAt (31970) | more than 9 years ago | (#7836779)

who uses cvs anymore? [tigris.org] *giggle*

By the way, backports.org has a wonderful woody backport of subversion.

slashes (3, Funny)

sfraggle (212671) | more than 9 years ago | (#7836781)

I give it '10 out of 10 slashes.'
Books are hard to read if you slash them to bits!

Shoehorning CVS to work with good dev practices... (5, Informative)

cduffy (652) | more than 9 years ago | (#7836891)

is a heckuvalot of work, and not something I'm really sure is worthwhile -- particularly with the variety of alternatives available.

Aegis, GNU Arch (my personal favorite), Subversion, BitKeeper... all of these work around CVS's worst failings. What's unfortunate is how few people have had their expectations of what a revision control system should do set far too low by CVS.

A few examples of features one should expect of a modern revision control system:
  • Easy branching - Branching and merging in CVS is a royal PITA, especially remerging branches which have had some changes mutually applied. CVS has a number of other design bugs related to branching -- for instance, files added on a branch suddenly show up on the HEAD when they shouldn't -- that need to be worked around, sometimes painfully.
  • Corruption-resistant repository formats - Because CVS rewrites the ,v files every time a change is made, a CVS server that crashes in the middle of an operation can cause data loss. (Not all of the alternatives are better -- a few years back, for instance, the BitKeeper installation at my workplace had a tendency to corrupt its repositories at well. BitKeeper, however, can at least detect corruption -- in the case of CVS, it's often never picked up on 'till one tries to check out a particular old version. Arch avoids the whole issue by never rewriting or removing files which have been added to the repository, as well as supporting md5sums and cryptographic signatures in the 1.2 branch to detect either low-level corruption or malicious tampering).
  • Changeset orientation - Actually checking in a set of related changes as one changeset, and attaching metadata (log entries and whatnot) to that complete set. This also makes CVS's "tagging" very cheap -- instead of needing to record the revision number of each file in the repository, only the changeset number of the repository need be tracked.
  • Intuiting revision control history - A number of tools such as cvsps and cscvs (the latter which I help maintain) will analyze a CVS repository's history and break it down into changesets. This information can be used for a global "who-did-what" or the repository as a whole (whereas in CVS one can only view history for an individual file without extra tools), for importing a CVS repository's history into a changeset-oriented revision control system (most of cscvs's users use it strictly for CVS->Arch conversions), and the like. With CVS, this is a time-consuming and error-prone operation; much of the information just isn't stored on the server at all, so the tool being used needs to try to figure it out. Merges are even worse -- there's no metadata whatsoever available in CVS to distinguish a merge from any other commit, which makes a nmuber of advanced merging algorithms impossible. A modern revision control system, on the other hand, stores all this information up-front; there's no need for the error-prone and tedious process of having some 3rd-party tool intuit it by looking at the revision control history for each individual file.
  • Automated testing - Having a test suite that automatically runs on every proposed commit is next to impossible to do accurately in CVS (as there's no good way to figure out which changes need to be grouped together into a test run), and CVS has no way to prevent a commit from happening until some external test has been run. Aegis, on the other hand, has this built in as core functionality, and Arch makes it trivial to script when using the available patch queue manager tool, tla-pqm.
  • Distributed operation - This isn't often a dealbreaker in commercial environments, but it's exceedingly useful doing Free Software development; indeed, Linus has said that he'll under no circumstances consider switching to a revision control system without it. A system with distributed repository support (such as Arch, or BitKeeper -- Aegis has rudimentry support, but it's error-prone, while Subversion has none at all) can allow 3rd parties to create independant branches hosted on their own servers without having write access to the main developer's branch. This is tremendously handy -- it means that if I want to add a new feature to $FOOPROG, I can just create my own branch of $FOOPROG hosted on my own server, and when I think it's ready I just email the $FOOPROG author and ask her to pull my changes. She runs a merge command, examines the resulting patch, perhaps runs some tests, and commits it if she thinks it's ready. If I make some more changes to my feature later, she can then pull only the changesets which happened since her last merge. This support makes working on projects with multiple levels of committers quite natural, and is otherwise an exceedingly valuable function.
  • Dumb server support - I don't know that anyone but Arch supports this one, but it's comes in very handy (once again) in Free Software environments. The core idea of "dumb server" support is that one doesn't need a dedicated Arch server (or even an Arch apache plugin) to host an Arch repository -- any space one can write to via direct filesystem access, WebDAV, sftp or plain ftp can be an Arch server. This means that one can host Arch repositories on pretty much any old webspace, and the folks providing that webspace don't need to do anything special to support it.

And so forth. People: Expect more of your revision control! Buying books on how to make CVS suck a little less is perpetuating a problem, rather than actually fixing it.

Re:Shoehorning CVS to work with good dev practices (2, Interesting)

BlueFall (141123) | more than 9 years ago | (#7837159)

Does Subversion really handle the repeated merge problem now? I have heard that Arch does do this and I don't really know about bitkeeper. I'd say that this is my personal biggest beef with CVS (aside from its ridiculously inefficient storage scheme).

Last time I checked, repeated merge was a post-1.0 issue, but for me, it's the only reason not to move to Subversion.

Re:Shoehorning CVS to work with good dev practices (2, Interesting)

cduffy (652) | more than 9 years ago | (#7837274)

Does Subversion really handle the repeated merge problem now?

Hmm -- I don't know for sure on Subversion; perhaps someone else here will comment. I'm positive that Arch does (it's what I use personally), and pretty sure that BitKeeper does.

Just curious -- any particular reason you're not considering Arch?

Re:Shoehorning CVS to work with good dev practices (3, Informative)

jrumney (197329) | more than 9 years ago | (#7837164)

Automated testing - Having a test suite that automatically runs on every proposed commit is next to impossible to do accurately in CVS (as there's no good way to figure out which changes need to be grouped together into a test run), and CVS has no way to prevent a commit from happening until some external test has been run.

Look up commitinfo in the CVS manual. It does both of these things.

Re:Shoehorning CVS to work with good dev practices (2)

cduffy (652) | more than 9 years ago | (#7837334)

I distinctly recall commitinfo not being useful for this in actual practice. It was a while ago, so I'm not sure why -- perhaps it was running on the client rather than the server? (Of course, what we *really* need is a 3rd machine set up as the canonical dev environment running the tests, neither the client nor the revision control server -- something which tla-pqm makes trivial).

I can ask the IT lead why that was, if you're really curious; his memory's better than mine.

How's about (1)

gregarican (694358) | more than 9 years ago | (#7836913)

Bitkeeper? I've seen a few good OSS projects use this and read some good things about it. Anyone, anyone? Bueller??

Please give me one example of... (0)

Anonymous Coward | more than 9 years ago | (#7836918)

...pragmatic versioning. I have no idea what's it's about. If it's another shortcut that makes programmers more productive at the expense of customers and implementers, I'm against it.

Online CVS reference (5, Informative)

jpkunst (612360) | more than 9 years ago | (#7836977)

Open Source Development with CVS [red-bean.com] by Karl Fogel is a great online CVS manual and reference. I use it all the time.

JP

Actually, CVS stands for... (0)

Anonymous Coward | more than 9 years ago | (#7837127)

Actually, CVS stands for "CVS Versioning System"

Silly CVS Uses (1)

DuckFOO (736584) | more than 9 years ago | (#7837135)

I've only met one person who used CVS and he used it to version control his mbox files! Obviously, CVS can be used on any text file but is it really useful for non-programmers?

Re:Silly CVS Uses (1)

random_static (604731) | more than 9 years ago | (#7837458)

version control's handy for controlling your configuration files. i've never tried CVS, but i make a point of RCS'ing my /etc directory.

Subversion - CVS is dead and burried within 2006. (0)

Anonymous Coward | more than 9 years ago | (#7837432)

I *do* like the pragmatic guys, but why on earth are they going introduce newbies to CVS when Subversion is out Q1 next year? It's like 100000 times better and simpler in EVERY respect...
Load More Comments
Slashdot Account

Need an Account?

Forgot your password?

Don't worry, we never post anything without your permission.

Submission Text Formatting Tips

We support a small subset of HTML, namely these tags:

  • b
  • i
  • p
  • br
  • a
  • ol
  • ul
  • li
  • dl
  • dt
  • dd
  • em
  • strong
  • tt
  • blockquote
  • div
  • quote
  • ecode

"ecode" can be used for code snippets, for example:

<ecode>    while(1) { do_something(); } </ecode>
Create a Slashdot Account

Loading...