Branch Development
VisIt provides several scripts that automate the creation of branches using svn. The following table lists the desired action and the script or svn commands needed to accomplish the action.
What you want | How you do it |
---|---|
To create a branch from the mainline (i.e. ClearCase mkdev) | Script: mk_branch_from_trunk |
To checkout the branch directory (i.e. ClearCase ct setview -login) | Script: co_branch
|
To bring in changes that were put on the mainline / trunk | Script: merge_trunk_to_branch |
To bring in changes made directly on your branch that occurred after the checkout. One example of a change of this type would include you doing work on another machine on this branch, doing a commit, and then wanting to pick up these change. Another example would be if another developer was collaborating on this same branch. Outside of these examples, you probably will not need this use case. | SVN command: svn update |
To check in your changes to your own branch | SVN command: svn commit
|
To merge your changes to the trunk. (The result of this step is files modified on your trunk. You then must review the changes.) | Script: merge_branch_to_trunk
|
To commit the changes from the merge (after being reviewed) | SVN command: svn commit
|
To destroy the directory corresponding to your branch in the SVN repository. | Script: del_branch |
To remove the directory on your personal file system that was a checkout of a SVN branch. | Unix command: rm -Rf |
Example
Here is the procedure for making a change to the code using branch development. These are the exact commands you would use for branch development.
What I typed | What it did |
---|---|
% mk_branch_from_trunk tube_changes | Created a directory in the branches directory of the SVN repo for me to make my changes. |
% co_branch tube_changes src/operators/Tube | Checked out the directory "Tube". It was placed in $PWD/tube_changes/Tube |
% cd tube_changes/Tube ; xml2makefile Tube.xml ; make ; vi avtTubeFilter.C | Did some development on that directory |
% svn status
Output is: "M avtTubeFilter.C" |
See what files have changed during my development on this branch. |
% svn commit -m "Add small changes to Tube operator" | Commit my changes to the repo. These changes only affect my branch. |
Optional: merge_trunk_to_branch | This merges the trunk into the branch. You need to do this as often as you merge the mainline to your personal view in CCase. |
% cd ~ ; co_trunk /src | Go to a check out of the trunk. When merging, you have to be inside of a directory that you merge into. (This is because it needs a place to put temporary files when there are merge conflicts.
|
% merge_branch_to_trunk tube_changes | Merges the changes from tube_changes into the trunk. |
% svn commit | Commit the changes on your working copy of the trunk to the Repo. |
You're done. Send e-mail to team, etc. |
Using multiple machines
With branches, you can do development on multiple machines simultaneously. The motivation may be to do cross platform work, or it may be because you are doing development at home and also at work and want to share the results between the machines.
Here are the steps:
- mk_branch my_multi_machine_work
- Go to machine 1.
- co_branch my_multi_machine_work /src
- Go to machine 2.
- co_branch my_multi_machine_work /src
- Do work on machine 1.
- svn commit
- Go to machine 2.
- svn update
- Repeat as necessary.
If you are doing cross platform work and you want to share data between the two builds:
- Go to a shared directory between the machines.
- co_branch my_cross_platform /data
- Then machine 1 and machine 2 can access the data.