threads / discuss / 28726

Tracking cherry picks

Subject: Tracking cherry picks

## tl;dr

4 messages between Oct 20, 2011 and Oct 21, 2011.

replies: 3people: 4as markdown or json

Phillip Susi· Oct 20, 2011, 14:21 UTC · lore

I need to maintain a few stable release branches in addition to the master branch. Sometimes a bug is found and the fix needs applied to multiple branches. I would like to be able to list what branches the fix has been applied to to validate that it went in everywhere it was needed, but after cherry-picking the fix from master to the stable branches, the SHA1 of the commit is different, and so git branch --contains does not think the commit was applied to each of the stable branches.

Is there a way around this? Why doesn't git-cherrypick record the original SHA1 it was picked from in the commit?

Kirill Likhodedov· Oct 20, 2011, 15:00 UTC · re: Phillip Susi · lore

Re: Tracking cherry picks

20.10.2011, в 18:21, Phillip Susi:
>  Why doesn't git-cherrypick record the original SHA1 it was picked from in the commit?

It does if you specify "-x" option to cherry-pick See the man for git-cherry-pick:

-x
           When recording the commit, append a line that says "(cherry picked from commit ...)" to the
           original commit message in order to indicate which commit this change was cherry-picked from.
           This is done only for cherry picks without conflicts. Do not use this option if you are
           cherry-picking from your private branch because the information is useless to the recipient. If
           on the other hand you are cherry-picking between two publicly visible branches (e.g. backporting
           a fix to a maintenance branch for an older release from a development branch), adding this
           information can be useful.
Ramkumar Ramachandra· Oct 20, 2011, 15:34 UTC · re: Kirill Likhodedov · lore

Re: Tracking cherry picks

Hi,
Kirill Likhodedov writes:
Show 6 quoted lines
> 20.10.2011, в 18:21, Phillip Susi:
>>  Why doesn't git-cherrypick record the original SHA1 it was picked from in the commit?
>
> It does if you specify "-x" option to cherry-pick
> See the man for git-cherry-pick:
> [...]

Right. As an interesting historical note, git has been omitting the original object name by default when cherry-picking/ reverting since abd6970a (cherry-pick: make -r the default, 2006-10-05).

-- Ram
Jonathan Nieder· Oct 21, 2011, 09:52 UTC · re: Phillip Susi · lore

Re: Tracking cherry picks

Hi,
Phillip Susi wrote:
Show 6 quoted lines
> Sometimes a bug is found and the fix needs applied to multiple
> branches.  I would like to be able to list what branches the fix has been
> applied to to validate that it went in everywhere it was needed, but after
> cherry-picking the fix from master to the stable branches, the SHA1 of the
> commit is different, and so git branch --contains does not think the commit
> was applied to each of the stable branches.

If you base the fix on the oldest commit you think you might ever want to apply it to, then you can reuse the same bugfix commit in all branches. See gitworkflows(7) for more on this.

Hope that helps, and good luck, Jonathan

← back to recent threads