threads / discuss / 20590

git cherry to find equivalent commit IDs?

Subject: git cherry to find equivalent commit IDs?

## tl;dr

3 messages between Aug 13, 2009 and Aug 13, 2009.

replies: 2people: 2as markdown or json

skillzero@gmail.com· Aug 13, 2009, 21:13 UTC · lore

Is there a way to get the commit ID of a patch that was cherry picked (or via a manually applied patch)? I'm trying to get an equivalent to git branch --contains, but instead of comparing the commit ID, it compares patch IDs so it works for cherry picks and manual patches. It seems like git cherry almost does what I want, but it only seems to show the commit ID of the commit on the other branch rather than the branch I specify to git cherry. I may just be using git cherry incorrectly though.

For example, commit 3642151 on branch A was a cherry pick of a commit 460050c on master:

$ git branch -a --contains 3642151
  A
$ git branch -a --contains 460050c
* master
$ git cherry -v master 3642151
- 3642151435ce5737debc1213de46dd556475bfad1 fixed bug

I assume that means an equivalent change to 3642151 is already in master (which it is, as commit 460050c). But I want to find out the commit ID on master that's equivalent to 3642151 (i.e. something that tells me it's 460050c).

I'm basically looking for something like git branch --contains, but that searches by patch ID so it can find cherry picked or manually applied patches:

$ git branch -a --contains-equivalent 3642151
* master (via commit 460050c)
  A (via commit 3642151)
Is there a way to do that?
Avery Pennarun· Aug 13, 2009, 21:37 UTC · re: skillzero@gmail.com · lore

Re: git cherry to find equivalent commit IDs?

On Thu, Aug 13, 2009 at 9:13 PM, <skillzero@gmail.com> wrote:
Show 16 quoted lines
> For example, commit 3642151 on branch A was a cherry pick of a commit
> 460050c on master:
>
> $ git branch -a --contains 3642151
>  A
>
> $ git branch -a --contains 460050c
> * master
>
> $ git cherry -v master 3642151
> - 3642151435ce5737debc1213de46dd556475bfad1 fixed bug
>
> I assume that means an equivalent change to 3642151 is already in
> master (which it is, as commit 460050c). But I want to find out the
> commit ID on master that's equivalent to 3642151 (i.e. something that
> tells me it's 460050c).
git show 3642151 | git patch-id

You should get a line with two hashes; the first is the patchid (call it PATCHID_FROM_ABOVE)

git log -p | git patch-id | grep PATCHID_FROM_ABOVE
This should give you a list of all commits that correspond to that patchid.

Note that if there were conflicts when applying the patch, the patchid probably changed.

Have fun,
Avery
skillzero@gmail.com· Aug 13, 2009, 23:05 UTC · re: Avery Pennarun · lore

Re: git cherry to find equivalent commit IDs?

On Thu, Aug 13, 2009 at 2:37 PM, Avery Pennarun<apenwarr@gmail.com> wrote:
Show 26 quoted lines
> On Thu, Aug 13, 2009 at 9:13 PM, <skillzero@gmail.com> wrote:
>> For example, commit 3642151 on branch A was a cherry pick of a commit
>> 460050c on master:
>>
>> $ git branch -a --contains 3642151
>>  A
>>
>> $ git branch -a --contains 460050c
>> * master
>>
>> $ git cherry -v master 3642151
>> - 3642151435ce5737debc1213de46dd556475bfad1 fixed bug
>>
>> I assume that means an equivalent change to 3642151 is already in
>> master (which it is, as commit 460050c). But I want to find out the
>> commit ID on master that's equivalent to 3642151 (i.e. something that
>> tells me it's 460050c).
>
> git show 3642151 | git patch-id
>
> You should get a line with two hashes; the first is the patchid (call
> it PATCHID_FROM_ABOVE)
>
> git log -p | git patch-id | grep PATCHID_FROM_ABOVE
>
> This should give you a list of all commits that correspond to that patchid.
That worked perfectly. Thanks.

← back to recent threads