On Fri, May 6, 2016 at 9:35 AM, Michael Rappazzo <[email protected]> wrote:
> Executing `git-rev-parse` with `--git-common-dir`, `--git-path <path>`,
> or `--shared-index-path` from the root of the main worktree results in
> a relative path to the git dir.
>
> When executed from a subdirectory of the main tree, it can incorrectly
> return a path which starts 'sub/path/.git'. Change this to return the
> proper relative path to the git directory.
>
> Related tests marked to expect failure are updated to expect success
>
> Signed-off-by: Michael Rappazzo <[email protected]>
> ---
> diff --git a/builtin/rev-parse.c b/builtin/rev-parse.c
> @@ -564,10 +564,13 @@ int cmd_rev_parse(int argc, const char **argv, const
> char *prefix)
> if (!strcmp(arg, "--git-path")) {
> + struct strbuf sb = STRBUF_INIT;
> if (!argv[i + 1])
> die("--git-path requires an argument");
> - puts(git_path("%s", argv[i + 1]));
> - i++;
> +
> + puts(relative_path(xstrfmt("%s/%s", get_git_dir(),
> argv[++i]),
> + prefix, &sb));
This is leaking the result of xstrfmt().
> + strbuf_release(&sb);
> continue;
> }
> @@ -811,7 +815,12 @@ int cmd_rev_parse(int argc, const char **argv, const
> char *prefix)
> if (the_index.split_index) {
> const unsigned char *sha1 =
> the_index.split_index->base_sha1;
> - puts(git_path("sharedindex.%s",
> sha1_to_hex(sha1)));
> + struct strbuf sb = STRBUF_INIT;
> +
> + puts(relative_path(
> + xstrfmt("%s/sharedindex.%s",
> get_git_dir(), sha1_to_hex(sha1)),
> + prefix, &sb));
Likewise leaking xstrfmt().
> + strbuf_release(&sb);
> }
> continue;
> }
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html