TortoiseCVS FAQ

What is TortoiseCVS?
Why don't the icon overlays appear?
Why do the overlay icons sometimes change to random graphics?
Yeuch! Those icons are grotesque, I want better ones!
Ooops! I accidentally removed a file, and now it's gone!
When I remove a file it vanishes, how do I commit it?
How do I discard a change, reverting to the version in the repository? (Undo Checkout in Sourcesafe)
Can you recommend an external diff program?
How do I change the external diff program?
Can I mix and match with WinCVS or the command line?
Can I work on lots of modules from different repositories at once?
SSH doesn't work, help!
How do I make the SSH support less clunky?
Can I use Plink from the Putty suite of tools for SSH access?
What happened to exclusive locking or announcing edits?
How does TortoiseCVS handle binary files?
Can I customise the flags sendt to CVS?
Tell me about the secret hidden features!
How do I uninstall TortoiseCVS?

What is TortoiseCVS?

TortoiseCVS lets you work with files under CVS version control directly from Windows Explorer.

Why don't the icon overlays appear?

Why do the overlay icons sometimes change to random graphics?

The Windows icon cache is a fairly buggy creature. You can solve this in one of the following ways:

Yeuch! Those icons are grotesque, I want better ones!

You can download three contributed sets:

Barracuda - from the folk who make Barracuda for Enhydra
Cosmin - from Cosmin Smeu
Timo - from Timo Kauppinen

To install them, you need to work somewhat to persuade the dodgy Windows icon cache to refresh itself. Either use TweakUI to rebuild the icon cache, or do it manually yourself:

The default icons were carefully chosen to be visible on top of other icons. Their main flaws are that they are ugly, useless to colour blind people, and the conflict icon is too similar in colour. However, they are always visible, even in small icon view in Explorer, and even when the file has a complex icon of its own.

If you make your own set, or improve one of the existing sets, then please send them to me. I would love to change the default icons that come with TortoiseCVS, but will need a bit more persuading that a particular set is good before I do so.

Ooops! I accidentally removed a file, and now it's gone!

You can find the file in your recycle bin. Or just choose Undo Delete (Ctrl+Z) from Explorer's Edit menu.

When I remove a file it vanishes, how do I commit it?

Easy, you commit the whole directory! Right click in the Explorer window next to the file, and choose commit. I nearly always commit things from the top level directory - it is recursive through the whole project.

How do I discard a change, reverting to the version in the repository? (Undo Checkout in Sourcesafe)

Delete the file, and then right click on the directory that it was in and do CVS Update. You can revert all your changes by deleting all the files and folders in a directory (except the special CVS folder) and doing CVS Update on the directory.

Can you recommend an external diff program?

The freeware ExamDiff is brilliant, and works well with TortoiseCVS. The open source WinMerge is also great, and I'd like to include it with TortoiseCVS at some point. If you need different diff programs for different file types (one for text files, one for binary word processor documents...) you should use meta-diff.

How do I change the external diff program?

After you've selected the diff program for the first time it isn't obvious how to change it. Hold down Control while you click on the CVS Diff menu option.

Can I mix and match with WinCVS or the command line?

Yes, you can check out a module with WinCVS and use it in TortoiseCVS or vice versa. If you've installed a command line client you can also mix with that. The only thing you can't do is work on a repository that was checked out in Unix, because of carriage return/line feed incompatibilities in the CVS/* files.

Can I work on lots of modules from different repositories at once?

Yes, you can. This is a standard feature of CVS. Each directory which was checked out of CVS remembers where it came from (look at the files in the local subfolder called CVS to find out how). You can even multiply select modules which came from different places, and update or commit them all at once.

Some people have been known to reboot between changing repositories to change their HOME environment variable. You do not need to do this!

SSH doesn't work, help!

It can be tricky to get SSH support working. Things to try are:

How do I make the SSH support less clunky?

It is a bit clunky at the moment. Whenever you perform a CVS operation, a DOS window will pop up. You must type your SSH password in there and press return. To avoid doing this, you'll need to set your home directory to somewhere useful (use CVS->Prefs), and generate SSH keys in there. Make them not protected by a pass phrase. Then upload your public key to the server. If you don't know what I mean, then either read the documentation for SSH on a Unix machine, or try using Plink from the next question.

Can I use Plink from the Putty suite of tools for SSH access?

You can use the excellent Putty suite of tools instead of the SSH which comes with TortoiseCVS. To do this copy Plink.exe to the TortoiseCVS folder, and rename SSH.exe to replace the SSH.exe that is there already. Important note: This only works if you make a Putty profile, and use that name as the server for checkout in TortoiseCVS. The profile must have an auto-login username. You probably want to run Pageant in the background so you only have to enter the passphrase once. Read the Putty documentation for more details.

What happened to exclusive locking or announcing edits?

TortoiseCVS doesn not currently support exclusive locking by either the new -c switch or by cvs admin. Nor does it support the various features for announcing that you are editing a file and watching for other editors. Contributions on this are welcome.

If you're on a small team and you have never tried working without these features, please give it a go. We've found the concurrent nature of CVS works very well.

How does TortoiseCVS handle binary files?

CVS can automatically merge text files if two people change them at the same time, but it doesn't do so with binary files. It simply says there is a conflict, gives you a copy of both files, and lets you rsolve it. Because of this you may want to use text files wherever possible. For example, use HTML or persuade Word to save as a text XML file.

TortoiseCVS tries to automatically detect whether a file is binary or text when you add it. Binary files are stored unchanged by CVS. Text files have their line end characters converted for different operating systems, and keywords expanded so you can easily tell who last changed a file and when. Sometimes TortoiseCVS can't confidently perform this automatic detection and it will ask you what type the file is.

If you want extra confidence than the automatic binary/text detection, read the section about binary files in the CVS manual. Then add an entry to the cvswrappers file to ensure files with specific extensions are stored as binary.

Can I customise the flags sent to CVS?

To some extent you can. Make a file in your home directory called .cvsrc. You can find where the home directory is by doing CVS->Prefs. The format of .cvsrc is explained here.

For example, if you want to use -F on all tag commands so it moves tags, add the line "tag -F" to .cvsrc.

Tell me about the secret hidden features!

There are some registry keys which turn on experimental features or help debug problems. All are under HKCU/Software/TortoiseCVS.

Show Changed Directories DWORD 1 - Enables highlighting of directories with changed files in them. This is really cool, but very slow, as it has to recursively scan each directory as it is rendered in Explorer.

Client Log DWORD 1 - Writes a record of transactions with the server to cvsclientlog.in and cvsclientlog.out in the TortoiseCVS directory. This is useful for debugging connection problems.

How do I uninstall TortoiseCVS?

Simply uninstall from Add/Remove Programs in the Windows control panel.

For versions older than 0-43, you have to manually uninstall. First remove the registry entries by double clicking on Unregister.reg. Then log off and back in again, reboot, or force Explorer to respawn itself. You can now delete the TortoiseCVS folder.

$Date: 2001/08/30 15:54:41 $