CodePrairie .NET

South Dakota .NET User Group


git-svn and cherry picking

git-cherry-pick is great command. It allows you to take a single commit made elsewhere and commit it to your workin g tree. From the man page:

Given one existing commit, apply the change the patch introduces, and record a new commit
that records it. This requires your working tree to be clean (no modifications from the
HEAD commit).

Today I was working on something and bumped into a bug that I had fixed in a release branch.

I looked up the ticket for the bug and saw that it was fixed in svn revision 7624. So in order to find that commit in git I did

git co 1.1
SHA=`git svn find-rev r7624`

Now I want this change in my 1.2 branch

git co 1.2
git cherry-pick $SHA

All is well and good, until....

git log

commit b48bbd5217206bae0ad3d520e0820ffce5fb8bff
Author: chriso <chriso@44e5888c-930d-754b-aefa-77e11abcc7dd>
Date: Tue Feb 26 15:02:55 2008 +0000

Working around a monorail change that broke me reseting the session state in the reset method of the wizard step. [refs #304]

git-svn-id: https://buildserver/svn/repos/tags/1.1@7624 44e5888c-930d-754b-aefa-77e11abcc7dd

See that git-svn-id line? If I leave it as is when I dcommit my 1.2 branch (which goes to trunk in svn) it will make the commit to the tags/1.1 branch in svn because that is where the most recent git-svn-id points to.

The workaround is actually quite simple

git cherry-pick -n $SHA

What this will do is stage the changes but not commit. Now I can git-commit myself and remove the git-svn-id line.


Technorati tags:


No Comments

Leave a Comment

Powered by Community Server (Commercial Edition), by Telligent Systems