зеркало из https://github.com/microsoft/git.git
git-commit: populate the edit buffer with 2 blank lines before s-o-b
'commit -s' populates the edit buffer with a blank line before the
Signed-off-by line, to allow the user to immediately start typing
the log message. But commit 33f2f9ab
removed this space, forcing
the user to first push the Signed-off-by line down to open a place
to type the log message.
Fix this regression and let's ensure that the Signed-off-by line is
preceded by two blank lines, instead of just one, to hint that
something should be filled in, and that a blank line should separate
it from the body and the Signed-off-by line.
Add a test for this behavior.
Reported-by: John Keeping <john@keeping.me.uk>
Signed-off-by: Brandon Casey <drafnel@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Родитель
959a26231f
Коммит
8c613fd5ef
27
sequencer.c
27
sequencer.c
|
@ -1127,10 +1127,33 @@ void append_signoff(struct strbuf *msgbuf, int ignore_footer, unsigned flag)
|
|||
const char *append_newlines = NULL;
|
||||
size_t len = msgbuf->len - ignore_footer;
|
||||
|
||||
if (len && msgbuf->buf[len - 1] != '\n')
|
||||
if (!len) {
|
||||
/*
|
||||
* The buffer is completely empty. Leave foom for
|
||||
* the title and body to be filled in by the user.
|
||||
*/
|
||||
append_newlines = "\n\n";
|
||||
else if (len > 1 && msgbuf->buf[len - 2] != '\n')
|
||||
} else if (msgbuf->buf[len - 1] != '\n') {
|
||||
/*
|
||||
* Incomplete line. Complete the line and add a
|
||||
* blank one so that there is an empty line between
|
||||
* the message body and the sob.
|
||||
*/
|
||||
append_newlines = "\n\n";
|
||||
} else if (len == 1) {
|
||||
/*
|
||||
* Buffer contains a single newline. Add another
|
||||
* so that we leave room for the title and body.
|
||||
*/
|
||||
append_newlines = "\n";
|
||||
} else if (msgbuf->buf[len - 2] != '\n') {
|
||||
/*
|
||||
* Buffer ends with a single newline. Add another
|
||||
* so that there is an empty line between the message
|
||||
* body and the sob.
|
||||
*/
|
||||
append_newlines = "\n";
|
||||
} /* else, the buffer already ends with two newlines. */
|
||||
|
||||
if (append_newlines)
|
||||
strbuf_splice(msgbuf, msgbuf->len - ignore_footer, 0,
|
||||
|
|
|
@ -349,6 +349,18 @@ test_expect_success 'A single-liner subject with a token plus colon is not a foo
|
|||
|
||||
'
|
||||
|
||||
test_expect_success 'commit -s places sob on third line after two empty lines' '
|
||||
git commit -s --allow-empty --allow-empty-message &&
|
||||
cat <<-EOF >expect &&
|
||||
|
||||
|
||||
Signed-off-by: $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL>
|
||||
|
||||
EOF
|
||||
sed -e "/^#/d" -e "s/^:.*//" .git/COMMIT_EDITMSG >actual &&
|
||||
test_cmp expect actual
|
||||
'
|
||||
|
||||
write_script .git/FAKE_EDITOR <<\EOF
|
||||
mv "$1" "$1.orig"
|
||||
(
|
||||
|
|
Загрузка…
Ссылка в новой задаче