Cvs 1.10.5, NT version (from WinCVS).
Repeat by:
1. Create a new repository.
2. Import some files.
3. Tag it (reorganization).
4. Branch it (newfiles).
5. switch to branch (update -r newfiles)
6. Edit. Add files. Remove files.
7. commit.
8. Back to parent (** user error here triggers CVS problem **)
cvs update -r reorganization -j newfiles
(* Should have actually been update -r 'vendor-branch-name' -j newfiles *)
Result at this point: Files that were added at the lower level are inconsistent.
$ cvs status GADBE*
===================================================================
File: GADBEc.h Status: Locally Modified
Working revision: 1.1.1.1 Result of merge
Repository revision: 1.1.1.1 /lab/CVS/GANModels/GADBEc.h,v
Sticky Tag: reorganization (revision: 1.1.1.1)
Sticky Date: (none)
Sticky Options: (none)
===================================================================
File: GADBEc.m Status: Locally Added
Working revision: New file!
Repository revision: No revision control file
Sticky Tag: reorganization - MISSING from RCS file!
Sticky Date: (none)
Sticky Options: (none)
9. Attempt to commit at this point (this was when I discovered the wrong parent
branch).
Commit will fail, saying "reorganization isn't a branch" (accurate).
10. Attempt to fix with:
$ cvs update -r michael -j newfiles
cvs update: Updating .
M GADB.h
RCS file: /lab/CVS/GANModels/GADB.h,v
retrieving revision 1.1.1.1
retrieving revision 1.1.1.1.2.1
Merging differences between 1.1.1.1 and 1.1.1.1.2.1 into GADB.h
A GADB.m
cvs update: file GADB.m exists, but has been added in revision newfiles
(this then repeats for everything that was added).
11. At this point, my status is:
$ cvs update
cvs update: Updating .
M GADB.h
A GADB.m
M GADBBrokeBatchFault.h
A GADBBrokeBatchFault.m
M GADBControl.h
M GADBControl.m
...
$ cvs status GADBE*
===================================================================
File: GADBEc.h Status: Locally Modified
Working revision: 1.1.1.1 Result of merge
Repository revision: 1.1.1.1 /lab/CVS/GANModels/GADBEc.h,v
Sticky Tag: michael (branch: 1.1.1)
Sticky Date: (none)
Sticky Options: (none)
===================================================================
File: GADBEc.m Status: Locally Added
Working revision: New file!
Repository revision: No revision control file
Sticky Tag: reorganization - MISSING from RCS file!
Sticky Date: (none)
Sticky Options: (none)
Note the status of GADBEc.m. It was added on the child branch. The user-error
update information is still around.
12. Attempt to recover by going back to '-r newfile' and start over.
$ cvs update -r newfiles
cvs update: Updating .
RCS file: /lab/CVS/GANModels/GADB.h,v
retrieving revision 1.1.1.1
retrieving revision 1.1.1.1.2.1
Merging differences between 1.1.1.1 and 1.1.1.1.2.1 into GADB.h
GADB.h already contains the differences between 1.1.1.1 and 1.1.1.1.2.1
cvs update: conflict: GADB.m has been added, but already exists
C GADB.m
...
repeating for each new file.
At this point, I cannot commit or update into any stable situation.
Note also: I got into this problem of nested branches without ever nesting a
branch on my own -- I did "import", which (I thought) would give me version 1.1,
and I branched that (the trunk). Instead, I branched off the vendor branch.
Ideas? (other than nuke the CVS dir and re-import?)