Re: [PATCH] Teach dcommit --mergeinfo to handle multiple lines
- From
- Eric Wong <normalperson@yhbt.net>
- Date
- Aug 31, 2011, 20:21 UTC
- Message-ID
- <20110831202131.GA27307@dcvr.yhbt.net>
- In-Reply-To
- <20110831124839.69c70486@robyn.woti.com>
Subsystem commit subjects should be prefixed with the approriate subsystem (e.g. "git-svn: Teach dcommit --mergeinfo ..."
Bryan Jacobs <bjacobs@woti.com> wrote:
Show 13 quoted 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>
This looks reasonable, Cc:-ing Sam since he handled the mergeinfo stuff. After all this time, I still have no experience using SVN mergeinfo anywhere :x
Show 60 quoted lines
> ---
> Documentation/git-svn.txt | 5 +++--
> git-svn.perl | 3 +++
> 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 ed5eca1..3ed28df 100644
> --- a/Documentation/git-svn.txt
> +++ b/Documentation/git-svn.txt
> @@ -211,8 +211,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 89f83fd..3ee26a2 100755
> --- a/git-svn.perl
> +++ b/git-svn.perl
> @@ -548,6 +548,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 3ab4390..8c9539e 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
> --
> 1.7.6