The first port on cvs on Windows was done by Cyclic Software and is excellent. Why ?
Because they ported also the server and local capability and made a great work to deal
with the non-case sensitive Windows file system.
Except some hacks inside the cvs code to take advantages of the cvs features,
WinCvs does not change the cvs source code : all it does it is to compile
cvs as a dll (Dynamic Linked Library).
You will find inside WinCvs a set of commands (all have a on-line help entry)
that you can use to manage source repositories.
WinCvs looks like that :
- An ouput console : you see all the messages of WinCvs, cvs client
and cvs server so you can control that everything is going fine.
- A preferences dialog : the CVSROOT, authentication...
- A set of common menu commands (Copy, Save, Paste...).
- A set of cvs menu commands.
- A line commands dialog provided when the menu command is not avalaible.
You have to be very carefull about the usage of binary files : read the
cvs documentation carefully.
WinCvs provides two ways to add files to a repository :
- Add files...
- Add binary files...
WinCVS now supply some controls when adding files : that's because many user make mistakes
when adding files and forget to add "as binary" when the file is binary. It will warn
you if you are about to make a mistake.
The import command in cvs should be seen as inconsistent since it imports initially
all the files as text files (so it makes a line feed conversion between the client
and the server).
When the initial import is done and all the binary files have the binary attribute,
the server and the client agree to not convert this files and everything is working finely.
So the problem appears ONLY during the first import, and cvs user know that the
initial import is THE main difficulty with cvs.
Happy-fully, there are some turn-around :
- Make the initial import directly from the cvs server machine
(for now on Unix or Windows platforms). But be careful with the line feeds
automatic translation when you copy files from and to !
- Use the cvs wrappers file to mark extensions as binary. But you'll still not be
able to import from the client since all the files are initially transfered as text
to the server.
- Use the -W option of cvs import : the problem is that you have to figure
yourself all the extensions to map to a binary format (the -W option works this way :
you can tell cvs that an extension, .gif for example, represents a set of binary files).
My experience shows you can make a lot of errors this way.
That's why the WinCVS port was implemented for :
- Using the import command of the WinCVS client, you'll be able to have a
dialog which tells you the current binary mapping and let you modify it. It detects
also a lot of common errors and sometimes warn you about something you may care about.
- When you hit continue, WinCVS will prepare automatically the line command
to cvs with the binary wrappers you want to use.
- Finally you can import safely. Both the client and the server will know exactly
which files are binary and which one are text.
- Be sure to be familiar with the
import problem.
- Set in the preferences the CVSROOT and the kind of authentication.
- Use the online-help avalaible on most of the menu entries or dialogs by
clicking on the arrow located on the right of the toolbar which enables
a sensitive help.
The WinCvs port consists in :
- A dll which contains the cvs code
and mimic the cvs command line. This architecture allows to re-initialize the
globals of cvs as well to separate really the implementation of the client and cvs.
- A MFC application which implements a UI, a console and call
the dll to make the stuff.