This post will give some insight into the distributed version control ad the Distributed and Self-organizing Systems Group. Usually, I am keen about trying out new things, e.g. distributed version control systems such as GIT, Mercurial or Bazaar. However, currently the group’s infrastructure is set up with Subversion as internal revision control system.
For the next few months we will start an evaluation phase with the students, working on the WebComposition/DGS approach, based on a distributed version control concept. Core components of the WebComposition project are branched into a dedicated student branch where all students can commit changes. Based on this branch each student creates his or her private branch for local changes.
The coordinator (usually some DSS staff) takes care of regular forward integration of the core components into the student branch. Each student in turn is responsible for forward integration into his or her own branch.
Changes can be submitted after testing and evaluation back into the central student branch by each student performing backward integration. The group working on the project has to agree in the LAKS meeting on the change before backward integrating the updates.
The coordinator finally takes care if these changes are also backward integrated into the original project trunk.
Step 1: Create a local working copy
First, look for a place where to checkout the working copy. Create a folder, e.g. branchesstudents and use Tortoise to checkout a working copy.
Select the student branch and the local folder where to store the working copy to start the checkout.
After the checkout is finished, you should will have a local working copy of the student branch.
Step 2. Create a private branch
Select ‘Branch/tag’ from the context menu of your working copy.
Use the path of your private project within the repository to create the branch.
Step 3: Forward integrate changes from the student branch
When the student branch was updated you might be interested in getting these updates into your private branch. To forward integrate these changes into your private branch, select the folder where your local working copy lives, and use the Tortoise context menu to select ‘Merge…’.
Select the repository folder you want to forward integrate Probably this will be the student branch – the paths in the screenshot below will thus differ from yours. Select the revision from where the forward integration should start. Now select the revision where it should end. Usually, this will be the head revision. After merging submit the changes of your working copy to the repository and you are done.
To get some more information on Subversion, or to learn how to perform the steps above on command line, refer the Subversion book.