The Camel 2.x branches are here:
The idea is to be able to apply bug fixes to Camel 2.x maintenance branches (for example 2.8.x) while leaving new features and other API breaking stuff on the trunk. I think in most cases fixes will be happening on the trunk.
Using svnmerge.py script
I've set up svnmerge.py to track commits from the trunk to the 2.x branches.
Example workflow:
1. You just committed a fix to the trunk in revision 123456 and think that it would be back ported to Camel 2.8.x users
2. Check out the branch
svn co https://svn.apache.org/repos/asf/camel/branches/camel-2.8.x camel-2.8.x
3. In camel-2.8.x directory, you can get a list of commits available from the trunk
svnmerge.py avail
4. Merge your commit by running
svnmerge.py merge -r 123456
5. Resolve any conflicts in the merge
6. Commit it by running
svn ci -F svnmerge-commit-message.txt
7. If you have a JIRA associated with this fix, make sure it says fix for 2.8.x.
Trouble with svnmerge.py
If you have trouble with the svnmerge.py file such as Claus Ibsen had, then he attached an older svnmerge.py file, to this wiki page that works.
Using DoMerges tool
If you look in:
there is a DoMerges.java
file in there that you can compile and run from a fixes branch checkout.
It pretty much walks you through the entire process of backporting fixes.
It lists all the outstanding commits that haven't been reviewed, allows you to merge commits individually, block commits, show the diffs, etc.
For the most part, it's quite easy to walk through a bunch of commits and merge things back with it. Takes very little time.
To run the file do, from the directory with the branch.
java DoMerges
You need svnmerge.py
to be runnable from the command line.
There is a compiled .class of the DoMerges attached to this wiki page you can download. However its easy to compile
the source file, as it has no other dependencies so its all plain
javac DoMerges.java
Using git
If you already use git-svn, you could consider using the great git merge capabilities.
Create a local branch from the remote tracking branch (e.g. camel-2.8.x)
git checkout -b camel-2.8.x remotes/camel-2.8.x
or switch into the existing branch
git checkout camel-2.8.x
To merge one revision (e.g. 1176050) into this branch, run
git cherry-pick 1176050
This will merge and commit the changes into your local git repository.
Combining multiple revisions
If you have to combine multiple revisions into one commit, run
git cherry-pick -n <revision>
for each revision (the -n options prevents the commit after the merge). Afterwards you have to run
git commit -a -m "<commit message>"
to commit all the changes with one commit into your local git repository.
Run
git svn dcommit
to push your local changes into the Apache SVN repository.
If you have a JIRA associated with this fix, make sure it says fix for 2.8.x.
Git Tooling
There is a number of Git Graphical Tools which can be used as well for backporting fixes. For example GitX or GitTower for Mac users.