Re: [PATCH 1/2] git-svn: don't append extra newlines at the end of commit messages.
- From
Junio C Hamano <gitster@pobox.com>
- Date
- Jun 13, 2008, 05:41 UTC
- Message-ID
- <7vfxrhyjqd.fsf@gitster.siamese.dyndns.org>
- In-Reply-To
- <1213312251-8081-1-git-send-email-apenwarr@gmail.com>
Avery Pennarun <apenwarr@gmail.com> writes:
Show 12 quoted lines
> 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?
Show 38 quoted lines
> Signed-off-by: Avery Pennarun <apenwarr@gmail.com>
> ---
> 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