config: Fix --unset for continuation lines
find_beginning_of_line didn't take into account that the previous line might have ended with \ in which case it shouldn't stop but continue its search. Signed-off-by: Frank Lichtenheld <frank@lichtenheld.de> Acked-by: Johannes Schindelin <Johannes.Schindelin@gmx.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
527270689c
commit
7a31cc0f96
5
config.c
5
config.c
@ -701,12 +701,17 @@ static ssize_t find_beginning_of_line(const char* contents, size_t size,
|
||||
size_t equal_offset = size, bracket_offset = size;
|
||||
ssize_t offset;
|
||||
|
||||
contline:
|
||||
for (offset = offset_-2; offset > 0
|
||||
&& contents[offset] != '\n'; offset--)
|
||||
switch (contents[offset]) {
|
||||
case '=': equal_offset = offset; break;
|
||||
case ']': bracket_offset = offset; break;
|
||||
}
|
||||
if (offset > 0 && contents[offset-1] == '\\') {
|
||||
offset_ = offset;
|
||||
goto contline;
|
||||
}
|
||||
if (bracket_offset < equal_offset) {
|
||||
*found_bracket = 1;
|
||||
offset = bracket_offset+1;
|
||||
|
@ -71,6 +71,25 @@ EOF
|
||||
|
||||
test_expect_success 'non-match result' 'cmp .git/config expect'
|
||||
|
||||
cat > .git/config <<\EOF
|
||||
[alpha]
|
||||
bar = foo
|
||||
[beta]
|
||||
baz = multiple \
|
||||
lines
|
||||
EOF
|
||||
|
||||
test_expect_success 'unset with cont. lines' \
|
||||
'git config --unset beta.baz'
|
||||
|
||||
cat > expect <<\EOF
|
||||
[alpha]
|
||||
bar = foo
|
||||
[beta]
|
||||
EOF
|
||||
|
||||
test_expect_success 'unset with cont. lines is correct' 'cmp .git/config expect'
|
||||
|
||||
cat > .git/config << EOF
|
||||
[beta] ; silly comment # another comment
|
||||
noIndent= sillyValue ; 'nother silly comment
|
||||
|
Loading…
Reference in New Issue
Block a user