summaryrefslogtreecommitdiff
path: root/builtin/commit-tree.c
diff options
context:
space:
mode:
authorLibravatar Jeff King <peff@peff.net>2013-12-06 17:07:52 -0500
committerLibravatar Junio C Hamano <gitster@pobox.com>2013-12-09 14:39:16 -0800
commit62f162f8e7c28cd60f0c18f5e69933efd72659e0 (patch)
treebd015bfd6da12b5012e10f15b9076acdea7c1bc3 /builtin/commit-tree.c
parentrev-parse: correctly diagnose revision errors before "--" (diff)
downloadtgif-62f162f8e7c28cd60f0c18f5e69933efd72659e0.tar.xz
rev-parse: be more careful with munging arguments
When rev-parse looks at whether an argument like "foo..bar" or "foobar^@" is a difference or parent-shorthand, it internally munges the arguments so that it can pass the individual rev arguments to get_sha1(). However, we do not consistently un-munge the result. For cases where we do not match (e.g., "doesnotexist..HEAD"), we would then want to try to treat the argument as a filename. try_difference gets() this right, and always unmunges in this case. However, try_parent_shorthand() never unmunges, leading to incorrect error messages, or even incorrect results: $ git rev-parse foobar^@ foobar fatal: ambiguous argument 'foobar': unknown revision or path not in the working tree. Use '--' to separate paths from revisions, like this: 'git <command> [<revision>...] -- [<file>...]' $ >foobar $ git rev-parse foobar^@ foobar For cases where we do match, neither function unmunges. This does not currently matter, since we are done with the argument. However, a future patch will do further processing, and this prepares for it. In addition, it's simply a confusing interface for some cases to modify the const argument, and others not to. Signed-off-by: Jeff King <peff@peff.net> Reviewed-by: Jonathan Nieder <jrnieder@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'builtin/commit-tree.c')
0 files changed, 0 insertions, 0 deletions