[PATCH v2] trailer: allow spaces in tokens
- From
- Max Bernstein via GitGitGadget <gitgitgadget@gmail.com>
- Date
- Aug 18, 2022, 07:54 UTC
- Message-ID
- <pull.1309.v2.git.git.1660809243298.gitgitgadget@gmail.com>
- In-Reply-To
- <pull.1309.git.git.1660806376021.gitgitgadget@gmail.com>
From: Max Bernstein <max@bernsteinbear.com>
The docs (for example, https://git-scm.com/docs/git-interpret-trailers) say that whitespace should be allowed inside tokens:
> There can also be whitespaces inside the token and the value.
The code since e4319562bc2834096fade432fd90c985b96476db does not allow that, so re-enable and add a test.
Signed-off-by: Max Bernstein <max@bernsteinbear.com>
---
trailer: allow spaces in tokens
Changed since v1:
* "Fixed" a format-patch test. I'm not sure if the new output is what
everyone might expect for this particular case.Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-git-1309%2Ftekknolagi%2Fmaint-v2 Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-git-1309/tekknolagi/maint-v2 Pull-Request: https://github.com/git/git/pull/1309
Range-diff vs v1:
1: 404a6d1b193 ! 1: 4d490851ac2 trailer: allow spaces in tokens
@@ Commit message
Signed-off-by: Max Bernstein <max@bernsteinbear.com>
+ ## t/t4014-format-patch.sh ##
+@@ t/t4014-format-patch.sh: test_expect_success 'signoff: not really a signoff' '
+ 4:Subject: [PATCH] subject
+ 8:
+ 9:I want to mention about Signed-off-by: here.
+- 10:
+- 11:Signed-off-by: C O Mitter <committer@example.com>
++ 10:Signed-off-by: C O Mitter <committer@example.com>
+ EOF
+ test_cmp expect actual
+ '
+
## t/t7513-interpret-trailers.sh ##
@@ t/t7513-interpret-trailers.sh: test_expect_success 'only-trailers omits non-trailer in middle of block' '
test_cmp expected actualt/t4014-format-patch.sh | 3 +-- t/t7513-interpret-trailers.sh | 40 +++++++++++++++++++++++++++++++++++ trailer.c | 7 +----- 3 files changed, 42 insertions(+), 8 deletions(-)
diff --git a/t/t4014-format-patch.sh b/t/t4014-format-patch.sh index fbec8ad2ef7..db95cb6ee66 100755 --- a/t/t4014-format-patch.sh +++ b/t/t4014-format-patch.sh @@ -1544,8 +1544,7 @@ test_expect_success 'signoff: not really a signoff' ' 4:Subject: [PATCH] subject 8: 9:I want to mention about Signed-off-by: here. - 10: - 11:Signed-off-by: C O Mitter <committer@example.com> + 10:Signed-off-by: C O Mitter <committer@example.com> EOF test_cmp expect actual ' diff --git a/t/t7513-interpret-trailers.sh b/t/t7513-interpret-trailers.sh index 97f10905d23..47bf83003ef 100755 --- a/t/t7513-interpret-trailers.sh +++ b/t/t7513-interpret-trailers.sh @@ -1481,6 +1481,46 @@ test_expect_success 'only-trailers omits non-trailer in middle of block' ' test_cmp expected actual ' +test_expect_success 'supports spaces inside token' ' + git config --unset trailer.sign.command && + cat >expected <<-\EOF && + Signed-off-by: nobody <nobody@nowhere> + some other trailer: a value + Signed-off-by: somebody <somebody@somewhere> + EOF + echo "wrote to expected" 1>&2 && + git interpret-trailers --only-trailers >actual <<-\EOF && + subject + + it is important that the trailers below are signed-off-by + so that they meet the "25% trailers Git knows about" heuristic + + Signed-off-by: nobody <nobody@nowhere> + some other trailer: a value + Signed-off-by: somebody <somebody@somewhere> + EOF + test_cmp expected actual +' + +test_expect_success 'does not support space at beginning of token' ' + cat >expected <<-\EOF && + Signed-off-by: nobody <nobody@nowhere> not a trailer: thing + Signed-off-by: somebody <somebody@somewhere> + EOF + echo "wrote to expected" 1>&2 && + git interpret-trailers --only-trailers --unfold >actual <<-\EOF && + subject + + it is important that the trailers below are signed-off-by + so that they meet the "25% trailers Git knows about" heuristic + + Signed-off-by: nobody <nobody@nowhere> + not a trailer: thing + Signed-off-by: somebody <somebody@somewhere> + EOF + test_cmp expected actual +' + test_expect_success 'only input' ' git config trailer.sign.command "echo config-value" && cat >expected <<-\EOF && diff --git a/trailer.c b/trailer.c index d419c20735e..d02a9154512 100644 --- a/trailer.c +++ b/trailer.c @@ -618,17 +618,12 @@ static int token_matches_item(const char *tok, struct arg_item *item, size_t tok */ static ssize_t find_separator(const char *line, const char *separators) { - int whitespace_found = 0; const char *c; for (c = line; *c; c++) { if (strchr(separators, *c)) return c - line; - if (!whitespace_found && (isalnum(*c) || *c == '-')) + if (isalnum(*c) || *c == '-' || (c != line && (*c == ' ' || *c == '\t'))) continue; - if (c != line && (*c == ' ' || *c == '\t')) { - whitespace_found = 1; - continue; - } break; } return -1; base-commit: ad60dddad72dfb8367bd695028b5b8dc6c33661b
-- gitgitgadget