(This began as a copy of WorkingWithCVSBranches; bear with us as we update it to reflect SVN)
Starting Work on an Existing Branch
- checking out a specific branch of MODULE into DIR
Making Your Own Branch
- 1. Copy the trunk to a new branch:
svn copy https://svn.sourceforge.net/svnroot/inkscape/inkscape/trunk https://svn.sourceforge.net/svnroot/inkscape/inkscape/branches/MY_BRANCH_NAME
- 2. Checkout this branch:
svn checkout https://svn.sourceforge.net/svnroot/inkscape/inkscape/branches/MY_BRANCH_NAME inkscape-MY_BRANCH_NAME
Merging Your Changes
TODO: Update for svn.
- 1. Commit your work and resolve any conflicts
- 2. Tag the revisions for this merge
cvs -z3 tag BRANCH_MERGE
- 3. Switch your working copy back to the branch you want to merge to (HEAD is the default if you don't specify a branch with -j)
cvs -z3 update -PAd -r OTHER_BRANCH
cvs -z3 update -Pd -j BRANCH_START -j BRANCH_MERGE
- 5. Check for any conflicts and commit the changes
If you want to work on BRANCH some more, you'll need to switch your working copy back to BRANCH again.
For future merges, you'll need to tag the revisions for those merges with unique tags (e.g. BRANCH_MERGE_2, BRANCH_MERGE_3, etc...), and only merge the changes between the previous merge and the new one.
This is so you don't end up merging the same set of changes twice. Example:
First merge: -j BRANCH_START -j BRANCH_MERGE Second merge: -j BRANCH_MERGE -j BRANCH_MERGE_2 Third merge: -j BRANCH_MERGE_2 -j BRANCH_MERGE_3