Code

notes.c: Use two newlines (instead of one) when concatenating notes
authorJohan Herland <johan@herland.net>
Tue, 9 Nov 2010 21:49:44 +0000 (22:49 +0100)
committerJunio C Hamano <gitster@pobox.com>
Wed, 17 Nov 2010 21:21:29 +0000 (13:21 -0800)
When using combine_notes_concatenate() to concatenate notes, it currently
ensures exactly one newline character between the given notes. However,
when using builtin/notes.c:create_note() to concatenate notes (e.g. by
'git notes append'), it adds a newline character to the trailing newline
of the preceding notes object, thus resulting in _two_ newlines (aka. a
blank line) separating contents of the two notes.

This patch brings combine_notes_concatenate() into consistency with
builtin/notes.c:create_note(), by ensuring exactly _two_ newline characters
between concatenated notes.

The patch also changes a few notes-related selftests accordingly.

Signed-off-by: Johan Herland <johan@herland.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
notes.c
t/t3301-notes.sh
t/t3303-notes-subtrees.sh
t/t3404-rebase-interactive.sh
t/t9301-fast-import-notes.sh

diff --git a/notes.c b/notes.c
index 1674391d386fd9adf91226ab5ed4353736ce3fc3..09a93abca1244f7ce699f8630aaf69b5b15247ce 100644 (file)
--- a/notes.c
+++ b/notes.c
@@ -812,16 +812,17 @@ int combine_notes_concatenate(unsigned char *cur_sha1,
                return 0;
        }
 
-       /* we will separate the notes by a newline anyway */
+       /* we will separate the notes by two newlines anyway */
        if (cur_msg[cur_len - 1] == '\n')
                cur_len--;
 
        /* concatenate cur_msg and new_msg into buf */
-       buf_len = cur_len + 1 + new_len;
+       buf_len = cur_len + 2 + new_len;
        buf = (char *) xmalloc(buf_len);
        memcpy(buf, cur_msg, cur_len);
        buf[cur_len] = '\n';
-       memcpy(buf + cur_len + 1, new_msg, new_len);
+       buf[cur_len + 1] = '\n';
+       memcpy(buf + cur_len + 2, new_msg, new_len);
        free(cur_msg);
        free(new_msg);
 
index 1d82f79ee07e8f9317bc23c49cdf941af36ce3ff..4bf4e52e6c94edb1506fbd2b2fd4bfbb67ecd98a 100755 (executable)
@@ -955,6 +955,7 @@ Date:   Thu Apr 7 15:27:13 2005 -0700
 
 Notes (other):
     a fresh note
+$whitespace
     another fresh note
 EOF
 
@@ -976,8 +977,11 @@ Date:   Thu Apr 7 15:27:13 2005 -0700
 
 Notes (other):
     a fresh note
+$whitespace
     another fresh note
+$whitespace
     append 1
+$whitespace
     append 2
 EOF
 
index d571708ff27e3a64f93eacffb259fa3722e4ee79..704aee81ef5618048bba5209629a0dfde136fdb3 100755 (executable)
@@ -173,6 +173,7 @@ verify_concatenated_notes () {
        while [ $i -gt 0 ]; do
                echo "    commit #$i" &&
                echo "    first note for commit #$i" &&
+               echo "    " &&
                echo "    second note for commit #$i" &&
                i=$(($i-1));
        done > expect &&
index 9f03ce699e8f4c3c654065deae675d1a7b259c74..9ed70dc7eb23c66493b4e6b6cf11869c8182b3a7 100755 (executable)
@@ -593,6 +593,7 @@ test_expect_success 'rebase -i can copy notes' '
 
 cat >expect <<EOF
 an earlier note
+
 a note
 EOF
 
index a5c99d85074a3e04d699afd9b0990a89afe33f54..7cf8cd8a2fed2191b31082c92a95598a3e06513d 100755 (executable)
@@ -255,13 +255,18 @@ EOF
 
 INPUT_END
 
+whitespace="    "
+
 cat >expect <<EXPECT_END
     fourth commit
     pre-prefix of note for fourth commit
+$whitespace
     prefix of note for fourth commit
+$whitespace
     third note for fourth commit
     third commit
     prefix of note for third commit
+$whitespace
     third note for third commit
     second commit
     third note for second commit