git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH] git svn dcommit: avoid self-referential mergeinfo lines when svn.pushmergeinfo is configured

From
EWEric Wong <normalperson@yhbt.net>
Date
Mar 15, 2012, 22:02 UTC
Message-ID
<20120315220242.GA9348@dcvr.yhbt.net>
In-Reply-To
<CAHkK2bpq1J2SW2P1tkFnjw5dWEr=uQrfrTUaS2J-swuKsP4kig@mail.gmail.com>
Avishay Lavie <avishay.lavie@gmail.com> wrote:
> [PATCH] git svn dcommit: avoid self-referential mergeinfo lines when
> svn.pushmergeinfo flag is configured

Subject line is too long, ~50 chars is the limit. See git-commit(1) / Documentation/SubmittingPatches

Show 20 quoted lines
> When svn.pushmergeinfo is configured, git svn dcommit tries to
> automatically populate svn:mergeinfo properties by merging the parent
> branch's mergeinfo into the committed one on each merge commit. This
> process can add self-referential mergeinfo lines, i.e. ones that
> reference the same branch being committed into (e.g. when
> reintegrating a branch to trunk after previously having merged trunk
> into it), which are then mishandled by SVN and cause errors in mixed
> SVN/Git environments.
> For more details, see my original report on the issue at [1].
> 
> This commit adds a step to git svn dcommit that filters out any
> mergeinfo lines referencing the target branch from the mergeinfo, thus
> avoiding the problem.
> 
> [1] http://thread.gmane.org/gmane.comp.version-control.git/191932
> 
> Signed-off-by: Avishay Lavie <avishay.lavie@gmail.com>
> ---
> This is my first time sending a patch to the group, so if I'm doing
> something wrong, please let me know.
Noted :)

Sam Vilain should be Cc:-ed on mergeinfo-related stuff. I don't know my way around mergeinfo stuff at all.

This test breaks t9161-git-svn-mergeinfo-push.sh:
  not ok - 12 check reintegration mergeinfo
  #
  #               mergeinfo=$(svn_cmd propget svn:mergeinfo "$svnrepo"/branches/svnb4)
  #               test "$mergeinfo" = "/branches/svnb1:2-4,7-9,13-18
  #       /branches/svnb2:3,8,16-17
  #       /branches/svnb3:4,9
  #       /branches/svnb4:5-6,10-12
  #       /branches/svnb5:6,11"

Be sure tests run successfully before submitting patches (or ask for help fixing tests).

Lastly, formatting: some lines are too long (80 columns max) and there's trailing whitespace.

Show 38 quoted lines
>  git-svn.perl |   15 +++++++++++++++
>  1 files changed, 15 insertions(+), 0 deletions(-)
> 
> diff --git a/git-svn.perl b/git-svn.perl
> index eeb83d3..1ed409d 100755
> --- a/git-svn.perl
> +++ b/git-svn.perl
> @@ -752,6 +752,19 @@ sub populate_merge_info {
>  	return undef;
>  }
> 
> +sub remove_self_referential_merge_info {
> +	return $_merge_info unless defined $_merge_info;
> +
> +	my ($_merge_info, $branchurl, $gs) = @_;
> +	my $rooturl = $gs->repos_root;
> +	
> +	unless ($branchurl =~ /^\Q$rooturl\E(.*)/) {
> +		fatal "URL to commit to is not under SVN root $rooturl!";
> +	}
> +	my $branchpath = $1;
> +	return join("\n", grep { $_ !~ m/^$branchpath\:/ } split(/\n/, $_merge_info));
> +}
> +
>  sub cmd_dcommit {
>  	my $head = shift;
>  	command_noisy(qw/update-index --refresh/);
> @@ -902,6 +915,8 @@ sub cmd_dcommit {
>  				                             $uuid,
>  				                             $linear_refs,
>  				                             $rewritten_parent);
> +
> +				$_merge_info = remove_self_referential_merge_info($_merge_info, $url, $gs);
>  			}
> 
>  			my %ed_opts = ( r => $last_rev,
> -- 
> 1.7.8.msysgit.0
Previous: Thomas RastNext: Bryan Jacobs
Message 4 of 6 in “git svn dcommit: avoid self-referential mergeinfo lines when svn.pushmergeinfo is configured”
  1. git svn dcommit: avoid self-referential mergeinfo lines when svn.pushmergeinfo is configuredAvishay Lavie, Mar 14, 2012
  2. Bryan JacobsMar 14, 2012
  3. Thomas RastMar 14, 2012
  4. Eric WongMar 15, 2012
  5. Bryan JacobsMar 15, 2012
  6. Sam VilainMar 15, 2012

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.