Re: [PATCH 1/2] revision: Denote root commits with '#'
- From
Junio C Hamano <gitster@pobox.com>
- Date
- Jan 25, 2021, 07:00 UTC
- Message-ID
- <xmqqblddzekb.fsf@gitster.c.googlers.com>
- In-Reply-To
- <00a801d6f1e4$2b693140$823b93c0$@pdinc.us>
"Jason Pyeron" <jpyeron@pdinc.us> writes:
Show 11 quoted lines
>> 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---ZM
(log --graph output: time flows bottom to top)
* 0fbb0dc (HEAD -> z) Z
|\
| * 11be529 (master) B
| * 8dd1b85 A
* 851a915 Y
* 27d3ed0 [root] X
* 1111111 MNow, 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 MIn 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).