Subject: Re: git-log vs git-rev-list

From: Petr Baudis <[email-masked]>
Date: Fri, 30 May 2008 23:34:43 +0200

On Fri, May 30, 2008 at 01:20:13PM -0700, Linus Torvalds wrote:
> On Fri, 30 May 2008, Petr Baudis wrote:
> > Step back a bit: it's git-_REV_-list. Technically, --all --objects is
> > nonsensical operation to do on revision list either.
> 
> Who cares?

You did in case of git log.

> Why are you arguing against *facts*?
> 
> The *fact* is, git rev-list can traverse the whole object chain.
> 
> The *fact* is that git rev-list can do other operations that have nothing 
> to do with logs (bisection, for example).
> 
> The *fact* is that both git rev-list and git log can traverse a set of 
> revisions, but that doesn't make them the same command.

Huh? Of course these are facts, but I don't see what does that have to
do with anything. I'm not arguing this isn't so, I'm arguing it _is_ so
and some of it is _wrong_ from user interface standpoint.

> I totally don't see your arguments. They are pointless. git rev-list and 
> git log already share all the relevant internal machinery for the things 
> where they overlap in capabilities. And the fact that they output 
> different things is because they are different.

My argument is that there should not be two different commands with
similar interface and almost similar feature set when a single interface
would be more than enough - no matter if it is UI or an API, redundant
interfaces mean more clutter for users (or developers) to wade through
and more bitrot for the project. After all, as I said - when I've hit
the rev-list / log inconsitencies, I was not looking for UI but indeed
for an internal helper.

Having said that, I'm fine with Junio's argument that we need to keep
git-rev-list for compatibility reasons as long as the relationship
between git-rev-list and git-log is more clearly documented; I would be
happier if the few remaining options would get implemented for git-log
and git-rev-list got deprecated (which does not mean removing it right
away; git-ssh-push was removed after two years), but I don't care that
much as to flame on, it's too hot over here in Central Europe already.
:-)

I will send some documentation patches soon.

By the way, is git log regarded as porcelain or plumbing? That is, are
there any guarantees about stability of git log output format etc.? Can
I use git log in my script and rely on it to behave forever exactly as
it does now? (Modulo bugfixes.)

-- 
				Petr "Pasky" Baudis
Whatever you can do, or dream you can, begin it.
Boldness has genius, power, and magic in it.	-- J. W. von Goethe