Thread (3 messages) flat view 3 messages, 2 authors, 2021-01-25

Re: [PATCH 1/2] revision: Denote root commits with '#'

From: Junio C Hamano <hidden>
Date: 2021-01-25 07:09:58

"Jason Pyeron" [off-list ref] writes:
quoted
It seems to me that Solution #2 is a special case of Solution #3 ;-)
They are both direct answers to the "graph drawn incorrectly can
imply ancestry that does not exist" problem.

Adding the "--decorate-roots" option that annotates the root commits
in the "git log" output can still be done, but that is an orthogonal
issue.  It does solve, together with any one of three options you
presented, the issue Kyle brought up, I would think.
Yes, adding --decorate-roots to add more wide descriptive text
before the message would do it, but it is the worst solution #4.
I said that "--decorate-roots" is a solution to an orthogonal issue.

Let's recall the C..Z example that shows A (non-root) and X (root)
in several messages back.  Either can be drawn with unrelated commit
immediately below them, depending on the topology of other commits
(imagine there is another commit M that is not related to any of the
commits connected to A or Z, and it is given to "git log C..Z M"; if
we draw C..Z part first and then draw O after it, M would most
likely come immediately after X.

(history: time flows left to right)

          C
         /
        O---A---B
                 \
          X---Y---Z

        M

(log --graph output: time flows bottom to top)

    *   0fbb0dc (HEAD -> z) Z
    |\
    | * 11be529 (master) B
    | * 8dd1b85 A
    * 851a915 Y
    * 27d3ed0 [root] X
    * 1111111 M

Now, the earlier C..Z example I happened to draw B and A first
before drawing Y and X, but if we swap the merge order of Z, it is
likely that the graph output would draw Y and X and then B and A.
"git log C..Z M" in such a history would likely to show M directly
below A (non-root).

    *   0fbb0dc (HEAD -> z) Z
    |\
    | * 851a915 Y
    | * 27d3ed0 [root] X
    * 11be529 (master) B
    * 8dd1b85 A
    * 1111111 M

In short, the [root] annotation does not, and it is not meant to,
solve the "misleading graph" issue.

It only solves "root is special, with or without --graph" issue
(such an issue may or may not exist).
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help