I have been involved in converting our source code repository in Visual
Source Safe (VSS) to CVS and would like to share my experiences. In the
process, I did find one difference in the format of ",v" files about which I
have a question. Below is a summary of what I did and I would appreciate
feedback/responses to my query.

Objective:
=======
Entire source code tree of one of our projects has been maintained in VSS
and it was decided to use CVS as the version control system as we move to
production and continue our work. It was important not to lose developmental
history (old versions, labels) in VSS. VSS database instance was loaded onto
my local m/c (Windows XP). CVS server was on Linux and was CVS 1.11.2.

Solution
======
After researching on internet about user experiences in this kind of
activity, I decided to use 'VSS2CVS' application from
http://sourceforge.net/projects/vss2cvs.
which is a C# application on .NET platform. It connects to the VSS database
using Microsoft's OLE interface for VSS and generates a local CVS
repository. I used CVSNT as my local CVS server. Once I performed the
conversion, on my local machine, I checked out from local repository and
compared with latest version from VSS and verified that the conversion was
faithful for all files, including binary files.

Problem
=======
Since the ultimate destination was CVS 1.11.2 on the CVS server, I zipped
the CVSROOT folder, including all the ",v" files and installed them on CVS
server. When I repeated the comparison exercise above, it failed for several
binary files. I discovered that this was because RCS keyword expansion was
happening for these binary files. Upon further investigation, in CVSNT, in
the ",v" files, 'kopt -b' is indicative and prevents keyword substitution
upon checkout, whereas, in CVS 1.11.2, 'expand @b@;' in the header section
was is what is indicative of binary file. See below:

*head 1.1*
*access;*
*symbols *
*              .....*
*              ......*
**
*              etc.*
**
*locks; strict;*
*comment @# @;*
**
**
*1.1*
*date     2008.05.02.04.12.08;          author   xxx;         state Exp;*
*branches;*
*next      ;*
*deltatype   text;*
*kopt    b;*
*permissions         666;*
*commitid             ...;*
*filename              ...;*
**
*....*


The same file in CVS 1.11.2 is

*head 1.1;*
*access;*
*symbols*
*                   ....*
*                   ....*
*                   etc*
*locks; strict;*
*comment @# @;*
*expand   @b@;*
**
*1.1*
*date .. *


Can someone throw some light on the change in this file format? Apart from
this what other changes are there in the ",v" file format between CVSNT and
CVS? Is the CVSNT format matching the format in later versions of CVS (say
1.11.12 or 1.12.13 etc)?

Thanks,
Vinod Damaraju

Reply via email to