CVS Experts,
I am working w/ a team that has been misusing CVS for code management for the past year, and I am trying to straighten things out.
Instead of using branches and tags against a single code mainline, the team has been creating a new code repository for each new internal release and/or code freeze point. So CVSREPO contains multiple repositories like:
App-1_0_0_1
App-1_0_0_2
App-1_0_0_3
App-1_0_0_3_1
App-1_0_0_4
App-1_0_0_4_1
...
App-1_0_0_4_3
The current working "mainline" is in App-1_0_0_4_4.
What I am trying to do is reconstruct the project history accurately into a single repository w/ App-1_0_0_1 as the starting point. Then I want to create a branch for each of the above repositories and import the respective repository into that branch.
So I wish to do the following:
1. Create a release branch RB-1_0_0_2 off the mainline that contains the identical codebase that is currently isolated in App-1_0_0_2.
2. Establish a release tag along this branch, REL-1_0_0_2, to reflect a snapshot of the code that was deployed to a customer.
3. Merge the released code back into the mainline.
4. Create another branch for the next release, and so on.
QUESTION: What is the best approach in CVS for accomplishing my goal?
REQMT: It is essential that the resulting mainline HEAD be identical to the current App-1_0_0_4_4 working repository.
REQMT: It is essential that each of the release branches be identical to the code in the corresponding orphan repository App-1_0_0_x. (sidebar - does anyone know how I can diff two separate cvs repositories with each other?)
Here's what I have tried:
1. Creating a release branch, and then manually overwriting the code in the branch w/ the code in the App-1_0_0_x in the file system. Then commiting the changes in CVS. This approach is highly manual, and very error prone.
2. Using cvs -ko import... to create a new branch as if the App-1_0_0_x code is "vendor" code. I'm not certain what the behaviors will be when I merge this branch into the mainline. I would really like for deleted files and directories in the branch to also be deleted in the mainline. I'm not confident that this approach is right, or will produce the results I want.
Any recommendations would be greatly appreciated.
Cheers,
Ken
I am working w/ a team that has been misusing CVS for code management for the past year, and I am trying to straighten things out.
Instead of using branches and tags against a single code mainline, the team has been creating a new code repository for each new internal release and/or code freeze point. So CVSREPO contains multiple repositories like:
App-1_0_0_1
App-1_0_0_2
App-1_0_0_3
App-1_0_0_3_1
App-1_0_0_4
App-1_0_0_4_1
...
App-1_0_0_4_3
The current working "mainline" is in App-1_0_0_4_4.
What I am trying to do is reconstruct the project history accurately into a single repository w/ App-1_0_0_1 as the starting point. Then I want to create a branch for each of the above repositories and import the respective repository into that branch.
So I wish to do the following:
1. Create a release branch RB-1_0_0_2 off the mainline that contains the identical codebase that is currently isolated in App-1_0_0_2.
2. Establish a release tag along this branch, REL-1_0_0_2, to reflect a snapshot of the code that was deployed to a customer.
3. Merge the released code back into the mainline.
4. Create another branch for the next release, and so on.
QUESTION: What is the best approach in CVS for accomplishing my goal?
REQMT: It is essential that the resulting mainline HEAD be identical to the current App-1_0_0_4_4 working repository.
REQMT: It is essential that each of the release branches be identical to the code in the corresponding orphan repository App-1_0_0_x. (sidebar - does anyone know how I can diff two separate cvs repositories with each other?)
Here's what I have tried:
1. Creating a release branch, and then manually overwriting the code in the branch w/ the code in the App-1_0_0_x in the file system. Then commiting the changes in CVS. This approach is highly manual, and very error prone.
2. Using cvs -ko import... to create a new branch as if the App-1_0_0_x code is "vendor" code. I'm not certain what the behaviors will be when I merge this branch into the mainline. I would really like for deleted files and directories in the branch to also be deleted in the mainline. I'm not confident that this approach is right, or will produce the results I want.
Any recommendations would be greatly appreciated.
Cheers,
Ken