Skip to content

Commit

Permalink
git-svn: don't append extra newlines at the end of commit messages.
Browse files Browse the repository at this point in the history
In git, all commits end in exactly one newline character.  In svn, commits
end in zero or more newlines.  Thus, when importing commits from svn into
git, git-svn always appends two extra newlines to ensure that the
git-svn-id: line is separated from the main commit message by at least one
blank line.

Combined with the terminating newline that's always present in svn commits
produced by git, you usually end up with two blank lines instead of one
between the commit message and git-svn-id: line, which is undesirable.

Instead, let's remove all trailing whitespace from the git commit on the way
through to svn.

Signed-off-by: Avery Pennarun <apenwarr@gmail.com>
Acked-by: Eric Wong <normalperson@yhbt.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
  • Loading branch information
Avery Pennarun authored and Junio C Hamano committed Jun 14, 2008
1 parent 8e7e6f3 commit 328eb9b
Showing 1 changed file with 5 additions and 3 deletions.
8 changes: 5 additions & 3 deletions git-svn.perl
Original file line number Diff line number Diff line change
Expand Up @@ -1023,6 +1023,7 @@ sub get_commit_entry {
my $in_msg = 0;
my $author;
my $saw_from = 0;
my $msgbuf = "";
while (<$msg_fh>) {
if (!$in_msg) {
$in_msg = 1 if (/^\s*$/);
Expand All @@ -1035,14 +1036,15 @@ sub get_commit_entry {
if (/^From:/ || /^Signed-off-by:/) {
$saw_from = 1;
}
print $log_fh $_ or croak $!;
$msgbuf .= $_;
}
}
$msgbuf =~ s/\s+$//s;
if ($Git::SVN::_add_author_from && defined($author)
&& !$saw_from) {
print $log_fh "\nFrom: $author\n"
or croak $!;
$msgbuf .= "\n\nFrom: $author";
}
print $log_fh $msgbuf or croak $!;
command_close_pipe($msg_fh, $ctx);
}
close $log_fh or croak $!;
Expand Down

0 comments on commit 328eb9b

Please sign in to comment.