summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2017-12-14 09:26:32 -0800
committerJunio C Hamano <gitster@pobox.com>2017-12-14 09:26:32 -0800
commit73d8c358ec42823f793ff7b3f85d8d4612c7072e (patch)
tree967a59a01160d03ec21f809ed7e188676e214ff4
parentd9a3764af74ac215e06543c263ec21196d672b49 (diff)
parent95450bbbaaacaf2d603a4fbded25d55243dfb291 (diff)
downloadgit-ew/svn-crlf.tar.gz
Merge branch 'svn-crlf' of git://bogomips.org/git-svn into ew/svn-crlfew/svn-crlf
* 'svn-crlf' of git://bogomips.org/git-svn: git-svn: convert CRLF to LF in commit message to SVN
-rwxr-xr-xgit-svn.perl1
-rwxr-xr-xt/t9169-git-svn-dcommit-crlf.sh27
2 files changed, 28 insertions, 0 deletions
diff --git a/git-svn.perl b/git-svn.perl
index d2404184ba..aa242d4f4f 100755
--- a/git-svn.perl
+++ b/git-svn.perl
@@ -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";
diff --git a/t/t9169-git-svn-dcommit-crlf.sh b/t/t9169-git-svn-dcommit-crlf.sh
new file mode 100755
index 0000000000..54b1f61a2a
--- /dev/null
+++ b/t/t9169-git-svn-dcommit-crlf.sh
@@ -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