Mon 26 May 2008 10:26:43 PM UTC, original submission:
In the example below I will demonstrate that the cvs "locks" functionality will be wrongly cleared by CVS version 1.12.13, when the same user who did the lock (using cvs edit) later does a "cvs checkout" or "cvs export".
Since such additional "cvs export" operations easily can be a part of daily operations it is a very destructive bug in CVS. Especially problematic it is for non-mergeable files, when a multi-site CVS work group is using "cvs watch on+cvs edit" to signal, who is working where.
Operations as user "pto" who makes a watch+edit
-----------------------------------------------
$ cvs checkout my_proj
... lots of check out lines...
$ cd my_proj
$ cvs watch on README.txt
$ rm README.txt
$ cvs update README.txt
$ ls -l README.txt
-r-r--r-- 1 pto pto 6 2008-05-26 23:41 README.txt
$ cvs editors README.txt # No files will be shown since no files are locked
$ cvs edit README.txt
$ cvs editors README.txt # Good I can see pto is locking "README.txt"
README.txt pto Wed May 7 06:43:15 2008 -0000 myworkstation /opt/cvsroot/my_proj
Operations as another user "joe"
--------------------------
$ cvs checkout my_proj
$ cd my_proj
$ cvs editors README.txt
README.txt pto Wed May 7 06:43:15 2008 -0000 myworkstation /opt/cvsroot/my_proj
# Good I can see pto is locking "README.txt" - no problems
Operations as user "pto"
--------------------------
$ mkdir MY_SECRET_PLACE_OR_SOMEWHERE_ELSE
$ cd MY_SECRET_PLACE_OR_SOMEWHERE_ELSE
$ cvs checkout my_proj
$ cd my_proj
$ cvs editors README.txt
# WHAT THE... ??? - the lock on my_proj/README.txt is gone.... :-((
Note that the same problem exist when you replace the
second "cvs checkout" with "cvs export"
In the example above after "cvs edit README.txt" both
$CVSROOT/my_proj/CVS/fileattr and my_proj/CVS/Baserev show that
the file is being edited, after doing another cvs co
$CVSROOT/my_proj/CVS/fileattr does not show the file being edited
anymore but my_proj/CVS/Baserev does -> thus we have a mismatch.
Change wish:
------------
The "correct" operation by CVS would be NOT to clear the CVS locks, when doing more than one "cvs co" or "cvs export" by the same user.
|