TortoiseCVS lets you work with files under CVS version control directly from Windows Explorer. It's freely available under the GPL -
you can copy it, modify the source code, or even sell it, as long as you
make any changes to the source code available. It is heavily based on the
source code for WinCVS, a very
comprehensive Windows client for CVS.
With TortoiseCVS you can directly check out modules, update, commit and see differences
by right clicking
on files and folders within Explorer. You can see the state of a file with overlays
on top of the normal icons within Explorer.
It even works from within the file open dialog.
You can perform tagging, branching, merging and importing, and you can go directly to a browser web log (using ViewCVS or CVSWeb) on a particular file.
However, there are lots of CVS things that you can't do with TortoiseCVS - have a look in the enhancements section of the bugs database below! If you would like to help implement some features, please see the development section.
Experience of CVS is probably necessary to make the best of TortoiseCVS at the moment.
DISCLAIMER: Like most software (even software that you pay for), TortoiseCVS comes with no warranty. Only you are responsible for any loss of data. Saying that, I use it every day with valuable data, and have had no problems which might cause loss of data. Most functionality uses the cvs2ntlib.dll which comes with WinCVS. So if you trust WinCVS, it might be sensible to trust this.TortoiseCVS works under Windows 95, 98, ME, NT and 2000.
Stable - TortoiseCVS
version 0-43 - 1.1Mb - 11th June 2001
Stable (old) - TortoiseCVS
version 0-41 - 1.0Mb - 23rd Febuary 2001
Quick installation: Run the download executable to install. You should read the FAQ for information to get icon overlays on NT/95.
You can read the change log here. For the very latest changes, you'll have to get a version from CVS and compile it yourself (see development).
Release Schedule: Unusually, TortoiseCVS has a "proven stability" release schedule. When a new release is made it is marked as "testing" on the download page, and over the next few weeks it is tested by several hundred people. If there are no serious problems with it then the exact same file is relabled as "stable".
SourceForge project -
TortoiseCVS is in the CvsGui project
Browse the source code online
Anonymous CVS access - the module to retrieve is called TortoiseCVS
Please email me for full CVS access
TortoiseCVS is an interesting program. It is the most Windows of things,
an Explorer shell extension implemented as several OLE classes. It is also
the most Open Source of things, with a wxWindows interface, GPL license and because it is a CVS tool!
Because of this, it might take a small amount of effort to get it
compiling and to debug it. Please persevere as it's fun and rewarding!
If you get stuck then send me an email.
Here are some pointers.
Structure: TortoiseCVS consists of two programs. TortoiseShell.dll is the Explorer shell extension. TortoiseAct.exe actually does the work - it gets launched by the shell extension for each command that you activate.
Compiler: TortoiseCVS can be compiled with Visual C++ 6 or Borland C++ Builder using the supplied projects. There is a Makefile for Mingw32, which would probably work with Cygwin as well. I've only used it to cross-compile TortoiseAct under Linux, and had problems with the STL crashing during memory allocation. TortoiseAct.exe can be compiled with Visual C++ 5, but TortoiseShell.dll can't because of a missing shell interface in the shipped header files. Patches to improve building with different compilers are welcomed. If you do get something to work better, please mail me.
wxWindows: You will need to download the GUI library wxWindows to compile TortoiseAct. This is a cross-platform library, but in TortoiseCVS it isn't used for that reason. It is used because it is much easier to code in than raw Win32 or MFC calls. TortoiseAct links statically to wxWindows. It's best to globally tell Visual Studio about the wxWindows libraries and header files from the Tools|Options|Directories page.
You need to compile the wxWindows source code to make the libraries, but this is easy to do. When you compile wxWindows with Visual C++, make sure you set these values:
wxUSE_DEBUG_NEW_ALWAYS to 0
wxUSE_IOSTREAMH to 0
wxUSE_MEMORY_TRACING to 0
wxUSE_GLOBAL_MEMORY_OPERATORS to 0
Otherwise wxWindows is incompatible with templates, and adds memory debugging features that Visual C++ has already anyway. To set the values, edit the configuration file as described in the wxWindows installation instructions.
I use the CVS head version of wxWindows, which means that some bugs have been fixed which won't be fixed in an older release version. TortoiseCVS should still compile, but it may not be as good a version as the one that I make. Of course, this can work the other way as well - there may be more bugs in the CVS version!
TortoiseAct Parameters: TortoiseAct.exe takes some parameters. You can use these when you run it in the debugger. The first is the verb to execute. e.g. CVSCheckOut, CVSDiff. The following parameters are the filenames to perform the action on. Alternatively, you can use -f and then specify a file. The file contains a list of the files to perform the action on, one on each line. You can also pass a window handle with -h. This is used for refreshing the Explorer view after changes, and for the properties dialog updating.
Running DLL: It's not easy running a shell extension. Where possible, do
all your debugging in TortoiseAct.exe. When you change TortoiseShell.dll, you'll want
to link it directly to the place where TortoiseCVS
is installed. Unfortunately, if Explorer is already loaded you won't be
able to overwrite the DLL file. There are several ways round this.
Another trick that you might find useful in Visual C++ is
to add an ASSERT(false) near where you want to start your debugging.
When the assert dialog pops up, press Retry then Cancel and the debugger will
attach. If that doesn't work, try explicitly attaching the debugger to the process before
pressing Retry.
CVSGlue: There's a separate CVSGlue project in the CVSGlue folder.
This is for testing lots of the TortoiseCVS code without messing up
TortoiseAct, or fiddling with Explorer. Simply edit main.cpp to run the appropriate
tests that you need.
Things to Do: There are quite a few things to do. Search for TODO in the source code to find some glaring holes. Or read the
Bugzilla bugs database.
Patches: I welcome any additions or bug fixes that you make! Please
remember though that TortoiseCVS is meant to have a simple interface. Options
should be as unobtrusive and internally clever as possible.
Mail to: TortoiseCVS mailing list
(or find my address on Francis Irving's web page)
$Date: 2001/08/04 02:36:17 $