diff options
author | Bryan Jacobs <bjacobs@woti.com> | 2011-08-31 12:48:39 -0400 |
---|---|---|
committer | Eric Wong <normalperson@yhbt.net> | 2011-09-01 19:55:09 +0000 |
commit | 98c4ab32f80d00d0254bfdcab8d934dcda6a7504 (patch) | |
tree | c129f11b84e4faf77db205fd41181fba67306e1d | |
parent | 85f022e9c124ffeda31a50cab878e1418d694d87 (diff) | |
download | git-98c4ab32f80d00d0254bfdcab8d934dcda6a7504.tar.gz git-98c4ab32f80d00d0254bfdcab8d934dcda6a7504.tar.xz |
git-svn: Teach dcommit --mergeinfo to handle multiple lines
"svn dcommit --mergeinfo" replaces the svn:mergeinfo property in an
upstream SVN repository with the given text. The svn:mergeinfo
property may contain commits originating on multiple branches,
separated by newlines.
Cause space characters in the mergeinfo to be replaced by newlines,
allowing a user to create history representing multiple branches being
merged into one.
Update the corresponding documentation and add a test for the new
functionality.
Signed-off-by: Bryan Jacobs <bjacobs@woti.com>
Acked-by: Sam Vilain <sam@vilain.net>
Acked-by: Eric Wong <normalperson@yhbt.net>
-rw-r--r-- | Documentation/git-svn.txt | 5 | ||||
-rwxr-xr-x | git-svn.perl | 3 | ||||
-rwxr-xr-x | t/t9158-git-svn-mergeinfo.sh | 13 |
3 files changed, 19 insertions, 2 deletions
diff --git a/Documentation/git-svn.txt b/Documentation/git-svn.txt index 6d4e1893b..e75fc191d 100644 --- a/Documentation/git-svn.txt +++ b/Documentation/git-svn.txt @@ -222,8 +222,9 @@ discouraged. Add the given merge information during the dcommit (e.g. `--mergeinfo="/branches/foo:1-10"`). All svn server versions can store this information (as a property), and svn clients starting from - version 1.5 can make use of it. 'git svn' currently does not use it - and does not set it automatically. + version 1.5 can make use of it. To specify merge information from multiple + branches, use a single space character between the branches + (`--mergeinfo="/branches/foo:1-10 /branches/bar:3,5-6,8"`) 'branch':: Create a branch in the SVN repository. diff --git a/git-svn.perl b/git-svn.perl index 32792d3ef..d0678372b 100755 --- a/git-svn.perl +++ b/git-svn.perl @@ -559,6 +559,9 @@ sub cmd_dcommit { } my $expect_url = $url; Git::SVN::remove_username($expect_url); + if (defined($_merge_info)) { + $_merge_info =~ tr{ }{\n}; + } while (1) { my $d = shift @$linear_refs or last; unless (defined $last_rev) { diff --git a/t/t9158-git-svn-mergeinfo.sh b/t/t9158-git-svn-mergeinfo.sh index 3ab43902b..8c9539e1b 100755 --- a/t/t9158-git-svn-mergeinfo.sh +++ b/t/t9158-git-svn-mergeinfo.sh @@ -38,4 +38,17 @@ test_expect_success 'verify svn:mergeinfo' ' test "$mergeinfo" = "/branches/foo:1-10" ' +test_expect_success 'change svn:mergeinfo multiline' ' + touch baz && + git add baz && + git commit -m "baz" && + git svn dcommit --mergeinfo="/branches/bar:1-10 /branches/other:3-5,8,10-11" +' + +test_expect_success 'verify svn:mergeinfo multiline' ' + mergeinfo=$(svn_cmd propget svn:mergeinfo "$svnrepo"/trunk) + test "$mergeinfo" = "/branches/bar:1-10 +/branches/other:3-5,8,10-11" +' + test_done |