threads / discuss / 48563

why do "git log -h" and "git show -h" print the same thing?

Subject: why do "git log -h" and "git show -h" print the same thing?

## tl;dr

4 messages between May 24, 2018 and May 27, 2018.

replies: 3people: 3as markdown or json

Robert P. J. Day· May 24, 2018, 13:37 UTC · lore
  maybe this is deliberate, but it's confusing that, with git 2.17.0,
the output of both "git log -h" and "git show -h" is exactly the same:
$ git log -h
usage: git log [<options>] [<revision-range>] [[--] <path>...]
   or: git show [<options>] <object>...
    -q, --quiet           suppress diff output
    --source              show source
    --use-mailmap         Use mail map file
    --decorate-refs <pattern>
                          only decorate refs that match <pattern>
    --decorate-refs-exclude <pattern>
                          do not decorate refs that match <pattern>
    --decorate[=...]      decorate options
    -L <n,m:file>         Process line range n,m in file, counting from 1
$
is that what's *supposed* to happen?
rday
-- 
========================================================================
Robert P. J. Day                                 Ottawa, Ontario, CANADA
                  http://crashcourse.ca/dokuwiki

Twitter:                                       http://twitter.com/rpjday
LinkedIn:                               http://ca.linkedin.com/in/rpjday
========================================================================
Stefan Beller· May 24, 2018, 22:42 UTC · re: Robert P. J. Day · lore

Re: why do "git log -h" and "git show -h" print the same thing?

On Thu, May 24, 2018 at 6:37 AM, Robert P. J. Day <rpjday@crashcourse.ca> wrote:
Show 20 quoted lines
>
>   maybe this is deliberate, but it's confusing that, with git 2.17.0,
> the output of both "git log -h" and "git show -h" is exactly the same:
>
> $ git log -h
> usage: git log [<options>] [<revision-range>] [[--] <path>...]
>    or: git show [<options>] <object>...
>
>     -q, --quiet           suppress diff output
>     --source              show source
>     --use-mailmap         Use mail map file
>     --decorate-refs <pattern>
>                           only decorate refs that match <pattern>
>     --decorate-refs-exclude <pattern>
>                           do not decorate refs that match <pattern>
>     --decorate[=...]      decorate options
>     -L <n,m:file>         Process line range n,m in file, counting from 1
> $
>
> is that what's *supposed* to happen?

I would think so, show is just "log -p" with the range clamped down to <object>^..<object>.

It's been in the code like that for a couple years by now, e.g. see e66dc0cc4b1a6 log.c: fix translation markings, 2015-01-06

Robert P. J. Day· May 24, 2018, 22:53 UTC · re: Stefan Beller · lore

Re: why do "git log -h" and "git show -h" print the same thing?

On Thu, 24 May 2018, Stefan Beller wrote:
Show 28 quoted lines
> On Thu, May 24, 2018 at 6:37 AM, Robert P. J. Day <rpjday@crashcourse.ca> wrote:
> >
> >   maybe this is deliberate, but it's confusing that, with git 2.17.0,
> > the output of both "git log -h" and "git show -h" is exactly the same:
> >
> > $ git log -h
> > usage: git log [<options>] [<revision-range>] [[--] <path>...]
> >    or: git show [<options>] <object>...
> >
> >     -q, --quiet           suppress diff output
> >     --source              show source
> >     --use-mailmap         Use mail map file
> >     --decorate-refs <pattern>
> >                           only decorate refs that match <pattern>
> >     --decorate-refs-exclude <pattern>
> >                           do not decorate refs that match <pattern>
> >     --decorate[=...]      decorate options
> >     -L <n,m:file>         Process line range n,m in file, counting from 1
> > $
> >
> > is that what's *supposed* to happen?
>
> I would think so, show is just "log -p" with the range clamped
> down to <object>^..<object>.
>
> It's been in the code like that for a couple years by now,
> e.g. see
> e66dc0cc4b1a6 log.c: fix translation markings, 2015-01-06
  ah, very well, it just caught me by surprise.
rday
-- 
========================================================================
Robert P. J. Day                                 Ottawa, Ontario, CANADA
                  http://crashcourse.ca/dokuwiki

Twitter:                                       http://twitter.com/rpjday
LinkedIn:                               http://ca.linkedin.com/in/rpjday
========================================================================
Thomas Gummerer· May 27, 2018, 10:24 UTC · re: Stefan Beller · lore

Re: why do "git log -h" and "git show -h" print the same thing?

On 05/24, Stefan Beller wrote:
Show 24 quoted lines
> On Thu, May 24, 2018 at 6:37 AM, Robert P. J. Day <rpjday@crashcourse.ca> wrote:
> >
> >   maybe this is deliberate, but it's confusing that, with git 2.17.0,
> > the output of both "git log -h" and "git show -h" is exactly the same:
> >
> > $ git log -h
> > usage: git log [<options>] [<revision-range>] [[--] <path>...]
> >    or: git show [<options>] <object>...
> >
> >     -q, --quiet           suppress diff output
> >     --source              show source
> >     --use-mailmap         Use mail map file
> >     --decorate-refs <pattern>
> >                           only decorate refs that match <pattern>
> >     --decorate-refs-exclude <pattern>
> >                           do not decorate refs that match <pattern>
> >     --decorate[=...]      decorate options
> >     -L <n,m:file>         Process line range n,m in file, counting from 1
> > $
> >
> > is that what's *supposed* to happen?
> 
> I would think so, show is just "log -p" with the range clamped
> down to <object>^..<object>.

Hmm, that's not true though if the object is not a commit, from my understanding? While 'git show' does share some of its code with 'git log', what you get as output may be quite different from what you'd get with 'git log'. So I feel like we're leaking an implementation detail to the user here, and I can see how it is confusing especially for new users.

So I do feel like there's some room for improvement here, by only showing the help for the command that was actually used. I would welcome a patch to that extend, but obviously I'm not the authority here :)

> It's been in the code like that for a couple years by now,
> e.g. see
> e66dc0cc4b1a6 log.c: fix translation markings, 2015-01-06

← back to recent threads