CVS update and release example - how to tell if your changes are committed

CVS command FAQ: How do I know if all the changes in my CVS sandbox have been committed?

One way to do this is to move to the directory just above the module you have checked out, then run the command cvs release command. Let's look at an example:

/home/al> cvs co DevDailyMondo
/home/al> cd DevDailyMondo
/home/al/DevDailyMondo> _

(make your changes here)

/home/al/DevDailyMondo> cd
/home/al> cvs release DevDailyMondo

When you run this cvs release command, cvs will let you know which files in your local copy of the module are different than those in the repository.

NOTE: I've recently found that cvs update may be a better way to do this. (I'm guessing something has changed with cvs release, because it isn't working like it used to.)

Here's an example of how this works with the cvs update command. Go to the root directory of your local sandbox, and issue this command:

cvs up

Or, if you like typing, you can issue the full cvs update command:

cvs update

When you issue the cvs update command, the cvs client will compare itself to the repository. If you have any files that have changed, or have never been added to the repository, they will stand out, like this:

prompt> cvs up

? dist/classes
cvs update: Updating .
cvs update: Updating WEB-INF
cvs update: Updating WEB-INF/classes
cvs update: Updating build
cvs update: Updating dist
cvs update: Updating doc
cvs update: Updating doc/client
cvs update: Updating lib
cvs update: Updating resources
cvs update: Updating sql
M sql/populate.sql
cvs update: Updating src
cvs update: Updating src/com
cvs update: Updating src/com/devdaily
cvs update: Updating src/com/devdaily/app
cvs update: Updating src/com/devdaily/app/subdir

The line that begins with the question mark (?) shows the CVS way of telling you that it doesn't know what this file or directory is -- it's never been checked into cvs. The line that begins with the letter "M" is the cvs way of showing that this file has been modified, and needs to be committed back to the repository.

As you can see this seems like a pretty good way of telling what is different between your sandbox and the cvs repository.