git/list[1] front-page[2] threads[3] people[4] search[5] about
 

rev-list with multiple commits sharing same patch-id

From
Arnaud Morin <arnaud.morin@gmail.com>
Date
Jan 9, 2021, 16:24 UTC
Message-ID
<20210109162440.GM31701@sync>
Hey all,

I am struggling with a rev-list command, hope someone can give me a clue on what is going on.

I have 2 branches:
$ git branch
  B
* master

Currently on master, there is not diff against B: $ git diff (empty)

The commits in B are cherry-picked from master.
Here is the graph:
$ git log --graph --oneline --all
* ae2e3c4 (origin/B, B) remove line2 and add line4 (bis)
* a7a0339 remove line4
* caa4aad restore line2
* d7dc596 remove line2 add line4
* 44bcfd4 add line3
* e372641 b
| * dbf86d8 (HEAD -> master, origin/master) remove line2 and add line4 (bis)
| * 4017282 remove line4
| * 0f2a449 restore line2
| * 8969d3f remove line2 add line4
| * e73b420 add line3
| * fe5a75a b
|/  
* 6192505 a
* b4089e1 init

However, when using git rev-list to perform a symmetric difference, git is giving me a commit ID: $ git rev-list --left-right --cherry-pick B...master

>dbf86d8aafc897a25a3093139b4237a62395041e
Note that this commit is not empty
$ git show dbf86d8aafc897a25a3093139b4237a62395041e --stat
commit dbf86d8aafc897a25a3093139b4237a62395041e (origin/master, master)
Author: Arnaud Morin <hidden@mail>
Date:   Sat Jan 9 10:30:10 2021 +0100
    remove line2 and add line4 (bis)
 a | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
So, from git rev-list perspective, there is a diff.

After digging a little bit, the thing is that this commit is having the following patch-id: $ git show dbf86d8aafc897a25a3093139b4237a62395041e | git patch-id 20f4ace68e80a751b07d78a27c94e83d6c5314bc dbf86d8aafc897a25a3093139b4237a62395041e

Which is also already existing in an other commit: $ for c in $(git rev-list HEAD) ; do git show $c |git patch-id |grep 20f4ace68e80a751b07d78a27c94e83d6c5314bc; done 20f4ace68e80a751b07d78a27c94e83d6c5314bc dbf86d8aafc897a25a3093139b4237a62395041e 20f4ace68e80a751b07d78a27c94e83d6c5314bc 8969d3fa9159730fd3b23199873bfb26e3d20027

So, is it normal that rev-list is not able to figure out that a commit is existing in both branch when 2 commits share the same patch-id?

Is there any way to prevent rev-list from showing this commit?
Thanks for your help.

PS. I have uploaded my test repo here: https://gitlab.com/arnaudmorin/git-rev-list

-- 
Arnaud Morin
Next: Arnaud Morin
Message 1 of 15 in “rev-list with multiple commits sharing same patch-id”
  1. Arnaud MorinJan 9, 2021
  2. Arnaud MorinJan 11, 2021
  3. Christian CouderJan 11, 2021
  4. Arnaud MorinJan 11, 2021
  5. Jeff KingJan 12, 2021
  6. Jeff KingJan 12, 2021
  7. Arnaud MorinJan 12, 2021
  8. patch-ids: handle duplicate hashmap entriesJeff King, Jan 12, 2021
  9. Arnaud MorinJan 12, 2021
  10. Junio C HamanoJan 12, 2021
  11. Arnaud MorinJan 13, 2021
  12. Jeff KingJan 13, 2021
  13. Junio C HamanoJan 13, 2021
  14. Jeff KingJan 13, 2021
  15. Junio C HamanoJan 13, 2021

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.