"Shawn O. Pearce" [off-list ref] writes:
quoted hunk
Teach git-describe how to run name-rev
Often users want to know not which tagged version a commit came
after, but which tagged version a commit is contained within.
This latter task is the job of git-name-rev, but most users are
looking to git-describe to do the job.
Junio suggested we make `git describe --contains` run the correct
tool, `git name-rev`, and that's exactly what we do here. The output
of name-rev was adjusted slightly through the new --name-only option,
allowing describe to execv into name-rev and maintain its current
output format.
Signed-off-by: Shawn O. Pearce <redacted>
...
diff --git a/builtin-describe.c b/builtin-describe.c
index 165917e..efbd43f 100644
--- a/builtin-describe.c
+++ b/builtin-describe.c
...
@@ -272,6 +276,17 @@ int cmd_describe(int argc, const char **argv, const char *prefix)
save_commit_buffer = 0;
+ if (contains) {
+ const char **nr = xmalloc((4 + argc - i) * sizeof(char*));
+ nr[0] = "name-rev";
+ nr[1] = "--name-only";
+ nr[2] = "--tags";
+ memcpy(nr + 3, argv + i, (argc - i) * sizeof(char*));
+ nr[3 + argc - i] = NULL;
+ execv_git_cmd(nr);
+ die("unable to start %s", nr[0]);
+ }
+
if (argc <= i)
describe("HEAD", 1);
else
Sorry for a belated question, but is there a reason not to do
this (on top)?
diff --git a/builtin-describe.c b/builtin-describe.c
index efbd43f..2a32af6 100644
--- a/builtin-describe.c
+++ b/builtin-describe.c
@@ -283,8 +283,7 @@ int cmd_describe(int argc, const char **argv, const char *prefix)
nr[2] = "--tags";
memcpy(nr + 3, argv + i, (argc - i) * sizeof(char*));
nr[3 + argc - i] = NULL;
- execv_git_cmd(nr);
- die("unable to start %s", nr[0]);
+ return cmd_name_rev(3 + argc - i, nr, prefix);
}
if (argc <= i)