diff options
author | Jan Krüger <jk@jk.gs> | 2009-10-27 15:58:14 +0100 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2009-10-27 23:12:44 -0700 |
commit | f1be316ada93158507c315ee7948bb9e6007eb91 (patch) | |
tree | 6b14f18ee0e6a9b0519db5e10493db3afc5509fa /git-rebase--interactive.sh | |
parent | a29aa47da79cfd0ef7ee0ef423e7e5a9a3cf07bd (diff) | |
download | git-f1be316ada93158507c315ee7948bb9e6007eb91.tar.gz git-f1be316ada93158507c315ee7948bb9e6007eb91.tar.xz |
rebase -i: more graceful handling of invalid commands
Currently, when there is an invalid command, the rest of the line is
still treated as if the command had been valid, i.e. rebase -i attempts
to produce a patch, using the next argument as a SHA1 name. If there is
no next argument or an invalid one, very confusing error messages
appear (the line was '.'; path to git-rebase-todo substituted):
Unknown command: .
fatal: ambiguous argument 'Please fix this in the file $somefile.':
unknown revision or path not in the working tree.
Use '--' to separate paths from revisions
fatal: Not a valid object name Please fix this in the file $somefile.
fatal: bad revision 'Please fix this in the file $somefile.'
Instead, verify the validity of the remaining line and error out earlier
if necessary.
Signed-off-by: Jan Krüger <jk@jk.gs>
Acked-by: Johannes Schindelin <Johannes.Schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'git-rebase--interactive.sh')
-rwxr-xr-x | git-rebase--interactive.sh | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/git-rebase--interactive.sh b/git-rebase--interactive.sh index 23ded4832..9b1e899e2 100755 --- a/git-rebase--interactive.sh +++ b/git-rebase--interactive.sh @@ -408,7 +408,12 @@ do_next () { ;; *) warn "Unknown command: $command $sha1 $rest" - die_with_patch $sha1 "Please fix this in the file $TODO." + if git rev-parse --verify -q "$sha1" >/dev/null + then + die_with_patch $sha1 "Please fix this in the file $TODO." + else + die "Please fix this in the file $TODO." + fi ;; esac test -s "$TODO" && return |