[TriLUG] version control recommend

Brent Verner brent at rcfile.org
Sat Feb 22 00:58:30 EST 2003


[2003-02-21 23:46] Morris Walton said:
| Hi,
| 
| I do a little bit of personal development & was thinking about checking
| out getting some version control other than "cp foo.c foo.c.1".  CVS
| seems to be used by most of the linux development community....  I don't
| need anything too complex.  I was curious what everybody else uses.

CVS: 
====
  pros: quick && easy, especially when working solo on multiple 
        machines :-)  simple network access to remote repositories
        over ssh.
  cons: can be unfriendly in the face of code refactoring and/or
        source tree hierarchy modifications, since directories
        are not versioned -- renaming directories requires
        manual maintenance inside the CVSROOT
  
  quick-nasty-tutorial: (for using a local repo)
    'cvs -d $CVSROOT init'
      creates a fresh repository
    'cvs -d $CVSROOT import some-new-code brent start'
      imports/creates a new module from the current directory
    'cvs -d $CVSROOT co some-new-code'
      checks out working version
    'cvs ci'  (from within working tree)
      checks in changes
    'cvs up' (from within working tree)
      updates a working tree


subversion:  http://subversion.tigris.org
==========
  pros: much more advanced versioning -- directories are versioned
        and can be easily renamed.  more granular access control
        on repository servers, since it runs behind apache. 
        much better (remote) file locking mechanism due to
        features of DAV.
  cons: complex.  versioned files in binary/database format,
        requiring the use of a special program to manage
        the repository.  network access requires apache2/mod_svn 
        (which is based on the DAV http extensions).  Still in 
        alpha stage (tho I've had _no_ problems in my limited use)

  quick-nasty-tutorial: (for using a local repo)
    'svnadmin create $SVNROOT'
       creates a repository
    'svn import file://$SVNROOT some-new-code some-new-code'
       imports/creates a module named some-new-code from
       the directory named some-new-code
    'svn co file://$SVNROOT/some-new-code'
       checkout a working copy of code into current directory
    'svn ci'  (from within working copy)
       checks in changes
    'svn up'  (either it updates the working copy, or quenches thirst)


There are a number of other systems, but these two are the only
I am familiar with.  I can recommend both, but I'd recommend
starting with CVS, and keeping an eye on subversion :-)

I currently use CVS 90% of the time, but am already starting
(some) new projects in subversion.

I'd like to see others' experience/recommendations on this subject 
as well.

hth.
  b

-- 
"Develop your talent, man, and leave the world something. Records are 
really gifts from people. To think that an artist would love you enough
to share his music with anyone is a beautiful thing."  -- Duane Allman



More information about the TriLUG mailing list