Skip to content

Commit

Permalink
git-svn: Teach dcommit --mergeinfo to handle multiple lines
Browse files Browse the repository at this point in the history
"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>
  • Loading branch information
Bryan Jacobs authored and Eric Wong committed Sep 1, 2011
1 parent 85f022e commit 98c4ab3
Show file tree
Hide file tree
Showing 3 changed files with 19 additions and 2 deletions.
5 changes: 3 additions & 2 deletions Documentation/git-svn.txt
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand Down
3 changes: 3 additions & 0 deletions git-svn.perl
Original file line number Diff line number Diff line change
Expand Up @@ -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) {
Expand Down
13 changes: 13 additions & 0 deletions t/t9158-git-svn-mergeinfo.sh
Original file line number Diff line number Diff line change
Expand Up @@ -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

0 comments on commit 98c4ab3

Please sign in to comment.