[cvsnt] Unable to access a renamed filed

Alastair Hoyle ahoyle at hoylesolutions.co.uk
Wed Sep 3 10:10:11 BST 2008

Hi Arthur

Thanks for you reply.
> The .directory_history,v and Command.c,v file you sent through appear to have
>  had the line endings modified, eg: by ftp'ing form unix in ascii mode.  It 
> is essential that you never ZIP or alter the line endings of these files.  I 
> was able to repair them for my own testing.
Sorry for that I am not sure how that happened, might be something to with how I
attached them.

>> C:\temp>cvs -q -f checkout -r 1.31 
>> MyRepo\ExecCommands .c cvs checkout: cannot find
>>  module `MyRepo/ExecCommands. c' - ignored
> Yes - this is the correct behaviour.  You cannot checkout a revision by it's
>  'new' name and revision number once it has been renamed, you need to use a 
> Tag, or branch or HEAD - using a 'date' should also work, but not 'revision 
> numbers' - the reasons are complex - it could be overcome in the code but 
> I've not time to do it for 2.5.04.
Yes I can check out using dates, but I am not sure how to checkout from a branch 
with this, I will have to read the manual.

>> C:\temp>cvs -q -f checkout MyRepo\ExecCommands.c 
>> cvs checkout: cannot find module 
>> `MyRepo/ExecCommands. c' - ignored
> OK - this would be wrong - but I cannot reproduce it, ie: this works OK for 
> me:
I have tried this again and it still fails for me, but it is linked to the
cvsroot environment variable you mention below. When cvsroot is set to
"C:\CVSROOT" or ":local:C:\CVSROOT" it fails but it works when it is set to
":sspi:localhost:/CVSROOT". I will have to go and read the manual again!

As I previously mentioned.
> However, when I now try to manually checkout any version of Command.c (the 
> old name) it fails with a "is not (any longer) pertinent" warning.
This problem also seems to be related to the CVSROOT variable. When set to
"C:\CVSROOT" the following command generates an error, but when set to
":sspi:localhost:/CVSROOT" it work OK.

C:\cvs checkout -r1.30.2.2 -dtemp MyRepo\Command.c

>> Repository is C:\CVSRoot
> I hope you are not using this as your CVSROOT?  This is the "local" protocol
>  and is for internal development use only, your CVSROOT should be something 
> like :sspi:user at host:/repo
Yes I was. I am only running CVS on a single PC. I have an environment variable
CVSROOT which was set to "C:\CVSRoot". However, Tortoise had sent the ROOT file
in the modules CVS directory (in my sand box) to ":local:C:\CVSROOT". I have now
changed my environment variable to ":sspi:localhost:/CVSROOT". I am not sure if
I should manual change all the Root files in my sand box too?

> Is this the client and the server version? Can you retest using 2.5.04 Build
>  3125 as both client and server and using the -d to set a client/server 
> protocol and try again and send the results?

C:\temp>cvs -d :sspi:localhost:/cvsroot ver
Client: Concurrent Versions System (CVSNT) 2.5.04 (Zen) Build 3125 (RC 8) (clien
Server: Concurrent Versions System (CVSNT) 2.5.04 (Zen) Build 3125 (RC 8) (clien

For now I will continue to use the revision tag and old name to manually 
checkout older version of my file for comparison.

Since I have only renamed one file, is it possible of hack the repository to 
permanently change the file name? I would like to keep all the revision history, 
but would be happy to refer to the file by its new name even in very old 
versions. Could I just rename the .v file and do a search and replace on the 
directory and history files?

Thanks again for all your help

Alastair Hoyle

More information about the cvsnt mailing list