From: Junio C Hamano Date: Mon, 25 Jun 2012 05:58:44 GMT Subject: Re: [PATCH/RFC] revision: Show friendlier message. Message-ID: <7vzk7sgcff.fsf@alter.siamese.dyndns.org> In-Reply-To: <7vobo8hsee.fsf@alter.siamese.dyndns.org> Junio C Hamano writes: > Leila Muhtasib writes: > >> % mkdir test >> % cd test >> % git init >> Initialized empty Git repository in .git/ >> % git log >> fatal: bad default revision 'HEAD' > > I agree that the message, while it is technically correct and does > not deserve to be called a bug, can be made more friendly. > > But setup_revisions() is a very low level routine that is used by > many plumbing commands, and it is a horrible layering violation to > tweak its behaviour based on argv[0] and also it is too inflexible > hack as a solution. For example, don't you want to give a different > error message for "git log HEAD" with an explicit "HEAD" from the > command line? Would you add a similar support for a command that is > not "log" by adding yet another strcmp() here? > > Wouldn't it be a more reasonable alternative solution if you do this: > > 1. Check if HEAD points at a commit _before_ setting opt->def to it > in "git log" (and other end-user facing programs in the "log" > family, possibly in cmd_log_init_finish() if that function is > not called by a program where the current message should not > change), and do _NOT_ set opt->def to it; The last part of the paragraph should read: ... and do _NOT_ set opt->def to it if HEAD does not point at a commit.