[cvsnt] How is cvs export supposed to work with -d and -N?

Bo Berglund Bo.Berglund at system3r.se
Thu Oct 9 10:05:25 BST 2003


Community technical support mailing list was retired 2010 and replaced with a professional technical support team. For assistance please contact: Pre-sales Technical support via email to sales@march-hare.com.


I am sorry but I am again trying to sort things out because we rely so heavily on the
export function for our release builds....

We are using CVSNT 2.0.8 on both server and client.
According to the Cederquist manual the export using the -d and -N flags should work as
follows (copied from Cederquist today, for export it refers to checkout for flag usage):

------------
-N 
Only useful together with '-d dir'. With this option, CVS will not "shorten" 
module paths in your working directory when you check out a single module. 
See the '-d' flag for examples and a discussion. 

-d dir 
Create a directory called dir for the working files, instead of using the module name. 
In general, using this flag is equivalent to using 'mkdir dir; cd dir' followed by the 
checkout command without the '-d' flag. 
There is an important exception, however. It is very convenient when checking out a 
single item to have the output appear in a directory that doesn't contain empty 
intermediate directories. In this case only, CVS tries to "shorten" pathnames to 
avoid those empty directories. 

For example, given a module 'foo' that contains the file 'bar.c', the command
'cvs co -d dir foo' will create directory 'dir' and place 'bar.c' inside. 
Similarly, given a module 'bar' which has subdirectory 'baz' wherein there is a file 'quux.c', 
the command 'cvs co -d dir bar/baz' will create directory 'dir' and place 'quux.c' inside. 

Using the '-N' flag will defeat this behavior. Given the same module definitions 
above, 'cvs co -N -d dir foo' will create directories 'dir/foo' and place 'bar.c' inside, 
while 'cvs co -N -d dir bar/baz' will create directories 'dir/bar/baz' and place 'quux.c' 
inside.
-------------

When we used the CVSNT version earlier than 2.0.0 (for example b72) this worked according
to the above description.
But now I get identical results when using and not using the -N flag:
All intermediate directories in the exported module are truncated with apparently
no consideration of the -N flag.

So using the above examples:
 'cvs export -r HEAD -d dir bar/baz'
and
 'cvs export -r HEAD -N -d dir bar/baz'

both yield the exact same result, namely that of the command without -N.

This has the complication that the files are placed directly inside 'dir' and when a second
export into the same folder follows (as it does for us) and this module also contains
a file by the same name (like readme.txt) then the export fails because the file already
exists.

This does not seem to be a correct behaviour, at least not when reading the Cederquist.

Are there any solutions to this? Has it already been fixed in 2.0.11?

We are hitting the wall here and probably need to also export an older cvs.exe together
with the first scriptfile such that for the following operations the older version is
used (which works according to the Cederquist):

1. Export old cvs.exe and the mainscript.bat file into a work folder
2. CD into the work folder
3. Call the mainscript.bat file which has *many* cvs export commands inside
 
But this seems to be such a cludge.....

Best regards,

Bo Berglund


More information about the cvsnt mailing list
Download the latest CVSNT, TortosieCVS, WinCVS etc. for Windows 8 etc.
@CVSNT on Twitter   CVSNT on Facebook