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

Another merge test case from the kernel tree.

From
Junio C Hamano <junkio@cox.net>
Date
Sep 14, 2005, 05:56 UTC
Message-ID
<7vpsrcqjj6.fsf_-_@assigned-by-dhcp.cox.net>
In-Reply-To
<7vzmqk2u1w.fsf_-_@assigned-by-dhcp.cox.net>

One more merge test case you would be interested. What's most interesting about this commit is that it has three merge bases, not two.

commit c820884e4f35a40f88b787c3891a23d629ef6bfd
Merge: aa2dca4563b0629ecd9d9994dfdf39f29ff1b43f 357d596bd552ad157a906289ab13ea6ba7e66e3d
Author: Tony Luck <tony.luck@intel.com>
Date:   Sun Sep 11 18:35:10 2005 -0700
    Auto-update from upstream

Attempt to reproduce this commit is somewhat troubling. The 'stupid' strategy and git-resolve resolves cleanly and Tony's commit matches what 'git-resolve' does (obviously that is the algorithm everybody uses).

But the 'resolve' strategy says this is case #16 (and resolves this case differently but I think it is just by luck). This indicates that Tony _might_ have committed what he did not wanted to. The path involved is arch/mips/kernel/offset.c.

    [Tony, I think you've seen this one once in different
    commit.  The terminology "case #16" means your merge has
    more than one merge base candidates:
        Ancestor#1 -- -- Your tree
                     X
        Ancestor#2 -- -- Other tree
    and when a path in your tree matches Ancestor #i and the
    same path in the other tree matches Ancestor #j (i!=j).
    The default git merge algorithm picks a single ancestor that
    gives the least number of conflicting paths during the
    merge, and compares your tree and other tree against it and
    pick the one that changed since that ancestor if only one
    side changed that path.  But in case #16, depending on which
    ancestor we pick, the result may come from your tree or
    other tree, and obviously we do a wrong thing with 50%
    probability.
    Thie _could_ indicate that you _might_ be losing a reverted
    you made in your line of development being overwritten by
    what the other tree did.]
BTW, Fredrik, the 'recursive' merge dies with this:
Trying merge strategy recursive...
Merging 357d596bd552ad157a906289ab13ea6ba7e66e3d with aa2dca4563b0629ecd9d9994dfdf39f29ff1b43f
Merging: 
357d596bd552ad157a906289ab13ea6ba7e66e3d Merge branch 'release' of master.kernel.org:/pub/scm/linux/kernel/git/aegl/linux-2.6  
aa2dca4563b0629ecd9d9994dfdf39f29ff1b43f Manual merge of kernel/sched.c and arch/ia64/kernel/mca_asm.S 
found 3 common ancestor(s): 
a1cddb88920b915eaba10712ecfd0fc698b00a22 [IA64-SGI] Add new vendor-specific SAL calls for: 
6cf07a8cc86a0b471466c7fe45892f7ef434015b [IA64] Fix nasty VMLPT problem... 
49a28cc8fd26f5317c47a9aeb2bdd1c33e21738e [IA64] MCA/INIT: remove obsolete unwind code 
  Merging: 
  a1cddb88920b915eaba10712ecfd0fc698b00a22 [IA64-SGI] Add new vendor-specific SAL calls for: 
  6cf07a8cc86a0b471466c7fe45892f7ef434015b [IA64] Fix nasty VMLPT problem... 
  found 1 common ancestor(s): 
  d8971fcb702e24d1e22c77fd1772f182ffee87e3 [INET]: compile errors when DEBUG is defined 
Traceback (most recent call last):
  File "/home/junio/bin/Linux/git-merge-recursive", line 429, in ?
    firstBranch, secondBranch, graph)
  File "/home/junio/bin/Linux/git-merge-recursive", line 54, in merge
    graph, callDepth+1)
  File "/home/junio/bin/Linux/git-merge-recursive", line 62, in merge
    runProgram(['git-read-tree', h1.tree()])
  File "/home/junio/share/git-core/python/gitMergeCommon.py", line 93, in runProgram
    raise ProgramError(progStr, out)
ProgramError: git-read-tree 1d20af805193ab9982a48cb4c828c0f6af034c6c: fatal: failed to unpack tree object 1d20af805193ab9982a48cb4c828c0f6af034c6c
Previous: Junio C HamanoNext: Daniel Barkalow
Message 6 of 40 in “A new merge algorithm, take 3”
  1. 0/2 A new merge algorithm, take 3Fredrik Kuivinen, Sep 7, 2005
  2. 1/2 Add '-i' flag to read-tree to make it ignore whats in the working directory.Fredrik Kuivinen, Sep 7, 2005
  3. Unified merge driver pushed out to "master" branchJunio C Hamano, Sep 11, 2005
  4. Fredrik KuivinenSep 11, 2005
  5. Junio C HamanoSep 12, 2005
  6. Another merge test case from the kernel tree.Junio C Hamano, Sep 14, 2005
  7. Daniel BarkalowSep 14, 2005
  8. Junio C HamanoSep 14, 2005
  9. Fredrik KuivinenSep 14, 2005
  10. Junio C HamanoSep 14, 2005
  11. Yet another set of merge test cases from the kernel tree.Junio C Hamano, Sep 15, 2005
  12. Fredrik KuivinenSep 19, 2005
  13. Junio C HamanoSep 20, 2005
  14. Fredrik KuivinenSep 20, 2005
  15. 2/2 A new merge algorithmFredrik Kuivinen, Sep 7, 2005
  16. Daniel BarkalowSep 7, 2005
  17. Fredrik KuivinenSep 8, 2005
  18. Daniel BarkalowSep 8, 2005
  19. Fredrik KuivinenSep 8, 2005
  20. Daniel BarkalowSep 8, 2005
  21. Junio C HamanoSep 7, 2005
  22. Junio C HamanoSep 8, 2005
  23. A Large Angry SCMSep 8, 2005
  24. Chuck LeverSep 8, 2005
  25. Junio C HamanoSep 8, 2005
  26. Linus TorvaldsSep 8, 2005
  27. Junio C HamanoSep 8, 2005
  28. Chuck LeverSep 8, 2005
  29. Linus TorvaldsSep 8, 2005
  30. Chuck LeverSep 8, 2005
  31. Linus TorvaldsSep 8, 2005
  32. [RFH] Merge driverJunio C Hamano, Sep 9, 2005
  33. Daniel BarkalowSep 9, 2005
  34. Junio C HamanoSep 9, 2005
  35. Daniel BarkalowSep 9, 2005
  36. [RFH] Merge driverJunio C Hamano, Sep 11, 2005
  37. Fredrik KuivinenSep 12, 2005
  38. Junio C HamanoSep 12, 2005
  39. Fredrik KuivinenSep 13, 2005
  40. Junio C HamanoSep 13, 2005

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.