All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Jason Pyeron" <jpyeron@pdinc.us>
To: <git@vger.kernel.org>
Cc: "'Philippe Blain'" <levraiphilippeblain@gmail.com>,
	"'Kyle Marek'" <kmarek@pdinc.us>,
	"'Junio C Hamano'" <gitster@pobox.com>
Subject: RE: [PATCH 1/2] revision: Denote root commits with '#'
Date: Sat, 23 Jan 2021 18:02:04 -0500	[thread overview]
Message-ID: <057b01d6f1db$c46d7d50$4d4877f0$@pdinc.us> (raw)
In-Reply-To: <xmqqh7n74jdt.fsf@gitster.c.googlers.com>

> -----Original Message-----
> From: Junio C Hamano <gitster@pobox.com>
> Sent: Saturday, January 23, 2021 1:07 PM
> 
> "Jason Pyeron" writes:
> 
> > Summary: --graph used with --oneline sometimes produces ambiguous
> > output when more than one commit has no parents and are not yet
> > merged
> > ...
> >> "(branch name)" in the output, instead of painting the commit in the
> >> graph by replacing the '*' node with something else.
> >>
> >> And how often do you really need to see commits near the root, say
> >> the earliest 100 commits, in the 35k+ commit history?  Is it really
> >> necessary to tell which among these 100 is the root?
> >
> > Yes, and the assumption that they are at the beginning is flawed too.
> >
> > $ git log --oneline --graph --all | cat -n | egrep $(git rev-list --max-parents=0 --all | cut -c 1-8
> | tr '\n' '|' | head -c -1)
> >     87  | | * be2c70b7 bug 2252 test case (e.g. for tomcat 9 with unpackWARs=false)
> >   2161  | | * 8ef73128 Add migrate-from-blackfat.sql
> >   2164  | | * 5505e019 initial
> >   2235  | | | | | | | | | | | | | * 83337c67 intial
> >   2921  | | | | * ca14dc49 Initial commit
> >   2931  | | | * cbdce824 initial commit
> >   2963  | | * 8f1828c1 Base applet
> >   2971  | * 658af21f parrent pom
> >   3026  * 8356af31 Initial commit from Create React App
> >
> > git log --oneline --graph produces 3026 lines in this example.
> 
> Hmph.  Are you saying that you have 3000+ root commits in the 35k+
> history?
> 

I think you misread the specific example of 9 roots in 3026 commits, distributed throughout history.

> Whether we add '[root]' decoration to the true roots (like
> '(branchname)' decoration we add to branch tips), or painted '*' in
> a different color (like '#'), you do not have to look for 'initial',
> so having that many roots will not be a problem per-se with respect
> to the "log" output, but there must be something strange going on.
> 
> I am not going to ask you why you need so many roots, because I
> suspect that I will regret asking ;-).
> 
> By the way, I sense that your problem description is flip-flopping
> again and I can no longer keep track of.  The way I read the message
> I got from Kyle was, even when a graph has two commits that have no
> parents in the visible part of the history, either Kyle wanted (or
> Kyle got an impression after talking to you that you wanted) to see
> these differently if one of them is a root and the other is non-root
> (but happens to have none of its parents shown due to A..B range).
> And that is why I started asking how meaningful to special case only
> "root".
> 

I may be having trouble with my writing, apologies.

Here is the issue (bug):

1. I never want to see a commit implied to be the parent of an unrelated commit.
2. I never want to see a commit implied to be the child of an unrelated commit.

--graph --oneline is broken with regards to the man page and my desire to not be confused by the implication of relationship for inappropriately connected nodes on the graph.

| | * 1234567 commit child of 2345678
| | * 2345678 the first commit, having no parent
| | * 9876543 an unrelated commit and child of 8765432
| | * 8765432 ...

> Now the message from you I am responding to in the "Sumary" above
> says that it is not "root" but is about the placement of graph
> nodes.
> 

One and the same issue. Placing an * directly above another * is the issue.

Solution #1

| | * 1234567 commit child of 2345678
| | # 2345678 the first commit, having no parent
| | * 9876543 an unrelated commit and child of 8765432
| | * 8765432 ...

Or

Solution #2

| | * 1234567 commit child of 2345678
| | * 2345678 the first commit, having no parent
| |
| | * 9876543 an unrelated commit and child of 8765432
| | * 8765432 ...

Or

Solution #3

| | * 1234567 commit child of 2345678
| | \
| |  * 2345678 the first commit, having no parent
| | * 9876543 an unrelated commit and child of 8765432
| | * 8765432 ...

All of these solutions will solve the bug. #1 seems to be the easiest and becomes searchable. You have indicated that #3 others have failed to do so. #2 is very much aligned to the --graph without --oneline

> So, I dunno, with changing the description of the goalpost.  Now it
> is that "root" is so not special at all and we only care about that
> the a commit, none of whose parents are in the part of the shown
> history, is shown in such a way that the user can tell that any
> unrelated commits shown in the graph near it are not parents of such
> a commit?  Or do you still want to show such a commit in two ways,
> one for root and one for the ones above the boundary?

A commit without a parent is special - it has no parent. This means it has no history beyond that point. Something special happened at that time - the birth of new source code in source control.

Hopefully, I have cleared up the ambiguous wording.


  reply	other threads:[~2021-01-23 23:03 UTC|newest]

Thread overview: 29+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-01-14 18:30 add a blank line when a commit has no parent in log output? Jason Pyeron
2021-01-14 19:29 ` Philippe Blain
2021-01-14 20:44   ` Jason Pyeron
2021-01-17 11:03     ` [PATCH 0/2] Option to modify revision mark for root commits Kyle Marek
2021-01-17 11:03       ` [PATCH 1/2] revision: Denote root commits with '#' Kyle Marek
2021-01-17 21:10         ` Junio C Hamano
2021-01-18  7:56           ` Kyle Marek
2021-01-18 19:15             ` Junio C Hamano
2021-01-18 20:33               ` Junio C Hamano
2021-01-19  7:43                 ` Kyle Marek
2021-01-19 22:10                   ` Junio C Hamano
2021-01-20  3:25                     ` Kyle Marek
2021-01-20  6:47                       ` Junio C Hamano
2021-01-20 15:11                         ` Jason Pyeron
2021-01-20 21:52                           ` Junio C Hamano
2021-01-20 23:01                             ` Jason Pyeron
2021-01-23 18:07                               ` Junio C Hamano
2021-01-23 23:02                                 ` Jason Pyeron [this message]
2021-01-23 23:45                                   ` Junio C Hamano
2021-01-24  0:02                                     ` Jason Pyeron
2021-01-25  7:00                                       ` Junio C Hamano
2021-01-17 22:44         ` Junio C Hamano
2021-01-17 11:03       ` [PATCH 2/2] revision: implement --show-linear-break for --graph Kyle Marek
2021-01-17 22:56         ` Junio C Hamano
2021-01-18  2:09           ` Junio C Hamano
2021-01-18  7:56             ` Kyle Marek
2021-01-18 21:01               ` Junio C Hamano
2021-01-19  7:44                 ` Kyle Marek
2021-01-15  1:12 ` add a blank line when a commit has no parent in log output? Junio C Hamano

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='057b01d6f1db$c46d7d50$4d4877f0$@pdinc.us' \
    --to=jpyeron@pdinc.us \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.com \
    --cc=kmarek@pdinc.us \
    --cc=levraiphilippeblain@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.