Although git is a little more than perfect now a days (git >= 1.5), git-svn however has a few quirks. Lately I got into a few frustrating problems and it turned out to be caused by how git-svn bridges the two very different worlds. What happens is that when you `git-svn rebase` (which is implicitly implied in `git-svn dcommit`), git-svn modifies the commit messages to contain an id, a git-svn-id to be precise using which it track down stuff like which latest commits haven't been committed to upstream svn repo etc. To cut the story short, here are is my advice for people who want to use git-svn on regular bases and branch (which they should):
- To make life simple, only have one branch sync with upstream svn repo (master branch is the most obvious choice).
- `git-rebase master` your branches each time after a `git-svn rebase` happens (implicitly or explicitly).
- Don't ever try to merge a branch once you have done that already and did a `git-svn dcommit` after you first merged it, unless you have followed point#2 above.