CVS Repositories

From CS Support Wiki
Revision as of 19:20, 3 August 2006 by Reh4j (Talk | contribs)

Jump to: navigation, search

Quick CVS Introduction

Creating a Repository

You can create a cvs repository in your home directory:

cvs -d ~/cvsroot init

You will probabably want to modify your .profile file to contain the cvsroot and cvseditor variables.

export CVSROOT=$HOME/cvsroot
export CVSEDITOR=vi

Importing a Project

When you import a directory into your cvs repository, it becomes a module. Assume that you would like to import directory ~/project1 into your repository created above.

cd ~/project1
cvs import -d ~/cvsroot myproject yourname start

This tells cvs to store your project1 directory in the repository under the name myproject. When you checkout myproject later, it will create a myproject folder. 'yourname' and 'start' are unimportant - they are vendor and version labels, respectively.

Checkout a Project

When you checkout a project, you tell cvs to create a working copy.

cd ~
cvs checkout myproject

The directory myproject now exists in your home directory. It should have a subdirectory called CVS.

Updating

The update command updates your working directory from the repository and tells you the status of your files. (M=modified, p=patched from other updates in the repository, U=a new file that wasn't previously in the working directory)

cd ~/myproject
cvs update

You can use the difference command to see what has changed in the files marked 'modified.'

cvs diff example.txt

Comitting Files

To commit files back to your repository, use the commit command.

cvs commit example.txt

CVS will then bring up an editor (the one specified in your CVSEDITOR variable, or emacs by default) where you can enter a log message, detailing what you have changed. To avoid having the editor opened, a log message can be included in the commit command.

cvs commit -m "added a cool new function" example.txt


Repository Access Methods

A repository might be on your local computer, a computer across the room or even a computer across the world. Thus, there are different methods to access a repository.

Local Access

Use :local: to access a repository directory. For instance, :local:/cvsroot indicates that the repository is located in /cvsroot on the computer running CVS. If you don't specify an access method when connecting to a repository, local is assumed.

Remote Access

Your working copy of the sources can be on a different computer than the repository. Using CVS in this manner is known as a client / server operation. You run cvs on a machine which can mount your working directory, known as the client, and tell it to communicate to a machine which can mount the repository, known as the server. Generally, using a remote repository is just like using a local one, except that the format of the repository name is:

[:method:][[user][:password]@]hostname[:[port]]/path/to/repository

Specifying a password in the repository name is not recommended during checkout as this will cause cvs to store a cleartext copy of the password in each created directory. Use 'cvs login' first instead.

Pserver

To connect to a repository via a password authenticating server, you specify the pserver protocol.

cvs -d :pserver:computername.cs.virginia.edu:/path/to/repository checkout someproject
Ssh

Ssh can be used to access a CVS repository remotely. To do this, you first need to set the CVS_RSH variable. This can be done on the command line or in your .profile.

export CVS_RSH=ssh

Example: You want to checkout the cvs module 'someproject' in the repository '/cvsroot/' on machine luray.cs.virginia.edu.

cvs -d :ext:username@luray.cs.virginia.edu/cvsroot checkout someproject

The username can be omitted if it is identical on both (local and remote) hosts.


Repository Permissions

Any repository that you create will be owned by your and your [default] group. Only members of your group will be able to access your repository. For instance, if you are a member of csfaculty and create a repository, a student belonging to csgrads would not have the permissions to access your repository.

CVS only allows files to be controlled on a per directory basis, not on an individual one.

Possible solutions include:

  • Setting up a unix group containing the people who should be able to access the repository, and then ensure that the repository directory is owned by that group.
  • Hosting your repository remotely on the pserver and setting up accounts for those who need access

Email root to help set you up.


Collaborating with People Outside the Department

If you want people outside the department to have access to your repository, then you will need to host it remotely on the pserver.