Our team has come across what appears to be a bug in CVS when accidentally committing to a removed file. Here's the scenario: Developer A checks out the module, foo, and begins editing file a.C At the same time Developer B also has a current version of the module checked. Developer B plans to remove the file a.C with the cvs remove command and then the cvs commit command in the usual fashion. At this point, the command > cvs log a.C will show the file status is dead. However, if Developer A updates a.C and commits his changes (which is all legal in 1.10), the file now has a status of Exp even though it resides in the Attic directory. Generally all is well, if perhaps a bit inconsistent. However if a third developer, Developer C, checks out the module with a sticky condition, for example: cvs checkout -D "6/15/2000 1:00 AM" foo (which is before file a.C was moved to the Attic), the file a.C is checked out and all is as it was at the specified time. However, if Developer C then clears the sticky date with cvs update -A, the file a.C persists even through it is no longer supposed to be in the module, foo. It appears that update checks the status of the file. Seeing that it has a status of Exp, cvs considers the file active. However, the file status should be dead as it is no longer in the module, despite the changes put in by Developer A. We recently ran afoul of this conditions and experienced some rather tense moments until this situation was diagnosed. Our plan is to set up guard scripts to disallow commits to any file that resides in the Attic. Thus, all files in the Attic will have a status of dead, avoiding the above scenario. Furthermore, from the perspective of our development approach, committing to a dead file should not be allowed. If the algorithm contained in the removed file is still significant to the project, it has been moved elsewhere and it is up to the developers to integrate the edits in appropriately otherwise the changes should be discarded. This concept of operation may not coincide with the general approach envisioned by the developers of CVS (i.e., a dead file is really dead and can't have changes committed to it). In this case, our "bug" is an irritant for us but not really a bug. Alternatively, it seems that the file in the Attic should never be revived to an active status (e.g., Exp) without going through the cvs add procedure. Simple edits should not induce a status change. Only the commit following and add or remove should do this. We felt that this is a subtle but potentially dangerous set of events and wanted you to be aware of it. Sincerely, Michael Wong
begin:vcard n:Wong;Michael tel;fax:(505) 844-0918 tel;work:(505) 844-5091 x-mozilla-html:TRUE org:Computational Physics R & D Department version:2.1 email;internet:[EMAIL PROTECTED] title:Senior Member of the Technical Staff adr;quoted-printable:;;Sandia National Laboraties=0D=0AP. O. Box 5800, MS 0819;Albuquerque;NM;87185-0819;USA x-mozilla-cpt:;16688 fn:Michael Wong end:vcard