Re* [RFC/PATCH] extend meaning of "--root" option to index comparisons
- From
Junio C Hamano <gitster@pobox.com>
- Date
- Sep 19, 2008, 20:27 UTC
- Message-ID
- <7vskrvswxp.fsf@gitster.siamese.dyndns.org>
- In-Reply-To
- <20080919142537.GA1287@coredump.intra.peff.net>
Jeff King <peff@peff.net> writes:
Show 13 quoted lines
> On Thu, Sep 18, 2008 at 09:31:24AM -0700, Anatol Pomozov wrote: > >> > Can you think of any other cases? >> >> git log?? >> >> git log --root for empty repo should not print anything (instead of >> error message that we have now). > > I'm not sure that's the same as "--root", though. In existing --root > cases, we are saying "pretend that beyond the initial commit, there is a > commit that contains the empty tree". The logical extension of git-log > here would be to print out that commit.
I would say:
(1) A user getting an error message from "git init && git log" may be
annoyed, but he very well knows there is no history yet _anyway_.
This initial annoyance will pass immediately after creating any
commit, so I do not think it is a big issue. "bad default revision 'HEAD'" is a cryptic way to give that indicaion
that can be improved but that is a separate issue. Rewording it so
that it explains the situation better in user's terms would be a
worthy improvement. (2) "--root" is about "do we show a creation event as a huge diff from
emptyness?". Yes, we turn it on for "git log" but it does not have
anything to do with the issue of yet to be born branch, where there
isn't even a big creation event yet.I am reluctant to agree with the opinion that "git log" should be _silent_ in a world without any history.
Perhaps something like this would be a good compromise? I dunno.
builtin-log.c | 9 ++++++++- 1 files changed, 8 insertions(+), 1 deletions(-)
diff --git c/builtin-log.c w/builtin-log.c index 081e660..881324c 100644 --- c/builtin-log.c +++ w/builtin-log.c @@ -42,7 +42,14 @@ static void cmd_log_init(int argc, const char **argv, const char *prefix, if (default_date_mode) rev->date_mode = parse_date_format(default_date_mode); - argc = setup_revisions(argc, argv, rev, "HEAD"); + argc = setup_revisions(argc, argv, rev, NULL); + if (!rev->pending.nr) { + add_head_to_pending(rev); + if (!rev->pending.nr) { + printf("No commits (yet).\n"); + exit(0); + } + } if (rev->diffopt.pickaxe || rev->diffopt.filter) rev->always_show_header = 0;