1
0
mirror of https://github.com/git/git.git synced 2024-09-28 03:00:25 +02:00

git-svn: convert CRLF to LF in commit message to SVN

Subversion since 1.6 does not accept CR characters in the commit
message, so filter it out on our end before 'git svn dcommit' sets
the svn:log property.

Reported-by: Brian Bennett <Brian.Bennett@Transamerica.com>
Signed-off-by: Eric Wong <e@80x24.org>
This commit is contained in:
Eric Wong 2017-12-14 00:05:08 +00:00
parent 95ec6b1b33
commit 95450bbbaa
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/\r\n/\n/sg; # SVN 1.6+ disallows CRLF
if ($Git::SVN::_add_author_from && defined($author)
&& !$saw_from) {
$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