I’m experimenting with git-svn, and am trying to come up with a relatively non error-prone workflow. I think the following should work, and is pretty simple, but I’ve seen people using far more complicated workflows, so I want to see why.
(master) $ git svn init <path>(master) $ git svn fetch(master) $ git svn rebase(master) $ git checkout -b topic-branch(topic-branch) $ # HACK HACK COMMIT HACK HACK HACK COMMIT HACK COMMIT(topic-branch) $ git checkout master(master) $ git merge topic-branch— this is a fast-forward merge, so no merge commit(master) $ git svn rebase(master) $ # fix conflicts(master) $ git svn dcommitGOTO 4
Yes, that’s essentially what I do when working with Subversion repositories. The key to the simplicity of this is to keep the Git branches local and not try to map them to Subversion branches at all.
I just noticed that you linked directly to my answer in that other question. So perhaps I should explain more. 🙂
I sometimes do the conflict resolution in the topic branch if I expect some conflict work. Otherwise, if I don’t expect many conflicts, I might merge to master first before doing the
git svn rebase. It doesn’t matter much.The key point is that Git is so flexible that the minimum workflow is very simple. You’ve added a topic branch to that; I’ve added rebasing on the topic branch.