Merge branch 'ew/svn-crlf'

"git svn" has been updated to strip CRs in the commit messages, as
recent versions of Subversion rejects them.

* ew/svn-crlf:
  git-svn: convert CRLF to LF in commit message to SVN
This commit is contained in:
Junio C Hamano 2017-12-28 14:08:46 -08:00
commit 63dd544897
2 changed files with 28 additions and 0 deletions

View file

@ -1865,6 +1865,7 @@ sub get_commit_entry {
} }
} }
$msgbuf =~ s/\s+$//s; $msgbuf =~ s/\s+$//s;
$msgbuf =~ s/\r\n/\n/sg; # SVN 1.6+ disallows CRLF
if ($Git::SVN::_add_author_from && defined($author) if ($Git::SVN::_add_author_from && defined($author)
&& !$saw_from) { && !$saw_from) {
$msgbuf .= "\n\nFrom: $author"; $msgbuf .= "\n\nFrom: $author";

27
t/t9169-git-svn-dcommit-crlf.sh Executable file
View file

@ -0,0 +1,27 @@
#!/bin/sh
test_description='git svn dcommit CRLF'
. ./lib-git-svn.sh
test_expect_success 'setup commit repository' '
svn_cmd mkdir -m "$test_description" "$svnrepo/dir" &&
git svn clone "$svnrepo" work &&
(
cd work &&
echo foo >>foo &&
git update-index --add foo &&
printf "a\\r\\n\\r\\nb\\r\\nc\\r\\n" >cmt &&
p=$(git rev-parse HEAD) &&
t=$(git write-tree) &&
cmt=$(git commit-tree -p $p $t <cmt) &&
git update-ref refs/heads/master $cmt &&
git cat-file commit HEAD | tail -n4 >out &&
test_cmp cmt out &&
git svn dcommit &&
printf "a\\n\\nb\\nc\\n" >exp &&
git cat-file commit HEAD | sed -ne 6,9p >out &&
test_cmp exp out
)
'
test_done