git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH 4/4] builtin/show: do not prune by pathspec

From
Junio C Hamano <gitster@pobox.com>
Date
Apr 1, 2011, 22:59 UTC
Message-ID
<7v7hbdefy3.fsf@alter.siamese.dyndns.org>
In-Reply-To
<7vwrjdej42.fsf@alter.siamese.dyndns.org>

I attempted to rewrite the log message in a bit more objective voice like this:

    builtin/show: do not prune by pathspec
    
    "git show $commit -- $path" does not show anything for a commit that does
    not change the $path.  While this may be technically correct, it is somewhat
    unexpected from the end user's point of view.
    
    Unless "show" is used as "log -p", e.g. "git show HEAD~5..", it makes more
    sense to show at least the log message for commits, even they are
    uninteresting with respect to $path.
    
    Turn off commit pruning (but keep diff limiting of course) so that the
    command shows the log message and the diff that the commit introduces to
    the path.  The diff part may be empty for a given commit that does not
    touch the path.
    
    As an intended side effect, users mistaking "git show commit -- path"
    for "git show commit:path" are automatically reminded that they asked
    git to show a commit, not a blob.
    
    Signed-off-by: Michael J Gruber <git@drmicha.warpmail.net>
    Signed-off-by: Junio C Hamano <gitster@pobox.com>
which made me realize that this change does regress for no-walk case.

What if you (or your homegrown tool or alias) are feeding a list of candidate commits that may have touched the path, without walking, and are expecting them to be filtered?

    $ git show A B C D -- path

We used to get a nice output of "git show C -- path" in such a case but now the output will be cluttered with the log message from a commit that is totally uninteresting with respect to the given path.

I really wanted to like this patch, because I _very much_ liked the "intended" ;-) side effect.

I am torn.
Previous: Junio C HamanoNext: Michael J Gruber
Message 25 of 29 in “Usability improvement request: git show revision -- file”
  1. Piotr KrukowieckiMar 31, 2011
  2. Michael J GruberMar 31, 2011
  3. 1/3 t1506: factor out test for "Did you mean..."Michael J Gruber, Mar 31, 2011
  4. 2/3 sha1_name: Suggest commit:./file for path in subdirMichael J Gruber, Mar 31, 2011
  5. Junio C HamanoMar 31, 2011
  6. Michael J GruberApr 1, 2011
  7. Junio C HamanoApr 1, 2011
  8. 3/3 builtin/show.c: do not prune by pathspecMichael J Gruber, Mar 31, 2011
  9. Johannes SixtMar 31, 2011
  10. Michael J GruberMar 31, 2011
  11. Johannes SixtMar 31, 2011
  12. Michael J GruberMar 31, 2011
  13. Nguyen Thai Ngoc DuyMar 31, 2011
  14. Michael J GruberMar 31, 2011
  15. Nguyen Thai Ngoc DuyMar 31, 2011
  16. Michael J GruberMar 31, 2011
  17. Junio C HamanoMar 31, 2011
  18. Michael J GruberApr 1, 2011
  19. 0/4 reflog, show and command line overridesMichael J Gruber, Apr 1, 2011
  20. 1/4 builtin/log.c: separate default and setup of cmd_log_init()Michael J Gruber, Apr 1, 2011
  21. 2/4 t/t1411: test reflog with formatsMichael J Gruber, Apr 1, 2011
  22. 3/4 reflog: fix overriding of command line optionsMichael J Gruber, Apr 1, 2011
  23. 4/4 builtin/show: do not prune by pathspecMichael J Gruber, Apr 1, 2011
  24. Junio C HamanoApr 1, 2011
  25. Junio C HamanoApr 1, 2011
  26. Michael J GruberApr 3, 2011
  27. Junio C HamanoApr 4, 2011
  28. Michael J GruberApr 5, 2011
  29. Piotr KrukowieckiMar 31, 2011

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.