[PATCH 2/3] sha1_name: Suggest commit:./file for path in subdir
From: Michael J Gruber <hidden>
Date: 2016-06-15 22:50:56
Subsystem:
the rest · Maintainer:
Linus Torvalds
Currently, the "Did you mean..." message suggests "commit:fullpath" only. Extend this to show the more convenient "commit:./file" form also. Signed-off-by: Michael J Gruber <redacted> --- sha1_name.c | 11 +++++++---- t/t1506-rev-parse-diagnosis.sh | 2 +- 2 files changed, 8 insertions(+), 5 deletions(-)
diff --git a/sha1_name.c b/sha1_name.c
index faea58d..69cd6c8 100644
--- a/sha1_name.c
+++ b/sha1_name.c@@ -1012,11 +1012,13 @@ static void diagnose_invalid_sha1_path(const char *prefix, if (!get_tree_entry(tree_sha1, fullname, sha1, &mode)) { die("Path '%s' exists, but not '%s'.\n" - "Did you mean '%s:%s'?", + "Did you mean '%s:%s' aka '%s:./%s'?", fullname, filename, object_name, - fullname); + fullname, + object_name, + filename); } die("Path '%s' does not exist in '%s'", filename, object_name);
@@ -1065,9 +1067,10 @@ static void diagnose_invalid_index_path(int stage, if (ce_namelen(ce) == fullnamelen && !memcmp(ce->name, fullname, fullnamelen)) die("Path '%s' is in the index, but not '%s'.\n" - "Did you mean ':%d:%s'?", + "Did you mean ':%d:%s' aka ':%d:./%s'?", fullname, filename, - ce_stage(ce), fullname); + ce_stage(ce), fullname, + ce_stage(ce), filename); } if (!lstat(filename, &st))
diff --git a/t/t1506-rev-parse-diagnosis.sh b/t/t1506-rev-parse-diagnosis.sh
index f9cb202..4a6396f 100755
--- a/t/t1506-rev-parse-diagnosis.sh
+++ b/t/t1506-rev-parse-diagnosis.sh@@ -9,7 +9,7 @@ exec </dev/null test_did_you_mean () { printf "fatal: Path '$2$3' $4, but not ${5:-'$3'}.\n" >expected && - printf "Did you mean '$1:$2$3'?\n" >>expected && + printf "Did you mean '$1:$2$3'${2:+ aka '$1:./$3'}?\n" >>expected && test_cmp expected error }
--
1.7.4.2.668.gba03a4