Show Changes Show Changes
Print Print
Recent Changes Recent Changes
Subscriptions Subscriptions
Lost and Found Lost and Found
Find References Find References
Rename Rename
Administration Page Administration Page
Search

History

3/5/2008 8:07:41 AM
-194.221.133.226
3/5/2008 8:06:13 AM
-194.221.133.226
1/24/2008 8:44:00 AM
FLWCOM-jwdavidson
10/5/2007 2:25:51 AM
-207.44.238.95
10/4/2007 10:23:25 PM
-82.148.98.34
List all versions List all versions

RSS feed for the FlexWiki namespace

Understanding CVS
.

acelacno

cnadrontad

Note - FlexWiki now uses Subversion for it's source control. For more information, see UnderstandingSubversion

What Is CVS?

CVS is a source control system like Visual SourceSafe. It keeps track of all versions of a set of source files.

What Is Source Control?

Eric Sink has written an excellent overview of basic source control concepts. You can find it at http://software.ericsink.com/scm/source_control.html .

What Is a CVS Repository?

A CVS repository is a collection of all files related to a particular project. You can think of it as an instance of a CVS database. The FlexWiki repository lives at cvs.sourceforge.net, in the folder /cvsroot/flexwiki.

What Is a CVS Module?

CVS repositories are further divided into modules. A module corresponds roughly to the concept of a "project". FlexWiki currently has only one module that developers care about: FlexWikiCore, which contains all the files that make up the core of the FlexWiki software project. In the future, the FlexWiki repository will have other modules for other FlexWiki-related software.

What Is a CVSROOT?

A CVSROOT is a string that identifies a repository and information about how to access it. It is very much like a database connection string. Here is an example of a CVSROOT string:

  :ext:candera@flexwiki.cvs.sourceforge.net:/cvsroot/flexwiki

It consists of several parts. In this example, "ext" indicates that we wish to access the server via "external" authentication (see ConfiguringCVS), "candera" is the username we wish to connect under, "flexwiki.cvs.sourceforge.net" is the name of the server where the repository lives, and "/cvsroot/flexwiki" is the path to the repository on that server.

CVS Philosophy

If you have only ever used Visual SourceSafe in its default configuration for source control, you should be aware that CVS works quite differently. SourceSafe operates under a "lock-edit-checkin" model, wherein only a developer "checks out" a file, preventing anyone else from working on it, then edits it and ultimately performs a "check in", releasing their lock and allowing the next person to edit the file.

CVS (like most other source control systems) does not default to this behavior. Rather, it uses a "edit-merge-commit" model. In this model, developers retrieve files from the repository and edit them without locking them. When it comes time to save changes back to the repository, CVS will check to see if anyone else has made changes to the files you changed while you were working on them. This is called a "conflict", and in many cases CVS can handle it automatically. If not, the developer can use any one of a number of tools to reconcile any differences and store the merged files back into the repository. This model allows multiple developers to continue working on FlexWiki without anyone blocking anyone else's work.

Other CVS Terminology

Some of the terms that CVS uses may be unfamiliar to those who have not worked with CVS or similar source control systems before.

The usual sequence of events when working with CVS is:

  1. Checkout
  2. Edit files
  3. Periodically update to pick up changes
  4. Commit

Repeating steps 2 through 4 as often as necessary.

A Word About Folders

One slightly counterintuitive aspect of working with CVS has to do with folders: checkouts are done in a parent of the module folder, while updates and commits are done in the folder itself.

Assuming they are using TortoiseCVS (which the FlexWiki team recommends) a typical developer might follow the following steps:

  1. Create a new folder called C:\projects\flexwiki for all his or her FlexWiki work.
  2. Right-click on the newly created flexwiki folder and choose "CVS Checkout..."
  3. In the dialog that appears, specify ":ext:myusername@flexwiki.cvs.sourceforge.net:/cvsroot/flexwiki" for the CVSROOT, and FlexWikiCore for the module

That will create a C:\projects\flexwiki\FlexWikiCore folder with all the files from the FlexWikiCore module in it. The developer is now ready to start working on the project, which might go something like this:

  1. Edit one or more of the files in the FlexWikiCore directory or one of its children
  2. Periodically, right-click on the FlexWikiCore directory and choose "CVS Update" to retrieve the latest files from the repository (changed files will not be overwritten)
  3. When the developer is happy with the changes they have made, they can right-click on the FlexWikiCore directory and choose "CVS Commit" from the menu.
  4. Enter a detailed comment in the dialog that appears and hit OK.

Note that commit and update operations are performed by right-clicking the FlexWikiCore directory itself, where the initial checkout is performed by right-clicking the parent of that directory.

Not logged in. Log in

Welcome to the home of FlexWiki, an experimental collaboration tool, based on WikiWiki.

This is FlexWiki, an open source wiki engine.

This site supports the new NoFollow anti-spam initiative.
Change Style

Recent Topics