Re: [PATCH 4/4] builtin/show: do not prune by pathspec
From: Junio C Hamano <hidden>
Date: 2016-06-15 22:50:57
Michael J Gruber [off-list ref] writes:
By design, "git show commit -- path" is not "git show commit:path", and there is no reason to change that. But "git show commit -- path" simply returns nothing at all "most of the time" because it prunes by pathspec even though it does not walk commits. This is pretty useless.
Hmm, I'm very tempted to suggest throwing it into the "don't do it then" basket.
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. In case the user has specified "--do-walk", assume they want the old behaviour (prune by default).
Compared to "--do-walk", "git show HEAD~5.." would be a much more common way to trigger it, and is a more appropriate justification why you made the non-pruning conditional.
quoted hunk
Signed-off-by: Michael J Gruber <redacted> --- builtin/log.c | 2 ++ 1 files changed, 2 insertions(+), 0 deletions(-)diff --git a/builtin/log.c b/builtin/log.c index 916019c..474a76d 100644 --- a/builtin/log.c +++ b/builtin/log.c@@ -420,6 +420,8 @@ int cmd_show(int argc, const char **argv, const char *prefix) opt.def = "HEAD"; opt.tweak = show_rev_tweak_rev; cmd_log_init(argc, argv, prefix, &rev, &opt); + if (rev.no_walk) + rev.prune = 0; count = rev.pending.nr; objects = rev.pending.objects;