Message ID | 20200910170159.1278781-6-gitster@pobox.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | quote_path() clean-ups | expand |
On Thu, Sep 10, 2020 at 10:01:57AM -0700, Junio C Hamano wrote: > Tracked paths with SP in them were cquoted in "git status --short" > output, but untracked, ignored, and unmerged paths weren't. By the way, the long status output will quote paths as appropriate, but _not_ apply this "we should quote spaces" rule. I'm not sure if that came up in earlier discussion or not. Certainly we're free to do whatever looks nicest to humans there, so maybe we prefer to avoid quoting as much as possible. -Peff
Jeff King <peff@peff.net> writes: > On Thu, Sep 10, 2020 at 10:01:57AM -0700, Junio C Hamano wrote: > >> Tracked paths with SP in them were cquoted in "git status --short" >> output, but untracked, ignored, and unmerged paths weren't. > > By the way, the long status output will quote paths as appropriate, but > _not_ apply this "we should quote spaces" rule. I'm not sure if that > came up in earlier discussion or not. Certainly we're free to do > whatever looks nicest to humans there, so maybe we prefer to avoid > quoting as much as possible. Yup, the long output format is strictly for human consumption and one fewer case to enclose the path in a dq-pair is good ;-).
diff --git a/t/t7508-status.sh b/t/t7508-status.sh index e81759319f..2e9c6daf1a 100755 --- a/t/t7508-status.sh +++ b/t/t7508-status.sh @@ -814,6 +814,33 @@ test_expect_success 'status -s without relative paths' ' ' +cat >expect <<\EOF + M dir1/modified +A dir2/added +A "file with spaces" +?? dir1/untracked +?? dir2/modified +?? dir2/untracked +?? "file with spaces 2" +?? untracked +EOF + +test_expect_success 'status -s without relative paths' ' + test_when_finished "git rm --cached \"file with spaces\"; rm -f file*" && + >"file with spaces" && + >"file with spaces 2" && + >"expect with spaces" && + git add "file with spaces" && + + git status -s >output && + test_cmp expect output && + + git status -s --ignored >output && + grep "^!! \"expect with spaces\"$" output && + grep -v "^!! " output >output-wo-ignored && + test_cmp expect output-wo-ignored +' + test_expect_success 'dry-run of partial commit excluding new file in index' ' cat >expect <<EOF && On branch master diff --git a/wt-status.c b/wt-status.c index adbf6958bd..7139623025 100644 --- a/wt-status.c +++ b/wt-status.c @@ -1848,7 +1848,7 @@ static void wt_shortstatus_unmerged(struct string_list_item *it, } else { struct strbuf onebuf = STRBUF_INIT; const char *one; - one = quote_path(it->string, s->prefix, &onebuf, 0); + one = quote_path(it->string, s->prefix, &onebuf, QUOTE_PATH_QUOTE_SP); printf(" %s\n", one); strbuf_release(&onebuf); } @@ -1896,7 +1896,7 @@ static void wt_shortstatus_other(struct string_list_item *it, } else { struct strbuf onebuf = STRBUF_INIT; const char *one; - one = quote_path(it->string, s->prefix, &onebuf, 0); + one = quote_path(it->string, s->prefix, &onebuf, QUOTE_PATH_QUOTE_SP); color_fprintf(s->fp, color(WT_STATUS_UNTRACKED, s), "%s", sign); printf(" %s\n", one); strbuf_release(&onebuf);
Tracked paths with SP in them were cquoted in "git status --short" output, but untracked, ignored, and unmerged paths weren't. The test was stolen from a patch to fix output for the 'untracked' paths by brian m. carlson, with similar tests added for 'ignored' ones. Signed-off-by: Junio C Hamano <gitster@pobox.com> --- t/t7508-status.sh | 27 +++++++++++++++++++++++++++ wt-status.c | 4 ++-- 2 files changed, 29 insertions(+), 2 deletions(-)