ls-files: fix "--format" output of relative paths
Fix a bug introduced with the "--format" option in
ce74de93
(ls-files: introduce "--format" option, 2022-07-23),
where relative paths were computed using the output buffer,
which could lead to random garbage data in the output.
Signed-off-by: Adam Johnson <me@adamj.eu>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
ce74de931d
commit
cfb62dd006
@ -89,12 +89,15 @@ static void write_name(const char *name)
|
||||
|
||||
static void write_name_to_buf(struct strbuf *sb, const char *name)
|
||||
{
|
||||
const char *rel = relative_path(name, prefix_len ? prefix : NULL, sb);
|
||||
struct strbuf buf = STRBUF_INIT;
|
||||
const char *rel = relative_path(name, prefix_len ? prefix : NULL, &buf);
|
||||
|
||||
if (line_terminator)
|
||||
quote_c_style(rel, sb, NULL, 0);
|
||||
else
|
||||
strbuf_addstr(sb, rel);
|
||||
|
||||
strbuf_release(&buf);
|
||||
}
|
||||
|
||||
static const char *get_tag(const struct cache_entry *ce, const char *tag)
|
||||
|
@ -54,6 +54,22 @@ test_expect_success 'git ls-files --format path v.s. -s' '
|
||||
test_cmp expect actual
|
||||
'
|
||||
|
||||
test_expect_success 'git ls-files --format with relative path' '
|
||||
cat >expect <<-\EOF &&
|
||||
../o1.txt
|
||||
../o2.txt
|
||||
../o3.txt
|
||||
../o4.txt
|
||||
../o5.txt
|
||||
../o6.txt
|
||||
EOF
|
||||
mkdir sub &&
|
||||
cd sub &&
|
||||
git ls-files --format="%(path)" ":/" >../actual &&
|
||||
cd .. &&
|
||||
test_cmp expect actual
|
||||
'
|
||||
|
||||
test_expect_success 'git ls-files --format with -m' '
|
||||
echo change >o1.txt &&
|
||||
cat >expect <<-\EOF &&
|
||||
|
Loading…
Reference in New Issue
Block a user