Now: Tutorial for Web and Software Design > OS > Mac > OS Content
> In Sync with CVS [Bookmark it]
In Sync with CVS

In Sync with CVS

Day to Day Use

Now that we've successfully checked out the repository onto two machines, we're ready to start using CVS for our files. The rest of this section will give you the basic commands you need to work with your files.



Adding Files

Let's say that we want to keep some pictures in the repository. To do so, we'd create a Pictures subdirectory in our checked out copy of the repository, copy the images into them, and then add the files to CVS.

The following commands illustrate how we might do that:

[Mercury:~/tmp] duncan% mkdir Pictures

[Mercury:~/tmp] duncan% cp ~/Pictures/me.jpg Pictures/me.jpg

[Mercury:~/tmp] duncan% cvs add Pictures

Directory /Library/Depot/Pictures added to the repository

[Mercury:~/tmp] duncan% cvs add Pictures/me.jpg

cvs add: scheduling file `Pictures/me.jpg' for addition

cvs add: use 'cvs commit' to add this file permanently

[Mercury:~/tmp] duncan% cvs commit -m "Sync"

cvs commit: Examining .

cvs commit: Examining CVSROOT

cvs commit: Examining Pictures

RCS file: /Library/Depot/Pictures/me1.jpg,v

done

Checking in Pictures/me.jpg;

/Library/Depot/Pictures/me.jpg,v  <--  me.jpg

initial revision: 1.1

done

To checkout the file onto the other machine, we would issue the cvs update command as follows:

[Mercury:~/tmp] duncan% cvs update -d

The -d option to the update command tell CVS to check out any subdirectories that were added since the last time we performed an update. You should see the following output:

cvs update: Updating .

cvs update: Updating CVSROOT

cvs update: Updating Pictures

U Pictures/me.jpg

Voila! Your data is now mirrored and updated between multiple machines. Anything you add to one machine will appear on other machines. All you need to remember to do is to add files to the repository, and to regularly run the cvs update -d command.

Removing Files

Occasionally you'll want to remove a file from the repository. To do so, simply remove the file, then issue a cvs delete command. Here's an example:

[Mercury:~/tmp] duncan% rm Pictures/me.jpg 

[Mercury:~/tmp] duncan% cvs delete Pictures/me.jpg

cvs remove: scheduling `Pictures/me.jpg' for removal

cvs remove: use 'cvs commit' to remove this file permanently

[Mercury:~/tmp] duncan% cvs commit -s "Sync"

cvs commit: Examining .

cvs commit: Examining CVSROOT

cvs commit: Examining Pictures

Removing Pictures/me.jpg;

/Library/Depot/Pictures/me.jpg,v <-- me.jpg

new revision: delete; previous revision: 1.1

done

Moving files is a pain with CVS. There is no cvs move command, so you have to delete the file from where it was and add it to wherever else you want it to be.

Applying CVS to our Scenario

So now that we've learned how to use CVS, how should we use it? Well, the answer is "it depends". Everyone's sweet spot will be different, but after using CVS to maintain my data on multiple machines for several years, here's a set of guidelines:

  • Don't check in your entire home directory into CVS. There's a lot of data there that you don't need to replicate. Instead, focus on just checking in the important things: your documents.

  • Don't check in applications. Again, it's the data that is important. You can install the same application on multiple machines easily. What CVS is best at is making sure that your data files for those applications are mirrored across all of your machines.

  • That said, CVS is the perfect place to stash your shell scripts and other goodies that you might have in your ~/bin directory.

  • Do make sure that you have the appropriate binary flag set in CVSHOME/cvswrappers before checking in a binary file for the first time. If you don't you could have trouble later.

In general, I keep the contents of my ~/Documents folder in CVS which lets me have all of my documents with me wherever I go. As well, I keep my ~/bin folder in CVS so that all of my shell scripts and command line tools stay with me. And, finally, I keep all of my Code in a ~/Code folder. To keep these updated, I have a script (in ~/bin that executes the following:

cd ~/Code

cvs update

cd ~/Documents

cvs update

cd ~/bin

cvs update

You'll want to come up with whatever scheme makes the most sense for your usage patterns. Experiment a little bit. See what works. But by starting with these guidelines, you should find your sweet spot faster.

CVS Gotchas

CVS is by no means the perfect tool for the job. People that use Source Code Management (SCM) tools (the fancy term for the task that CVS performs) will tell you all sorts of nits that they have with CVS. These nits usually include the fact that even when you check in three files together, CVS doesn't note that the versions of those three files are related. As well, moving files in CVS is problematic. You have to first delete the file from CVS and then add it in its new location. Not only is this burdensome, but you loose the history of the file.

Even with these faults, CVS is a very useful tool to use when maintaining your data across multiple machines. And looking to the future, there is a successor to CVS in development called Subversion which will ease many of the woes of CVS. You can find more out about Subversion at http://subversion.tigris.org/.

CVS Resources

This article gets you started with using CVS to manage your data. However, at some point you'll probably want to dig deeper into what CVS can do. The following resources can be of help:

  • CVS Pocket Reference, by Gregor N. Purdy (published 2000 by O'Reilly and Associates, with a 2nd Edition due in August). This small and affordable little guide gives you the complete list of CVS commands and options to those commands.

  • The CVS site, located at http://www.cvshome.org/. This website contains the source code for CVS, FAQs, and the 184 page "official" user manual for CVS by Per Cederqvist, et al.

James Duncan Davidson is a photographer, author, and software developer living in Portland, Oregon. He is the co-author of O'Reilly's Running Mac OS X Tiger and a contributor to Mac OS X Hacks, among others.


Return to the Mac DevCenter.

Prev  [1] [2] [3] 

[Bookmark][Print] [Close][To Top]
  • Prev Article-OS:

  • Next Article-OS:
  • Related Materias
    How to Deploy Software Usi
    Top 10 Tips for Using Wind
    Mastering Windows New Fire
    Creating Visual Studio Pro
    Implementing Mandatory Roa
    Better Registry Searching
    Windows XP File Sharing My
    Using Data Compression in 
    Building Photo Uploaders w
    Windows XP File Sharing My
    Topics
    Photoshop Tutorial
     

    Special Effect

      3D Effect
      Photoshop Articles
    Programming Tutorial
     

    C/C++ Tutorial

      Visual Basic
      C# Tutorial
    Database Tutorial
     

    MySQL Tutorial

      MS SQL Tutorial
      Oracle Tutorial
    Graphic Design Tutorial
     

    Coreldraw Tutorial

      Illustrator Tutorial
      3D Graphics Articles
    Webmaster Articles
     

    Domain Service

      Web Hosting
      Site Promotion
    Java Tutorial&Articles
     

    Java Servlets

      JavaEE Tutorial
     

    JavaBeans Tutorial

    XML Tutorial&Articles
     

    XML Style Tutorial

      AJAX Tutorial
      XML Mobile
    Flash Tutorial&Articles
     

    Flash Video

      Action Script
      Flash Articles
    OS Tutorial&Articles
     

    Linux Tutorial

      Symbian Tutorial
      MacOS Tutorial