Re: [PATCH 3/8] Clean up work-tree handling
From: Junio C Hamano <hidden>
Date: 2016-06-15 22:43:24
Johannes Schindelin [off-list ref] writes:
Not only because of ohloh am I proud that in spite of removing more lines than I added, there were more comments added than removed...
quoted hunk ↗ jump to hunk
diff --git a/builtin-rev-parse.c b/builtin-rev-parse.c index 497903a..3f787a8 100644 --- a/builtin-rev-parse.c +++ b/builtin-rev-parse.c@@ -320,15 +320,9 @@ int cmd_rev_parse(int argc, const char **argv, const char *prefix) continue; } if (!strcmp(arg, "--show-cdup")) { - const char *pfx = prefix; - while (pfx) { - pfx = strchr(pfx, '/'); - if (pfx) { - pfx++; - printf("../"); - } - } - putchar('\n'); + const char *work_tree = get_git_work_tree(); + if (work_tree) + printf("%s\n", work_tree); continue;
This changes semantics, I think. It used to be relative "up" path when no funny work-tree stuff is used, but get_git_work_tree() now seems to return absolute, hence this option as well. If it introduces regression to existing callers is up to what the caller does to the resulting path, though. If it only is used to prefix other things (i.e. path="$(git rev-parse --show-cdup)$1"), the caller would be safe, but if the caller counted number of ../ in the return value to see how deep it is, or if the caller expected to see empty string in order to see if the process is at the toplevel, this change would become a regression.
quoted hunk ↗ jump to hunk
@@ -62,15 +66,8 @@ static void setup_git_env(void) int is_bare_repository(void) { + /* if core.bare is not 'false', let's see if there is a work tree */ + return is_bare_repository_cfg && !get_git_work_tree(); }
I thought about making core.bare a tertiary, true/false/depends, but I think this makes more sense.