Skip to content

Commit

Permalink
bundle: Accept prerequisites without commit messages
Browse files Browse the repository at this point in the history
While explicitly stating that the commit message in a prerequisite
line is optional, we required all lines with 40 or more characters
to contain a space after the object name, bailing out if a line
consisted of an object name only. This was to allow bundling a
history to a commit without an message, but the code forgot that it
already called rtrim() to remove that whitespace.

As a workaround, only check for SP when the line has more than 40
characters.

Signed-off-by: Lukas Fleischer <git@cryptocrack.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
  • Loading branch information
Lukas Fleischer authored and Junio C Hamano committed Apr 7, 2013
1 parent 2137ce0 commit 5446e33
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 1 deletion.
2 changes: 1 addition & 1 deletion bundle.c
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ static int parse_bundle_header(int fd, struct bundle_header *header,
* followed by SP and subject line.
*/
if (get_sha1_hex(buf.buf, sha1) ||
(40 <= buf.len && !isspace(buf.buf[40])) ||
(buf.len > 40 && !isspace(buf.buf[40])) ||
(!is_prereq && buf.len <= 40)) {
if (report_path)
error(_("unrecognized header: %s%s (%d)"),
Expand Down
10 changes: 10 additions & 0 deletions t/t5704-bundle.sh
Original file line number Diff line number Diff line change
Expand Up @@ -58,4 +58,14 @@ test_expect_success 'ridiculously long subject in boundary' '
grep "^-[0-9a-f]\\{40\\} " boundary
'

test_expect_success 'prerequisites with an empty commit message' '
: >file1 &&
git add file1 &&
test_tick &&
git commit --allow-empty-message -m "" &&
test_commit file2 &&
git bundle create bundle HEAD^.. &&
git bundle verify bundle
'

test_done

0 comments on commit 5446e33

Please sign in to comment.