"Jason Pyeron" <jpyeron@xxxxxxxx> writes: > One and the same issue. Placing an * directly above another * is the issue. OK, I re-read the messages in the thread, and it appears that this part from Kyle >>> >>> C >>> / >>> O---A---B >>> \ >>> X---Y---Z >>> >>> When graphing C..Z, git produces output like: >>> >>> * 0fbb0dc (HEAD -> z) Z >>> |\ >>> | * 11be529 (master) B >>> | * 8dd1b85 A >>> * 851a915 Y >>> * 27d3ed0 (x) X >>> >>> We cannot tell from the above graph alone that X is a root and A is not. was the only thing that argued that A and X (if the graph drawing happend to place an unrelated commit immediately below it) should be drawn differently so that you can tell X (root) and A (non root) apart. And you are saying (and it seems that you have consistently been saying) that it is OK to draw A and X (again if other unrelated commits were immediately drawn below them) the same way. So I guess all is well. We do not have to use more 6 different symbols ("{#}" to show commit above boundary, three more to show roots) but need to introduce only three, if we were to go with the Solution #1 route. 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. Thanks.