|CVS Client Installation||
WinCVS and other Tips
Cvs Admin Menu - Performing a Clean Checkout
Make sure ALL TARGET FOLDERS ARE DELETED before initiating a clean checkout. Otherwise some of the state files in the special CVS directories that are placed in every checked out folder may not acurately reflect the files being checked out. Classic symtom of an invalid clean check out is CVS thinks files are not checked out and even though a checkout of them was just completed.
CVS hangs on large binary files
Preference globals tab, enable Use TCP/IP compression. This only compresses data transfered between the client and server. However, it seems to be a workaround for transfer hangs of certain binary file types that occur when compression is not enabled. This may be a bug in WinCVS that may be fixed in a later version. I have not seen Linux, or MacCVS have this problem.
Re-adding a file
Performing a CVS remove file command does not elimiate all traces of it from the repository. If at some later time the file is re-added, the Attic/filename,v with dead state is moved to filename,v and given an exists state in the CVS repository. Now because MS Windows is somewhat case insensitive, a problem can arise if the re-added file is the same name with slightly different case letters. The symptom of this is that a re-added file can't be commited because the exact case sensitive Attic/filename,v can't be found. To resolve this, either attempt to guess what the file case originally was, or gain access to the CVS repository and look in the Attic for the exact case spelling of the file, then re-add and commit should work.
WinCVS - files are present but don't show in window!
This is a fun one. Sometimes, without warning WinCVS will startup with a View Filter settings set strangely. The Show Changed setting if disabled will hide all files WinCVS view window! Check this setting and other similar ones to make sure you are seeing everything you expect to see. Be carefull, the settings are very subtle and can be very misleading! Elsewhere: Source Forge: CVS Filters
CVS Tagging Tutorial
The following assumes the use of WinCVS
README CVS Tag History --------------- C2010101 ntree control functional C2000102 rename ntree.cpp -> ntree.c C2000101 some INI capability C2000000 First check in of Gus's 'classic' code
CVS Branch/Update/Merge Tutorial
Make a clean checkout of a known working module. Often you may look at a past tag of a project and checkout a specific tagged state of it clean to insure that you have a good base to work from.
If you decide not to create a branch, you can do an update with the clear sticky bit to freshen your working directory with the main trunk files.
Now, create a branch. On WinCVS, in the left pane right click on the module root you want to branch, Tag Selection, Create branch. Make sure you use no spacees or other nonalphanumerics (e.g. BRANCH1).
OK, now the CVS repository has a notion that BRANCH1 is a sperate code state from the main trunk, even though at the moment they represent the same file state. Even though BRANCH1 may seem like a normal tag, it actually refers to the tip of the branch just created. As commits of changes to the branch's files occur, the BRANCH1 tag will move forward to always represent the tip of the branch's file state. If you need to mark a certain file state, use the standard tagging proceedure.
From this point on, a seperate file state will be maintained for the files checked out to the branch work directory. Any changes checked in will not affect the main trunk. .
At some point you may decide that you still need the branch to work in, but some changes in the main trunk have occured that you would like to pull into you branch. This is tricky.
Ultimately you will finish whatever tweaks are need to the branch files, check them into the branch, and decide that the brnach needs no more work. At this point its time to merge/join the branch changes into the main trunk. This too is tricky. . . . . . . . . .
Common CVS Commands
|WinCVS (circa v1.2)||Classic Command Line (Linux)|
|login||Menu: Admin: login||
|tag||hilite file or folder
Menu: Modify: Create a tag on selection ...
New tag name: BOGUSMOD20010909_FIXED_FOOBAR
|$ cvs -q tag BOGUSMOD20010909_FIXED_FOOBAR|
|checkout||...||$ cvs co module
(this will create a 'module' directory)
|update||...||(cd to 'module' directory, e.g. $ cd module)
$ cvs update -R -d
- Retrieve rev /tag/branch: TAG123
|(cd to 'module' directory, e.g. $ cd module)
$ cvs update -rTAG123
- Reset any sticky ...
|(cd to 'module' directory, e.g. $ cd module)
$ cvs update -A
|N/A ?||(cd to 'module' directory, e.g. $ cd module)
$ cvs -n update
Dangerous But Useful Commands
cvs admin -o ...