bug-cvs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Bug on cvs commit v1.11


From: Pierre CETEAUD
Subject: Bug on cvs commit v1.11
Date: Tue, 6 Feb 2001 11:28:41 +0100

My analyse of the problem was wrong, as I confused *rcsnode and rcsnode

The error was : Assertion failed: *rcsnode == NULL, file
/u/scjones/cvs-nightly/src/commit.c, line 2056
I've got this explanation :

>This assertion failure means that CVS was trying to create a brand new
>RCS file because the file being checked in appeared to be newly added,
>but there's already an RCS file associated with it.  It might be useful
>to know what ``cvs status'' says about the file in question.  It's
>possible that having an RCS file in the repository with no read
<permission could cause this to happen.

I've found the way to repeat this error :

It's happen from Windows when I remove a file and re-add it with a
different case
cvs, sometimes, things it's a new file (as on UNIX a different case means a
different file)
and sometimes things it's the same file (as Windows is not case sensitive)

copy con: File.txt
cvs add File.txt
cvs commit File.txt
cvs remove -f File.txt
cvs commit File.txt
copy con: file.txt
cvs add file.txt
     cvs server: re-adding file file.txt (in place of dead revision 1.2)
     cvs server: use 'cvs commit' to add this file permanently

cvs commit file.txt
     RCS file: /cvsroot/Client/PTIEe/_collection/file.txt,v
     done
     Assertion failed: *rcsnode == NULL, file  
/u/scjones/cvs-nightly/src/commit.c, line 2056
     cvs [server aborted]: received abort signal
     cvs commit: saving log message in C:\DOCUME~1\H60070\LOCALS~1\Temp\11


I found a workaround on the newsgroups :
Rename the file : attic/File.txt,v to the new case (attic/file.txt,v) before 
the last commit.

I analyse this error as bug :
  It happens on normal commands, and the work around is a direct change of the 
repository : not a normal command

There's three ways CVS could handle this case :
1)   Re-adding the file with the old case
2)   Re-adding the file with the new case
3)   Create a new file with the new case

CVS used to keep the old case of a file when you commit an existing file with a 
new case.
So today there is never two files with the same name but different case in the 
repository when you use CVS from Windows
I eliminate proposition 3)

At the first sight, we could say the proposition 1) keep the same behaviour
but choosing this solution would forbid thaving a file with a different case, 
and even under Windows the case of the files is sometime significant
(especially  when you use Unix native programs)

So I would prefer proposition 2) (which is the behaviour of the work around)
Deleting and re-adding a file with a new case would be the way to change the 
case of a file.
A warning should appear because this operation changes the case of the file in 
all versions.

Of course, we may image better solution :
4)   To have an history of the case of a file, we could create a new file with 
this history or
5)   CVS could consider files with different case as different files (when 
adding from windows)
I don't thing CVS should handle a new king of file in its repository only for 
Windows client and
the second solution need a lot of work to change the behaviour of the windows 
client in all commands (but has certainly to be studied for version
1.12, 1.2 or 2.0 of CVS)

So in a first time, I suggest to implement solution 2)
I'm of course volunteer to be alpha tester

     Pierre

***************************************************
Ce message a été contrôlé par un anti-virus.
***************************************************



reply via email to

[Prev in Thread] Current Thread [Next in Thread]