From: Junio C Hamano Date: Fri, 13 Jun 2008 05:41:46 GMT Subject: Re: [PATCH 1/2] git-svn: don't append extra newlines at the end of commit messages. Message-ID: <7vfxrhyjqd.fsf@gitster.siamese.dyndns.org> In-Reply-To: <1213312251-8081-1-git-send-email-apenwarr@gmail.com> Avery Pennarun writes: > 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. Perl part of the code looks fine but I am unsure if we like the ramifications of this patch on existing git-svn managed repositories. Doesn't this change the commit object name on our end for almost all of them? > Signed-off-by: Avery Pennarun > --- > git-svn.perl | 8 +++++--- > 1 files changed, 5 insertions(+), 3 deletions(-) > > diff --git a/git-svn.perl b/git-svn.perl > index 47b0c37..a54979d 100755 > --- a/git-svn.perl > +++ b/git-svn.perl > @@ -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*$/); > @@ -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 $!; > -- > 1.5.4.3