threads / patch / 41010

patchblame: display a more helpful error message if the file was deleted

Subject: [PATCH] blame: display a more helpful error message if the file was deleted

## tl;dr

2 messages between Dec 16, 2015 and Dec 16, 2015. Diffs are folded; open one to read it.

replies: 1people: 2as markdown or json

Alex Henrie· Dec 16, 2015, 00:00 UTC · lore
`git blame 22414770 generate-cmdlist.perl` currently results in:
    fatal: cannot stat path '22414770': No such file or directory
This patch changes the error message to:
    fatal: ambiguous argument 'generate-cmdlist.perl': unknown revision
    or path not in the working tree.
    Use '--' to separate paths from revisions, like this:
    'git <command> [<revision>...] -- [<file>...]'"

That way, the user knows to rewrite the command as `git blame 22414770 -- generate-cmdlist.perl`.

Signed-off-by: Alex Henrie <alexhenrie24@gmail.com>
---
 builtin/blame.c | 2 --
 1 file changed, 2 deletions(-)
Show changes to builtin/blame.c +0 −2
diff --git a/builtin/blame.c b/builtin/blame.c
index 1df13cf..f070272 100644
--- a/builtin/blame.c
+++ b/builtin/blame.c
@@ -2683,8 +2683,6 @@ parse_done:
 		argv[argc - 1] = "--";
 
 		setup_work_tree();
-		if (!file_exists(path))
-			die_errno("cannot stat path '%s'", path);
 	}
 
 	revs.disable_stdin = 1;
-- 
2.6.4
Junio C Hamano· Dec 16, 2015, 19:56 UTC · re: Alex Henrie · lore

Re: [PATCH] blame: display a more helpful error message if the file was deleted

Alex Henrie <alexhenrie24@gmail.com> writes:
Show 11 quoted lines
> `git blame 22414770 generate-cmdlist.perl` currently results in:
>     fatal: cannot stat path '22414770': No such file or directory
>
> This patch changes the error message to:
>     fatal: ambiguous argument 'generate-cmdlist.perl': unknown revision
>     or path not in the working tree.
>     Use '--' to separate paths from revisions, like this:
>     'git <command> [<revision>...] -- [<file>...]'"
>
> That way, the user knows to rewrite the command as
> `git blame 22414770 -- generate-cmdlist.perl`.

It is unfortunate that the command line parser of 'blame' needs to cater to an oddball syntax, 'git annotate <path> [<rev>]'.

This change still makes us emit the following funny errors:
    $ ./git blame 00000000 generate-cmdlist.prel
    fatal: bad revision 'generate-cmdlist.prel'
    $ ./git blame generate-cmdlist.prel 00000000
    fatal: bad revision '00000000'

and gives the users a wrong impression that the early argument is the path and then comes the revision.

I'll take the patch as-is, because the original is not better, i.e.
    $ git blame 00000000 generate-cmdlist.prel
    fatal: cannot stat path '00000000': No such file or directory
    $ git blame generate-cmdlist.prel 00000000
    fatal: cannot stat path 'generate-cmdlist.prel': No such file or directory
and the change is not making things worse.

But I think in the longer term we should deprecate and eventually remove 'git annotate' with its odd syntax, so that we can lose the special case we have in the command line parser of 'git blame'.

Thanks.
Show 19 quoted lines
>
> Signed-off-by: Alex Henrie <alexhenrie24@gmail.com>
> ---
>  builtin/blame.c | 2 --
>  1 file changed, 2 deletions(-)
>
> diff --git a/builtin/blame.c b/builtin/blame.c
> index 1df13cf..f070272 100644
> --- a/builtin/blame.c
> +++ b/builtin/blame.c
> @@ -2683,8 +2683,6 @@ parse_done:
>  		argv[argc - 1] = "--";
>  
>  		setup_work_tree();
> -		if (!file_exists(path))
> -			die_errno("cannot stat path '%s'", path);
>  	}
>  
>  	revs.disable_stdin = 1;

← back to recent threads