Xserve colocation for MacSlash provided by   Digital Forest
MacSlash A Daily Dose of Mac News and Discussion
MacSlash
MacSlash
» FAQ
» Discussions
» Journals
» Messages
» Topics
» Authors

» Preferences
» Technorati Profile
» Older Stuff
» Past Polls
» Submit Story


Search MacSlash:
 







Listed on BlogShares

Team One Tickets

» Hannah Montana/Miley Cyrus at Houston Rodeo tickets
» Garth Brooks at Staples Center tickets
» Super Skins Party Tickets
» Penthouse Desire SuperParty Tickets
» National Finals Rodeo Tickets
» Cher Tickets Las Vegas
» Cirque du Soleil
» Las Vegas Hotels
» Houston Rodeo Tickets
» Using A Ticket Broker
» PBR Rodeo Tickets
» Joe Calzaghe vs Bernard Hopkins Tickets
» Oscar De La Hoya vs Floyd Mayweather Tickets
» De La Hoya Tickets
» Hanah Montana Tickets
» Joe Calzaghe Tickets
» Maxxis EnduroCross Tickets
» MAXIM Super Bowl Party
» How To Spot A Counterfeit Super Bowl Ticket


Shameless Plugs
» Mac Poker Site
» 2008 Democratic Primary Info


 
Source Control: Not Just For The Big Boys
posted by acaben on Friday April 11, @12:43PM
from the cvs-is-more-than-a-drugstore dept.
MacGeek MacSlash Security Correspondent Eric Seidel writes "Most developers have at least heard of version control, and many have even used CVS to pull down the latest and greatest copy of their favorite open source application, but so few small-application developers actually use version control for their own software. Many small-application develpers either know little about, or just choose not to use any kind of source code control. The purpose of this article is designed to combat both of those realities: first by spreading the word to those who don't know about SCM (Source Code Management) and second by encouraging those who do, to use it. I will give a simple discussion of version control, why it's useful, and even touch on the various products out there. The reader is then left to take what I offer here and (hopefully) make better software with that knowledge. " More Below.

The Problems of Development

In writing software, one can have a host of problems, especially when the project grows beyond the limits of a single person, or extends in time beyond a single revision. Three of problems which I will discuss here are:

  1. Dealing with multiple versions, allowing users, developers, to report bugs or changes against historical versions.
  2. Dealing with multiple developers, allows several coders to work on the same file at once, and have those changes all merged to one file.
  3. Tracing accountability -- once you have more than one person, you want to often know who did what? Or maybe even just when did you do that?

Version control can answer all of these (and many more) questions. Before I go into depth as to how, let me first talk a little about how version control works. To begin, I list some terminology:

SCM (Source Code Management)
Category of software including version control. I (and many others) will use SCM an "version control" interchangably even though SCM is arguably a broader term than version control.
RCS (Revision Control System)
The father of SCM. The first (at least first open source) SCM implementation.
CVS (Concurrent Versions System)
The poster child for version control. By far the most popular version control product.
Repository
The central storage location for files under version control. Described in much more detail below.
Workspace
Location of files “checked out” from a version control repository. Also described in detail below.

The general idea behind version control is to allow the developer a place to store her work as it progresses, while also allowing her instant recal of any work from any point in time. Version control extends also to a multi-developer situation, allowing others to recall from any point in time (including now), make changes, and have those changes merged with changes from other people, and other times.

Version control is accomplished via the use of two structures (both listed in our above terminology): workspaces, and repositories. Workspaces are where you are working, and repositories are where that work is archived or stored.

Repositories hold information including dates, labels, branches, version numbers, and it does so in a change-only format, only keeping track of the changes between individual revisions in order to save space. Repositories are often held on a central server and can be referred to also as depots or roots.

The Checkout/Commit Paradigm

Version control functions of a checkout/commit paradigm. All of your documents are stored, or archived, in a repository. You check-out copies of those documents, work on them in your workspace, and then commit the changes in the documents in your workspace back to the repository. Most version control products are quite flexable and will allow you to check out sets of files based on date, tag, branch or any number of other criteria.

Another common command in need of discussion is Update. Update commands are used for automatically bringing your workspace in sync with a repository. Update can also merge non-exclusive changes between files and can initiate conflict resolution. Updates, no matter how implmented, will always solicit information from the user as to how he/she wishes to resolve conflicts. Conflict resolution as part of the update command is one of the most useful aspects of version control.

A Little More About The Repository

Before you see a repository out in the wild, let me give you a little better picture of what you're seeing. Files are normally stored associated with some kind of internal versioning number. For CVS (a popular version control system) these internal numbers are of the form ... So files start with 1.1.1, or a branch 1.2.1

One piece of repositories which is very useful (but not often enough used) are branches. Branches, break one set of code from another. The way a tree branches off from the main trunk. Branching at release time is a very useful technique used commonly in large scale software development. This allows developers to continue development on the main tree, while allowing a subset of their staff to hone the branched code for release. Branching can also be useful for trying out experimental code, or patches to the code which may take an extended time to work through. Branches can later on be merged with other branches, or into the main trunk.

Another feature worth discussing is Tags. Tags are used to associate a group of files inside the repository. For example, one could apply a "Version 1.0" tag to all the files which were released with the 1.0 version of your app. Then later grab those exact files from the repository using the tag name "Version 1.0". (Branches actually work better for encapsulating releases, but this remains a convient example.)

More Advanced Version Control

The unix "diff" command is also available for all version control systems. For those not familiar with diff, diff produces for the user a line-by-line comparison of two text files, or of two file-system hierarchies. Diffing two file versions in CVS can be incredibly useful to the programmer for finding bugs, as it allows her to see exactly what was changed between any two commits, thus if she knows when the bug first appeared, she can diff those two revisions and know what set of changes must have caused the bug to surface.

All version control repositories also store some form of history information, and provide a "history" (CVS) command or equivalent. This command can be used for tracking what commands were issued against the repository when.

Annotation is another form of reporting which version control systems normally support. Using an annotate (sometimes blame) command one can get a line-by-line history of a file, when it was changed/created, and by whom. File annotation is also useful for tracking bugs and can be combined with reports from diff or history to give a better idea of the status and history of your code base.

Locking is one final feature of version control. Most SCM implmentations provide a method by which a programmer can "lock" files she is working on, thus disallowing anyone else to commit changes to that file before she is done. This can be a useful feature when working on files for which line-by-line differences are not entirely helpful (XML files, prose, etc), or when one is working on extremely sensitive parts of code. Another person can "watch" a file or set of files to be notified when locks are added or removed from a file (or when any other changes are made).

The Solution That is Version Control

Returning now to our discussion of solutions to common problems. Problems we had hoped to address:

  1. Dealing with multiple versions, allowing users, developers, to report bugs or changes against historical versions.
  2. Dealing with multiple developers, allows several coders to work on the same file at once, and have those changes all merged to one file.
  3. Tracing accountability -- once you have more than one person, you want to often know who did what? Or maybe even just when did you do that?

Following our disccusion above, the reader may already see solutions, but for clarity I will review:

For the first, the repository acts as a historical record of code as it was at any point. This solves the question of finding the exact code of a certain release version against with to compare bugs, comments or revisions received at a later date. The developer need only perform a checkout operation, requesting a specific date, tag, branch or internal cvs revision number as appropriate. As necessary the developer can make changes to the code, diagnose the bug, etc, and then merge those changes into the most current code (even years later -- as we all know, some bugs last that long). If you used branching, you can even make fixes to that specific release branch and release patches against your the version (version 1.0.1 etc).

For the second, a central repository model, can easily allow one repository, multiple workspaces. Under this model, each developer checks out their own (or multiple) copies of the source code in question. They make changes, and then using the merge and conflict resolution features of update as discussed above, merge their changes into the repository with a commit command.

Finally, accountability tracking can be done via any of the reporting methods discussed in the previous section. Many 3rd party tools exist, including Apache's Tinderbox and Bonsai for managing SCM repositories. Those can be used to help "blame" the right people for bugs. Tools such as CVSweb turn annotate files into dynamically linked webpages, useful for getting a mental handle on your repository.

A couple other solutions to problems not mentioned here, but still problems deserving mention, are those of web-site control, and preventing "getting lost in ones own code." Web-sites, particularly those edited by multiple people often use version control. Version control is a solution for more than just the developer, but also for the web artist, and the writer and has uses in many domains. The problem of "getting lost in ones own code" is also answered by version control. Commonly as individual projects get big, or extend over long periods of time it is easy to loose track of even code you wrote. Using an SCM system from the begining, can help to fight off this problem, as the developer then know when things were written, and hopefully has logs from each commit she made to help decide what each new piece of code did (even if she didn't comment her code!).

The Tools of the Trade

We've discussed problems facing developers, version control technology, and how version control can be an answer to some problems of development, but we have yet to mention the actual tools of version control. Below is a short discussion of a couple tools, including my biased opinions.

To begin, we have CVS. CVS is the most popular, and one of the oldest forms of Version Control. CVS started as a bunch of shell scripts written by Dick Grune, posted to the newsgroup comp.sources.unix in December, 1986. Much of the current CVS conflict resolution algorithms are derived from those scripts. In April, 1989, Brian Berliner designed and coded CVS in C. Jeff Polk later helped Brian with the design of the CVS module and vendor branch support. CVS has since grown to be the de facto standard for version control, despite a raft of design problems. CVS is open source and is maintained by developers at http://www.cvshome.org/. CVS has some nice things, but also has a raft of problems. I list those both below:

CVS - http://www.cvshome.org/

The Good The Bad
  • Extremely Popular
  • Free & Open Source
  • Simple & Effective
  • Ships on nearly every Linux/Unix OS
  • Many 3rd party tools designed for CVS
  • A good start to Version Control
  • Long history
  • Maintains NO file meta-data
  • Serving was an afterthought
  • Poor Branching
  • Poor Permissions
  • No “change sets”
  • Non Atomic
  • Security was an afterthought
  • Slooooooower than molasses
  • Single Repository
  • No language support
  • Only supports ASCII Text (not Unicode)

There are many, many other SCM solutions, and I will mention a few of them here along with the respective merits and faults of Subversion and PerForce.

Subversion - http://subversion.tigris.org/

The Good The Bad
  • Free & Open Source
  • Designed to serve
  • Host of improvements on CVS
  • Fast
  • Partially CVS Compatible
  • Apache dependant
  • Only version 0.15 Beta

Perforce (p4) - http://www.perforce.com/

The Good The Bad
  • Free to Open Source
  • High performance
  • Great support
  • Partially CVS Compatible
  • Expensive
  • Larger & more complex than CVS
  • Single Repository

And 5 others worth mentioning:

Closing remarks

As most of you reading this are Mac developers, I should also mention that Project Builder under OS X integrates directly with CVS version control and was originally planned (and may still) interface with other products. Using CVS with Project Builder is still a bit of an art, but once you get used to it is very easy. (Apple provides a guide.) Using CVS from the command line is also extraordinarily easy if you are comfortable at a command line. (Apple even provides a tutorial and the manual.) Those looking for more powerful version control solutions might first look to Perforce (which only has a command line interface -- but at that time the developer should be familiar with the command line anyway).

I hope this article has provided you at least a brief overview of version control. I did not go into the technical details of using any one technology, but had hoped mostly to convince at least the small developer that it is worth his/her time to learn a little about version control and use it for both their existing products and new products to come, both big and small. I began using version control about 3 years into development and have not looked back since, a wonderful, necessary technology.


Eric Seidel, resident mac geek and security freak, works as a remote Intern for the BSD Technologies group of Apple Computer under FreeBSD guru Jordan Hubbard. Eric is the author of a number of popular macintosh applications including mod_rendezvous, OpenAG. When not programming or studying, he fills his free time teaching swing dancing and unicylcing. Eric will graduate from Lawrence University with a BA in Mathematics this coming June with the intention of pursuing a PhD in Computer Science.

Apple May Buy Universal Music | New (Legal) Safari Beta  >

 

 
MacSlash Login
Nickname:

Password:

[ Create a new account ]

Related Links
  • Linux
  • Apple
  • MacSlash
  • http://www.cvshome.org/
  • http://www.cvshome.org/
  • http://subversion.tigris.org/
  • http://www.perforce.com/
  • http://www.bitkeeper.com/
  • http://www.unisoftwareplus.com /
  • http://www.rational.com/
  • http://www.gnu.org/software/rc s/rcs.html
  • http://www.sun.com/
  • guide
  • tutorial
  • manual
  • Eric Seidel
  • More on MacGeek
  • Also by AcaBen
  • This discussion has been archived. No new comments can be posted.
    Source Control: Not Just For The Big Boys | Login/Create an Account | Top | 59 comments | Search Discussion
    Threshold:
    The Fine Print: The following comments are owned by whoever posted them. We are not responsible for them in any way.
    Perforce Corrections. (Score:1)
    by eblom00 on Saturday April 12, @01:44PM (#10476)
    User #9821 Info
    I'm a big fan of Perforce Software's products. I've found them to be extreamly fast and well supported. Fist perforce does not limit it's data to 'single Repository" you can create as many depots as you want. Also if you don't want to create multiple depots you can just run multiple servers on the same machine for no additional cost (assuming your user base is the same for all servers) Second, the up front cost of Perforce may be higher, but, it's maintance costs are extreamly low. Also I've never had a problem with data integraty. I use perforce for hardware, software, document, and web projects. Thrid, Not only is Perforce free for open source projects, but, if you are a one man show you can use the server for free AND get support as long as you don't need more than two users. Forth, Perforce is not restriced to a command line interface. You could use the P4Web (for free) product. It is true that a GUI version is available for Windows but not any other platform. Eric
    SCM / CVS (Score:1, Interesting)
    by Anonymous Coward on Saturday April 12, @10:26AM (#10478)
    Is really good for fixing bugs on old versions. You change things in source, user reports bug, but those line numbers are probably meaning less ;) But if you can bring up the old version, all is good. :)
    a smidgen of history, and an aisde (Score:3, Informative)
    by DdJ (ddj@aisb.org) on Saturday April 12, @10:49AM (#10480)
    User #4264 Info | http://www.aisb.org/~ddj/
    RCS was not the first source code control system (I know, I know, the article text backpedals and says "first open source" -- bear with me). It wasn't even the first source code control system I was exposed to.

    Old Unix systems, the ones that still had Bell Labs code all over the place, came with SCCS, the "source code control system". That is the real granddaddy of source control on Unix. As I recall, RCS was basically a response to it, since it wasn't open source and was perceived at having some weaknesses. When you squint your eyes and let your vision blur, SCCS and RCS end up looking remarkably similar.

    Here's a Unix FAQ that does a direct comparison of RCS and SCCS.

    Another note I consider worth emphasizing: under the hood, CVS actually uses RCS.

    RCS doesn't have a concept of a set of files being considered as one logical group. RCS doesn't have network support (you can only do checkouts if you can get to the repository on an actual filesystem you can see locally). These are shortcomings.

    CVS is really "just" a wrapper that addresses these and other shortcomings. But, what ends up on the disk is RCS-format files, and they're put there by actual RCS binaries that the CVS binaries invoke themselves. (And this sort of thing, small tools that you put together with other tools to do bigger jobs, is exactly what the Unix philosophy is all about.)
    Re:Perforce Corrections. (Score:1)
    by Ster on Sunday April 13, @02:15AM (#10490)
    User #4034 Info
    I have to second the praise for Perforce.

    I use Perforce on FreeBSD at my office. When I started working more from home on my PowerBook, and my connection was to slow for me to run everything over ssh, I just downloaded `p4`, the Perforce client, and created a local sandbox.

    After that, I could work on my local sandbox, and only connect to the server when I needed to build test and sync/submit my changes. The procedure for merging changes, resolving conflicts, and integating branches, are all straightforward.

    If you're concerned about making your source server available outside the company, fear not! Our Perforce server is on a private subnet, but we have a remote login (ssh) server which has a route to the Perforce server's subnet. I just create an ssh tunnel between my own machine, through the ssh server, to the Perforce server. The source is only available to those who can login via ssh. Additionaly, Perforce itself has password support.

    The sofware is definately cross-platform. The client and server are both available for Darwin/OS X. A full list of the supported OS/hardware combinations can be found here. There are almost forty Unixes listed, over a dozen Linuxes (including a few PPC varients), Classic, and even BeOS! The software is available for download and evaluation, and is free for up to two users and two workspaces.

    I hope this information is helpful.

    -Ster
    Emacs + CVS!! :) (Score:2, Interesting)
    by Lysol on Saturday April 12, @03:47PM (#10492)
    User #8658 Info
    I've been using Emacs and CVS for years and the combo rocks! Altho, setting up your own CVS server at home, or for any project, can be a little daunting, it's worth it.

    Up until recently, my main vehicle for development was my Linux boxen. However, CVS and Emacs run great on my Tibook, so it's my new friend.

    Admittedly, I haven't done any kind of branching yet (well, at least I didn't set up any branches), but for the most part, a little time and patience can make good things happen.
    It's really nice in Emacs to have the CVS commands right there. You can do all the usual check in/out, plus compare versions, get any pervious version and look at comment/log histories. It's really handy. If anyone's the least bit interested in the two or heard about them together but never tried, then I suggest giving it a shot. You might be pleasantly suprised!
    Contextual menu plugin? (Score:1)
    by ziwdam on Saturday April 12, @03:11PM (#10495)
    User #3851 Info | http://oxidized.org/ | Last Journal: Tuesday October 14, @12:34PM

    Does anyone know of a CVS (or SVN) contextual menu plugin for the Mac OS X Finder like TortoiseCVS (or TortoiseSVN) for Windows?

    I use TortoiseCVS constantly at work, and have grown addicted to it. There are still somethings that are easier from the command line, but TortoiseCVS is very convenient.

    It is a miracle that curiosity survives formal education. -Albert Einstein
    PVCS? (Score:2, Informative)
    by shekman on Saturday April 12, @09:58AM (#10497)
    User #3647 Info

    My department uses PVCS for version control. For many functions we've resorted to writing Perl wrapper scripts to make it behave the way we want it to.

    I don't think it's the greatest, but it does support cross-platform use. We have people developing in Solaris (Unix) and Windows. Cold Fusion on Windows has automatic hooks into PVCS and that makes it easy for our non-Unix developers.

    Any comment on how the tools mention above work across different platforms?

    Also, do the tools mentioned above support automated deployment of code to remote production machines? Merant has listed this as a feature of the next PVCS release.

    MPW Projector (Score:1)
    by clith (rae@tnir.org) on Saturday April 12, @03:01PM (#10512)
    User #980 Info | http://rae.tnir.org/
    Just thought I would mention another oddity in the history of revision control: MPW Projector. It was a very slick system for its day, which alas has passed. The only doc for it that I can find is for the MPW commands CheckIn, CheckOut, CheckOutDir, NewProject, MountProject, and Project. There are probably more in the list of MPW commands.

    One thing about this system was that it could handle binary files with no problems, and it had a pretty good (for its day) graphical interface.
    ---
    Reid Ellis, GmOne [gmone.org] guy

    Re:Help for MS Visual SourceSafe? (Score:0)
    by Anonymous Coward on Monday April 14, @03:53AM (#10521)
    I know some of the story behind Delta. It was based on the internal command-line tools used at Microsoft. They made a GUI version with most, but not all, of the features. Then suddenly, they bought SourceSafe and Delta got the ax. When I left in '98, the old command line tools were still in use, although some newer projects (staffed by people too new to know better) used VSS.

    VSS is stupid and lame, but works OK for small teams. It becomes unbearably unusable for larger projects.
    Running Linux on a Mac is about compatability... (Score:2)
    by Thaidog on Monday April 14, @04:42AM (#10522)
    User #68 Info | http://www.tyler.mcadams.com/
    It's not about performance or shocking your friends... it's about being able to do one more great thing with your mac and not to mention give your entire infrastructure a common platform. Linux can run on everything from a mainframe to your PDA... which creates a very strong "Standard". It's not about performance, per say but a common desktop environment. Not to mention it's free. OS X will always be my first pick for my workstation, but as for my iMac DV 400, which does not run OS X well... it's new life for my computer... not to mention I can now run the same OS on my windows box as my mac by dual booting...

    ||| The day I learn to spell is the same day I quit being an engineer...

    Re:Is this really necessary? (Score:1)
    by Merlisk on Monday April 14, @08:02AM (#10523)
    User #9082 Info
    It was tryingn to reach me! I've been using CVS to pull my programs down from Sourceforge and the like, but I didn't know how it fit with other similar products. It was a great overview with good reference for further study. Thanks! -- "Don't drink and park... accidents cause people."
    Re:a smidgen of history, and an aisde (Score:2)
    by DdJ (ddj@aisb.org) on Sunday April 13, @11:25AM (#10529)
    User #4264 Info | http://www.aisb.org/~ddj/
    In my experience, no it doesn't mean that, but on the other hand, converting an RCS repository into a CVS repository isn't usually a huge task.

    If you're using RCS and want to switch to CVS (or vice versa), that's much easier than switching between two unrelated systems. Except, there are things that will make it harder -- CVS places some limits on symbolic names that RCS doesn't, so if you've got an RCS repository that uses names CVS doesn't like, that could cause a problem switching (I've experienced this on a commercial project -- when we were a small company we used RCS, and when we grew and looked at using CVS, it was nontrivial to switch because of some conventions we'd adopted.).
    Re:Contextual menu plugin? (Score:2)
    by Mechanist on Monday April 14, @12:04AM (#10532)
    User #974 Info
    Not contextual, no, but Project Builder has a CVS menu that covers the same features for projects with CVS control.
    OpenCM (Score:0)
    by Anonymous Coward on Monday April 14, @02:11AM (#10533)
    greetings, opencm was built by people dissatisfied with cvs (as are the subversion builders). http://www.opencm.org/
    Re:Is this really necessary? (Score:0)
    by Anonymous Coward on Monday April 14, @02:24AM (#10534)
    It's not just students, it's academia in general. In my area of computational environmental fluid mechainics, the software development team is in desperate need of a code management system. This article was a good start.
    Re:Help for MS Visual SourceSafe? (Score:0)
    by Anonymous Coward on Sunday April 13, @11:51PM (#10546)
    No, there is no hope. VSS is irredeemable rubbish. Your boss should be killed. I can arrange this, for a modest fee. You should then setup a CVS pserver. There are command line and gui tools for CVS on all popular platforms.
    Emacs + CVS!! :) (Score:0)
    by Anonymous Coward on Monday April 14, @12:02AM (#10547)
    '....was my Linux boxen.'

    The use of 'was' rather than 'were' implies singular. The word boxen is a fanciful plural of box. I suspect you ran Emacs and CVS on your Linux box.

    It is certainly fair to say that emacs and CVS work as intended on a TiBook, or any other machine running OSX. It's also worth noting that they're both part of a standard install of OSX.

    I find the lack of XEmacs or a Cocoa equivalent a little disappointing. XEmacs can be installed with Fink but it depends on older versions of some Fink packages I've updated. The legacy of the gcc update with Jaguar.
    Subversion (Score:0)
    by Anonymous Coward on Monday April 14, @03:03PM (#10550)
    I would highly recommend checking out subversion. It whups ass, and there are a lot of stupid cvs bugs that it gets around (like inability to rename files and keep the version info). and just because its alpha, doesn't mean its unstable. They're very conservative.
    ...and not just for teams (Score:1)
    by gumby on Monday April 14, @12:42PM (#10555)
    User #7476 Info
    I use CVS for all software I develop for my own use. I also keep web sites under it. It's the only way to save yourself from those "oh XXX" moments when you realise you've spent the past hour/day/month working down the wrong path...or just need a part of the old thing you had last week.
    There is more to it (Score:2)
    by tchristney on Sunday April 13, @11:40PM (#10557)
    User #1847 Info | http://macslash.org/

    Version control is only one aspect of configuration management. Configuration management is the maintenance of the information that describs the possible configurations of the project. The overhead of maintaining this meta-data can be quite costly for branched code. It is critical to know not only that there is a branch to the code, but how it relates to the trunk, to other branches, and to the overall goals of the project.

    This is the main reason that most projects reside exclusively on the main trunk.

    "Concentrate on promoting rather than demoting." - CmdrTaco.

    Re:Help for MS Visual SourceSafe? (Score:1)
    by clith (rae@tnir.org) on Saturday April 12, @02:47PM (#10561)
    User #980 Info | http://rae.tnir.org/
    VSS, a.k.a. SourceSafe started life on DOS, and it shows. The Mac client is one of the slowest, least stable source control systems that you can use. If you have to access SourceSafe from a Mac, maybe you can get SourceOffSite to work, I'm not sure. They don't specifically mention the Mac as a client though.

    If you can, try to get your boss to switch to CVS. Alternatively, maybe you can maintain your own CVS repo and update it periodically via "cvs import".
    ---
    Reid Ellis, GmOne [gmone.org] guy

    The place I work for.. (Score:0)
    by Anonymous Coward on Monday April 14, @08:50AM (#10593)
    We are about to release our version control system for the Mac. It is in response to a large software company requesting that we create our toolset for the Mac, as they are replacing PVCS and Perforce on the Mac. Check out www.serena.com.
    Re:Perforce Corrections. (Score:0)
    by Anonymous Coward on Monday April 14, @12:31PM (#10669)
    If you want a perforce GUI for OS X check out : http://home.attbi.com/~jgargast/P4Cocoa/
    Re:Help for MS Visual SourceSafe? (Score:0)
    by Anonymous Coward on Saturday April 12, @02:39PM (#10709)
    I've never heard of *any* utilities for moving between SCM systems. When you think about it, *all* that info is important, but each system is slightly different.

    This is a damned important factor to keep in mind when choosing SCM: you *are* stuck with it. That is one component I will *never* again trust to a proprietary system.
    Re:Help for MS Visual SourceSafe? (Score:0)
    by Anonymous Coward on Saturday April 12, @02:09PM (#10720)
    I believe there are some Java apps that will access VSS servers.

    I've got a problem in that our university made VSS available but didn't have a site license and subsequently withdrew the software, so now I have some source stuck in a VSS archive.

    Ah well, it's another excuse to dump that crap and switch to Perl...

    One thought this article doesn't address: How do you convince reluctant coworkers to use source control? Even with two people working without source control is a nightmare, but the other guy is a VB h4xx0r... what can I do besides kill him?
    CVL (Concurrent Versions Librarian (Score:1, Interesting)
    by Anonymous Coward on Saturday April 12, @02:35PM (#10721)

    An app that I find useful is CVL:

    http://sente.epfl.ch/software/cvl/

    Re:Is this really necessary? (Score:0)
    by Anonymous Coward on Saturday April 12, @02:04PM (#31245)
    This is actually a legitimate question... to which the answer is students who are doing shareware development.
    Help for MS Visual SourceSafe? (Score:3, Interesting)
    by frankie on Saturday April 12, @12:50PM (#31248)
    User #835 Info | http://geocities.com/francis_uy/
    My boss is technically savvy and willing to support Mac/Unix if it isn't too much trouble. Unfortunately, he tends to use Microsoft products (plus ColdFusion) out of familiarity and comfort. So when our projects got large enough to need version control, he picked VSS over CVS.

    Is there any hope for me as the sole Mac-based developer? There used to be a VSS client for OS9, but how about Jaguar? Alternately, any click-and-drool utilities that can migrate from VSS to some other solution?

    -F.
    Re:Help for MS Visual SourceSafe? (Score:1)
    by ObjectiveChris on Sunday April 13, @11:15AM (#31256)
    User #1825 Info | http://homepage.mac.com/cbracken/
    I don't think there are any tools out there to migrate from VSS to other version control systems. VSS does have a COM interface, so you could always write a tool to step through each file in your repository, and for each version get it and check it into the new system... it'd be a pain, but possible to do...
    Re:Help for MS Visual SourceSafe? (Score:1)
    by ObjectiveChris on Sunday April 13, @11:13AM (#31257)
    User #1825 Info | http://homepage.mac.com/cbracken/
    First of all, you should find enough evidence to convince your boss not to use VSS in the first place. It's a truly awful source control system. The only thing it really has going for it is that the UI is simple enough (although ugly and inconsistent) for a lot of people to figure out. I speak from experience, at one point I used to manage the source vaults for one of the largest software companies in the world (not Microsoft), with over 2000 developers worldwide.

    Not only does performance die when the repository gets big, but the repository is extremely succeptible to curruption at *any* size. We experienced data loss due to bugs in VSS almost weekly. It's so bad that VSS ships with tools to check for and repair corrupt VSS databases. After running that tool once, we lost every source file in the database, and had to restore from backups. We had direct contact with Microsoft to repair some problems. In the end, we had so many developers threatening mutiny if we didn't ditch VSS that we spent months analyzing other solutions before we switched.

    From a security standpoint, VSS operates purely through direct file access; there is no option to run it through a service or encrypt data. That means that everyone who uses the repository *requires* full access to the share -- ie. the ability to read, write, and delete files. That means that users can maliciously or accidentally delete the entire repository. I've seen it happen (once). It's not pretty.

    Let's continue. Offsite performance. Even over a 100 MBit connection, performance is awful compared to CVS. Because it works through SMB, it provides truly painful network performance. The only real option is to use SourceOffsite (a 3rd party product that improves performance drastically).

    Ok. That said, there is a Solaris client (I think) and there was a Mac client at one point too. I don't know what state those are in right now.

    What does VSS have going for it? Well... it's Microsoft, so it easily integrates with Visual Studio. It also has a graphical client, which allows people like the documentation team to use it without getting cranky. The GUI is pretty awful though. And I don't believe that the two pluses above make up for its deficiencies in any significant way. Perforce also has a GUI client, and there are GUI clients for CVS (though many are pretty non-tech-user-unfriendly).

    Ok, there's my rant against VSS. It's awful, it's a maintenance nightmare, and when I was administering it, there were times when I spent over a week solid just trying to fix corruption. That's money my company could have spent on having me do something useful rather than just keep the thing running. The price of sourcesafe is a lot higher than your MSDN subscription.
    Re:Help for MS Visual SourceSafe? (Score:1)
    by TB3 on Sunday April 13, @08:39AM (#31261)
    User #3474 Info
    SourceSafe was created by One Tree software. Microsoft orginally had their own version control system, called Delta, but it was yanked from the shelves shortly after it was released. (If anyone knows the story behind this, I'd love to hear it).
    Microsoft quicky bought One Tree, re-packaged the existing versions, and then sold off the non-windows versions. Metrowerks picked up the Mac version, but they've dis-continued it.
    A Google search on 'SourceSafe' brings up a load of SourceSafe alternatives that you might want to look into.
    Re:PVCS? (Score:0)
    by Anonymous Coward on Saturday April 12, @05:21PM (#31264)
    The big problem with PVCS (aside from the $) is that it uses pessimistic locking. When someone checks out a file, it gets locked, and no one else can do anything to that file until its checked back in. Sure, it makes it easier to keep from step all over each other's work, but CVS can help you to handle the conflicts.
    Re:subversion (Score:0)
    by Anonymous Coward on Sunday April 13, @06:05AM (#31266)
    It is also a bit misleading to say that Subversion is "Apache dependent". One of the means for making a Subversion repository available is via Apache and WebDAV but it is also possible to use svnserve. This server uses an svn specific protocol and is unrelated to Apache. It can be connected to directly over the network when run as a service, or by tunneling over SSH in a similar way to what CVS does. If we knock both the version number issue and the Apache comment out of the bad list, then that leaves no bad points. :-) Now if only the "svn export" feature would correctly remove the ".svn" directories for me instead of bailing out part way through. :-(
    Call me simple (Score:0)
    by troll (god@spacksdownmacos.now) on Saturday April 12, @04:36PM (#31272)
    User #8168 Info
    If your' in a team making a software package might be a tool that lets people only make a copy of the software and not up load and overwright stuff. (CHMOD?). This might be where some of the frigen unwieldy IDE's could actualy be useful, as they have tools to help handle lots of the issues with SCCM/CVS/RSM etc. Some even had a terminal mode concept that was rudimentary. Also if your' on a team keep local and hosted imergency backups.
    Missed One (Score:0)
    by Anonymous Coward on Saturday April 12, @11:28PM (#31276)
    Another High Class SCM tool you failed to mention is Telelogic's CM Synergy. It is more at the enterprise level and competes directly with ClearCase.

    The URL for it is http://www.telelogic.com/products/synergy/cmsynergy/index.cfm.

    It is definitely worth a look if you are considering ClearCase or Perforce.

    Re:PVCS? (Score:1)
    by thehappygit on Saturday April 12, @08:46PM (#31278)
    User #8057 Info | http://macslash.org/

    Haven't used most of these, but the bitkeeper website claims windows-macos-linux versions. cvs works on all these as well, and is included by default on mac os x and most linuces.

    Re:a smidgen of history, and an aisde (Score:1)
    by mschindler on Saturday April 12, @08:55PM (#31279)
    User #6677 Info