git/contrib/subtree
Philippe Blain a50fcc13dd subtree: use 'git rev-parse --verify [--quiet]' for better error messages
There are three occurences of 'git rev-parse <rev>' in 'git-subtree.sh'
where the command expects a revision and the script dies or exits if the
revision can't be found. In that case, the error message from 'git
rev-parse' is:

    $ git rev-parse <bad rev>
    <bad rev>
    fatal: ambiguous argument '<bad rev>': unknown revision or path not in the working tree.
    Use '--' to separate paths from revisions, like this:
    'git <command> [<revision>...] -- [<file>...]'

This is a little confusing to the user, since this error message is
outputed by 'git subtree'.

At these points in the script, we know that we are looking for a single
revision, so be explicit by using '--verify', resulting in a little
better error message:

    $ git rev-parse --verify <bad rev>
    fatal: Needed a single revision

In the two occurences where we 'die' if 'git rev-parse' fails, 'git
subtree' outputs "could not rev-parse split hash $b from commit $sq", so
we actually do not need the supplementary error message from 'git
rev-parse'; add '--quiet' to silence it.

In the third occurence, we 'exit', so keep the error message from 'git
rev-parse'. Note that this messsage is still suboptimal since it can be
understood to mean that 'git rev-parse' did not receive a single
revision as argument, which is not the case here: the command did
receive a single revision, but the revision is not resolvable to an
available object.

The alternative would be to use '--' after the revision, as suggested by
the first error message, resulting in a clearer error message:

    $ git rev-parse <bad rev> --
    fatal: bad revision '<bad rev>'

Unfortunately we can't use that syntax because in the more common case
of the revision resolving to a known object, the command outputs the
object's hash, a newline, and the dashdash, which breaks the 'git
subtree' script.

Signed-off-by: Philippe Blain <levraiphilippeblain@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2022-10-21 13:51:05 -07:00
..
t t/Makefile: remove 'test-results' on 'make clean' 2022-09-21 11:32:13 -07:00
.gitignore subtree: add an install-html target 2014-10-15 15:17:08 -07:00
COPYING Add 'contrib/subtree/' from commit 'd3a04e06c77d57978bb5230361c64946232cc346' 2012-04-09 20:22:55 -05:00
git-subtree.sh subtree: use 'git rev-parse --verify [--quiet]' for better error messages 2022-10-21 13:51:05 -07:00
git-subtree.txt subtree: push: allow specifying a local rev other than HEAD 2021-04-28 16:47:19 +09:00
INSTALL Fix git-subtree install instructions 2012-04-09 22:26:19 -05:00
Makefile subtree: fix build with AsciiDoctor 2 2020-04-08 12:10:36 -07:00
README Add 'contrib/subtree/' from commit 'd3a04e06c77d57978bb5230361c64946232cc346' 2012-04-09 20:22:55 -05:00
todo subtree: give the docs a once-over 2021-04-28 16:47:19 +09:00

Please read git-subtree.txt for documentation.

Please don't contact me using github mail; it's slow, ugly, and worst of
all, redundant. Email me instead at apenwarr@gmail.com and I'll be happy to
help.

Avery