From: Brandon Casey <bcasey@nvidia.com>
To: <gitster@pobox.com>
Cc: <git@vger.kernel.org>, <pclouds@gmail.com>, <jrnieder@gmail.com>,
<john@keeping.me.uk>, Brandon Casey <drafnel@gmail.com>
Subject: [PATCH v2] git-commit: populate the edit buffer with 2 blank lines before s-o-b
Date: Fri, 22 Feb 2013 14:05:27 -0800 [thread overview]
Message-ID: <1361570727-20255-1-git-send-email-bcasey@nvidia.com> (raw)
In-Reply-To: <CA+sFfMdok7wRDhgq7i=b3cu3LB+poExvxLBxYkg8L3pN92bEYg@mail.gmail.com>
From: Brandon Casey <drafnel@gmail.com>
Before commit 33f2f9ab, 'commit -s' would populate the edit buffer with
a blank line before the Signed-off-by line. This provided a nice
hint to the user that something should be filled in. Let's restore that
behavior, but now let's ensure that the Signed-off-by line is preceded
by two blank lines to hint that something should be filled in, and that
a blank line should separate it from the Signed-off-by line.
Plus, add a test for this behavior.
Reported-by: John Keeping <john@keeping.me.uk>
Signed-off-by: Brandon Casey <drafnel@gmail.com>
---
How about something like this?
-Brandon
sequencer.c | 27 +++++++++++++++++++++++++--
t/t7502-commit.sh | 12 ++++++++++++
2 files changed, 37 insertions(+), 2 deletions(-)
diff --git a/sequencer.c b/sequencer.c
index 53ee49a..a07d2d0 100644
--- a/sequencer.c
+++ b/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,
diff --git a/t/t7502-commit.sh b/t/t7502-commit.sh
index deb187e..a53a1e0 100755
--- a/t/t7502-commit.sh
+++ b/t/t7502-commit.sh
@@ -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
+ egrep -v '^#' .git/COMMIT_EDITMSG >actual &&
+ test_cmp expect actual
+'
+
write_script .git/FAKE_EDITOR <<\EOF
mv "$1" "$1.orig"
(
--
1.8.1.3.566.gaa39828
next prev parent reply other threads:[~2013-02-22 22:06 UTC|newest]
Thread overview: 41+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-02-12 10:17 [PATCH v4 00/12] unify appending of sob Brandon Casey
2013-02-12 10:17 ` [PATCH v4 01/12] sequencer.c: rework search for start of footer to improve clarity Brandon Casey
2013-02-12 10:17 ` [PATCH v4 02/12] commit, cherry-pick -s: remove broken support for multiline rfc2822 fields Brandon Casey
2013-02-12 10:17 ` [PATCH v4 03/12] t/test-lib-functions.sh: allow to specify the tag name to test_commit Brandon Casey
2017-05-13 17:41 ` Ævar Arnfjörð Bjarmason
2013-02-12 10:17 ` [PATCH v4 04/12] t/t3511: add some tests of 'cherry-pick -s' functionality Brandon Casey
2013-02-12 10:17 ` [PATCH v4 05/12] sequencer.c: recognize "(cherry picked from ..." as part of s-o-b footer Brandon Casey
2013-02-12 19:13 ` Junio C Hamano
2013-02-12 19:32 ` Brandon Casey
2013-02-12 19:36 ` Junio C Hamano
2013-02-12 19:49 ` Brandon Casey
2013-02-12 19:58 ` Junio C Hamano
2013-02-12 19:45 ` Jonathan Nieder
2013-02-12 10:17 ` [PATCH v4 06/12] sequencer.c: require a conforming footer to be preceded by a blank line Brandon Casey
2013-02-12 10:17 ` [PATCH v4 07/12] sequencer.c: always separate "(cherry picked from" from commit body Brandon Casey
2013-02-12 10:17 ` [PATCH v4 08/12] sequencer.c: teach append_signoff how to detect duplicate s-o-b Brandon Casey
2013-02-12 10:17 ` [PATCH v4 09/12] sequencer.c: teach append_signoff to avoid adding a duplicate newline Brandon Casey
2013-02-12 10:33 ` [PATCH v4.1 " Brandon Casey
2013-02-14 17:58 ` John Keeping
2013-02-15 18:58 ` Brandon Casey
2013-02-17 22:49 ` John Keeping
2013-02-21 18:51 ` Junio C Hamano
2013-02-21 20:26 ` Brandon Casey
2013-02-21 20:29 ` Brandon Casey
2013-02-21 21:27 ` Junio C Hamano
2013-02-22 9:25 ` [PATCH] git-commit: populate the edit buffer with 2 blank lines before s-o-b Brandon Casey
2013-02-22 18:35 ` Junio C Hamano
2013-02-22 22:03 ` Brandon Casey
2013-02-22 22:05 ` Brandon Casey [this message]
2013-02-22 22:35 ` [PATCH v2] " Jeff King
2013-02-22 22:38 ` Junio C Hamano
2013-02-12 10:17 ` [PATCH v4 10/12] t4014: more tests about appending s-o-b lines Brandon Casey
2013-02-12 10:17 ` [PATCH v4 11/12] format-patch: update append_signoff prototype Brandon Casey
2013-02-12 19:29 ` Junio C Hamano
2013-02-12 22:51 ` Brandon Casey
2013-02-12 10:17 ` [PATCH v4 12/12] Unify appending signoff in format-patch, commit and sequencer Brandon Casey
2013-02-12 10:17 ` [PATCH/FYI v4 13/12] fixup! t/t3511: add some tests of 'cherry-pick -s' functionality Brandon Casey
2013-02-12 19:56 ` Jonathan Nieder
2013-02-12 20:20 ` Junio C Hamano
2013-02-12 20:16 ` [PATCH v4 00/12] unify appending of sob Jonathan Nieder
2013-02-12 20:45 ` Junio C Hamano
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1361570727-20255-1-git-send-email-bcasey@nvidia.com \
--to=bcasey@nvidia.com \
--cc=drafnel@gmail.com \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=john@keeping.me.uk \
--cc=jrnieder@gmail.com \
--cc=pclouds@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.