Subject: Re: [PATCH RFC] graph: implement git-log(1) --untangle

From: Toon Claes <[email-masked]>
Date: Mon, 09 Feb 2026 07:19:35 +0100

Junio C Hamano <[email-masked]> writes:

> Toon Claes <[email-masked]> writes:
>
>> I would argue the problem here are not the merge commits, but it's the
>> way this is displayed.
>
> I am curious, as anybody else who has read this message up to this
> point, how your --untangle option improves the same section of the
> history you drew above (which I did not include).

I didn't want to clutter my email with a lot of examples, I would rather
have people give it a try. But since you asked.

Without --untangle:

    * 67ad42147a (tag: v2.53.0, origin/master, origin/maint, origin/HEAD, master) Git 2.53
    *   6f328bc9e3 Merge tag 'l10n-2.53.0-v1' of https://github.com/git-l10n/git-po
    |\
    | *   532543fa46 Merge branch 'jx/zh_CN' of github.com:jiangxin/git
    | |\
    | | * eb816ef79e l10n: zh_CN: standardize glossary terms
    | | * 3065daed59 l10n: zh_CN: updated translation for 2.53
    | | * eb3cfc6b2f l10n: zh_CN: fix inconsistent use of standard vs. wide colons
    | * |   5a83d800f3 Merge branch 'l10n/zh-TW/git-2-53' of github.com:l10n-tw/git-po
    | |\ \
    | | * | b47610d61d l10n: zh_TW.po: update Git 2.53 translation
    | * | |   e996719801 Merge branch 'po-id' of github.com:bagasme/git-po
    | |\ \ \
    | | * | | 6ef4d11472 l10n: po-id for 2.53
    | | |/ /
    | * | |   8ef65d7efd Merge branch 'l10n-ga-2.53' of github.com:aindriu80/git-po
    | |\ \ \
    | | * | | d534a373e7 l10n: ga.po: Fix git-po-helper warnings
    | | * | | 0c19f7f950 l10n: ga.po: Update Irish translation for Git 2.53
    | * | | |   b386b3aea7 Merge branch 'master' of github.com:alshopov/git-po
    | |\ \ \ \
    | | * | | | 06045e3984 l10n: bg.po: Updated Bulgarian translation (6091t)
    | * | | | |   af1a298e2c Merge branch 'fr_2.53' of github.com:jnavila/git
    | |\ \ \ \ \
    | | * | | | | 72dd507505 l10n: fr: v2.53
    | | | |_|/ /
    | | |/| | |
    | * | | | |   6f75c474d7 Merge branch 'tr-l10n' of github.com:bitigchi/git-po
    | |\ \ \ \ \
    | | * | | | | d63adbbbd5 l10n: tr: Update Turkish translations
    | | |/ / / /
    | * | | | |   3eaaa7fea4 Merge branch 'master' of github.com:nafmo/git-l10n-sv
    | |\ \ \ \ \
    | | |_|_|_|/
    | |/| | | |
    | | * | | | cba7353aed l10n: sv.po: Update Swedish translation
    * | | | | | 239b7f686c RelNotes: fully spell negation
    * | | | | | 2258446484 RelNotes: correct "fast-import" option name
    |/ / / / /
    * | | | | ea717645d1 RelNotes: a few spelling fixes
    * | | | | ab380cb80b (tag: v2.53.0-rc2) Git 2.53-rc2
    | |/ / /
    |/| | |
    * | | | ab689ea7f9 Revert "Merge branch 'cs/rebased-subtree-split'"
    * | | |   6959eee16e Merge branch 'master' of https://github.com/j6t/git-gui

With --untangle:

    * 67ad42147a (tag: v2.53.0, origin/master, origin/maint, origin/HEAD, master) Git 2.53
    *   6f328bc9e3 Merge tag 'l10n-2.53.0-v1' of https://github.com/git-l10n/git-po
    |\
    | *   532543fa46 Merge branch 'jx/zh_CN' of github.com:jiangxin/git
    | |\
    | | * eb816ef79e l10n: zh_CN: standardize glossary terms
    | | * 3065daed59 l10n: zh_CN: updated translation for 2.53
    | | * eb3cfc6b2f l10n: zh_CN: fix inconsistent use of standard vs. wide colons
    | *   5a83d800f3 Merge branch 'l10n/zh-TW/git-2-53' of github.com:l10n-tw/git-po
    | |\
    | | * b47610d61d l10n: zh_TW.po: update Git 2.53 translation
    | *   e996719801 Merge branch 'po-id' of github.com:bagasme/git-po
    | |\
    | | * 6ef4d11472 l10n: po-id for 2.53
    | *   8ef65d7efd Merge branch 'l10n-ga-2.53' of github.com:aindriu80/git-po
    | |\
    | | * d534a373e7 l10n: ga.po: Fix git-po-helper warnings
    | | * 0c19f7f950 l10n: ga.po: Update Irish translation for Git 2.53
    | *   b386b3aea7 Merge branch 'master' of github.com:alshopov/git-po
    | |\
    | | * 06045e3984 l10n: bg.po: Updated Bulgarian translation (6091t)
    | *   af1a298e2c Merge branch 'fr_2.53' of github.com:jnavila/git
    | |\
    | | * 72dd507505 l10n: fr: v2.53
    | *   6f75c474d7 Merge branch 'tr-l10n' of github.com:bitigchi/git-po
    | |\
    | | * d63adbbbd5 l10n: tr: Update Turkish translations
    | * 3eaaa7fea4 Merge branch 'master' of github.com:nafmo/git-l10n-sv
    | * cba7353aed l10n: sv.po: Update Swedish translation
    * 239b7f686c RelNotes: fully spell negation
    * 2258446484 RelNotes: correct "fast-import" option name
    * ea717645d1 RelNotes: a few spelling fixes
    * ab380cb80b (tag: v2.53.0-rc2) Git 2.53-rc2
    * ab689ea7f9 Revert "Merge branch 'cs/rebased-subtree-split'"
    *   6959eee16e Merge branch 'master' of https://github.com/j6t/git-gui

>> There are still some bugs in this implementation. And a bunch of memory
>> leaks. Also am I not sold on the name `--untangle`. It sounds catchy,
>> but it's name isn't very meaningful for most users. I've been thinking
>> about `--ignore-merge-base` or `disconnect-merge-base`, but I'm open to
>> better suggestions. That's why I'm submitting this as a RFC. Before I
>> continue work on this, I'm curious if the project is open to such
>> contribution? And if so, which direction it should go?
>
> In any case, I am very happy to see another person who is not afraid
> of our C codebase to have looked at this part of the system (I have
> a long-standing pet peeve, unrelated to this issue, in this area).

I'm happy to learn more about those pet peeves. git-log(1) --graph could
definetily use some love.

-- 
Cheers,
Toon