[Looks like a real bug. This situation should be a conflict, and the user should need to resolve it. Based on this description, the current behavior seems particularly broken (if in fact it is resurrecting a file without bringing it out of the Attic). This case is fairly similar to conflicts2-142b2 through conflicts2-142b11 in the testsuite, it seems to differ only in terms of which user succeeds in committing first. Would be nice to take the list of cases in the "join" test, and make a list of how each case is dealt with in the context of parallel development via working directories (that is, which sanity.sh case tests it and so on). -kingdon] Date: Thu, 14 Jan 1999 23:36:16 +0000 From: Jeremy Van Grinsven To: bug-cvs@gnu.org Subject: Error caused by removing a file and someone else changing it I came accross what I think is an inconsistance in CVS. If in the same module one person removes a file and commits and another person changes the same file and does an update. Then CVS tries to merge in the difference between the last real version in CVS and the dead version, which is nothing, into the changed file. The resulting file is locally-modified and committable. After the file is committed, a new version is created but can't be retrieved by an update. I think that if a file is changed that has been removed there should be a warning during an update and not allow it to be committed. Output to demonstrate problem: + mkdir test + cd test + echo foo > file1 + cvs import -m '' test VENDOR v1 N test/file1 No conflicts created by this import + cd .. + rm -rf test + cvs checkout test cvs server: Updating test U test/file1 + cvs checkout -d test2 test cvs server: Updating test2 U test2/file1 + cd test + cvs rm -f file1 cvs server: scheduling `file1' for removal cvs server: use 'cvs commit' to remove this file permanently + cvs commit -m '' file1 Removing file1; /CM/cvs/test/file1,v <-- file1 new revision: delete; previous revision: 1.1.1.1 done + cd .. + cd test2 + echo more foo >> file1 + cvs update cvs server: Updating . RCS file: /CM/cvs/test/Attic/file1,v retrieving revision 1.1.1.1 retrieving revision 1.2 Merging differences between 1.1.1.1 and 1.2 into file1 file1 already contains the differences between 1.1.1.1 and 1.2 + cvs commit -m '' file1 Checking in file1; /CM/cvs/test/Attic/file1,v <-- file1 new revision: 1.3; previous revision: 1.2 done + cd .. + cvs -v Concurrent Versions System (CVS) 1.10.3 (client/server) Copyright (c) 1989-1998 Brian Berliner, david d `zoo' zuhn, Jeff Polk, and other authors CVS may be copied only under the terms of the GNU General Public License, a copy of which can be found with the CVS distribution kit. Specify the --help option for further information about CVS Jeremy Van Grinsven Jeremy.VanGrinsven@mci.com