Skip to content

Commit

Permalink
notes.c: Use two newlines (instead of one) when concatenating notes
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
jherland authored and gitster committed Nov 17, 2010
1 parent 32a36b4 commit d4990c4
Show file tree
Hide file tree
Showing 5 changed files with 15 additions and 3 deletions.
7 changes: 4 additions & 3 deletions notes.c
Expand Up @@ -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);

Expand Down
4 changes: 4 additions & 0 deletions t/t3301-notes.sh
Expand Up @@ -955,6 +955,7 @@ Date: Thu Apr 7 15:27:13 2005 -0700
Notes (other):
a fresh note
$whitespace
another fresh note
EOF

Expand All @@ -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

Expand Down
1 change: 1 addition & 0 deletions t/t3303-notes-subtrees.sh
Expand Up @@ -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 &&
Expand Down
1 change: 1 addition & 0 deletions t/t3404-rebase-interactive.sh
Expand Up @@ -593,6 +593,7 @@ test_expect_success 'rebase -i can copy notes' '

cat >expect <<EOF
an earlier note
a note
EOF

Expand Down
5 changes: 5 additions & 0 deletions t/t9301-fast-import-notes.sh
Expand Up @@ -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
Expand Down

0 comments on commit d4990c4

Please sign in to comment.