git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] git-svn: allow the mergeinfo property to be set
@ 2010-09-24  0:52 Steven Walter
  2010-09-24 16:27 ` Eric Wong
  0 siblings, 1 reply; 7+ messages in thread
From: Steven Walter @ 2010-09-24  0:52 UTC (permalink / raw)
  To: normalperson, git; +Cc: Steven Walter

As a first step towards preserving merges across dcommit, we need a
mechanism to update the svn:mergeinfo property.
---
 git-svn.perl |   15 ++++++++++++++-
 1 files changed, 14 insertions(+), 1 deletions(-)

diff --git a/git-svn.perl b/git-svn.perl
index c7c4dcd..1612fd7 100755
--- a/git-svn.perl
+++ b/git-svn.perl
@@ -83,7 +83,7 @@ my ($_stdin, $_help, $_edit,
 	$_version, $_fetch_all, $_no_rebase, $_fetch_parent,
 	$_merge, $_strategy, $_dry_run, $_local,
 	$_prefix, $_no_checkout, $_url, $_verbose,
-	$_git_format, $_commit_url, $_tag);
+	$_git_format, $_commit_url, $_tag, $_merge_info);
 $Git::SVN::_follow_parent = 1;
 $_q ||= 0;
 my %remote_opts = ( 'username=s' => \$Git::SVN::Prompt::_username,
@@ -153,6 +153,7 @@ my %cmd = (
 			  'commit-url=s' => \$_commit_url,
 			  'revision|r=i' => \$_revision,
 			  'no-rebase' => \$_no_rebase,
+			  'mergeinfo=s' => \$_merge_info,
 			%cmt_opts, %fc_opts } ],
 	branch => [ \&cmd_branch,
 	            'Create a branch in the SVN repository',
@@ -568,6 +569,7 @@ sub cmd_dcommit {
 			                       print "Committed r$_[0]\n";
 			                       $cmt_rev = $_[0];
 			                },
+					mergeinfo => $_merge_info,
 			                svn_path => '');
 			if (!SVN::Git::Editor->new(\%ed_opts)->apply_diff) {
 				print "No changes\n$d~1 == $d\n";
@@ -4449,6 +4451,7 @@ sub new {
 	$self->{path_prefix} = length $self->{svn_path} ?
 	                       "$self->{svn_path}/" : '';
 	$self->{config} = $opts->{config};
+	$self->{mergeinfo} = $opts->{mergeinfo};
 	return $self;
 }
 
@@ -4758,6 +4761,11 @@ sub change_file_prop {
 	$self->SUPER::change_file_prop($fbat, $pname, $pval, $self->{pool});
 }
 
+sub change_dir_prop {
+	my ($self, $pbat, $pname, $pval) = @_;
+	$self->SUPER::change_dir_prop($pbat, $pname, $pval, $self->{pool});
+}
+
 sub _chg_file_get_blob ($$$$) {
 	my ($self, $fbat, $m, $which) = @_;
 	my $fh = $::_repository->temp_acquire("git_blob_$which");
@@ -4851,6 +4859,11 @@ sub apply_diff {
 			fatal("Invalid change type: $f");
 		}
 	}
+
+	if (defined($self->{mergeinfo})) {
+		$self->change_dir_prop($self->{bat}{''}, "svn:mergeinfo",
+			               $self->{mergeinfo});
+	}
 	$self->rmdirs if $_rmdir;
 	if (@$mods == 0) {
 		$self->abort_edit;
-- 
1.7.3.4.g4d78d

^ permalink raw reply related	[flat|nested] 7+ messages in thread

* Re: [PATCH] git-svn: allow the mergeinfo property to be set
  2010-09-24  0:52 [PATCH] git-svn: allow the mergeinfo property to be set Steven Walter
@ 2010-09-24 16:27 ` Eric Wong
  2010-09-25  3:51   ` Steven Walter
  0 siblings, 1 reply; 7+ messages in thread
From: Eric Wong @ 2010-09-24 16:27 UTC (permalink / raw)
  To: Steven Walter; +Cc: git

Steven Walter <stevenrwalter@gmail.com> wrote:
> As a first step towards preserving merges across dcommit, we need a
> mechanism to update the svn:mergeinfo property.
> ---

Hi Steven, this looks reasonable.  Sign-off?  A test would be nice, too.

-- 
Eric Wong

^ permalink raw reply	[flat|nested] 7+ messages in thread

* [PATCH] git-svn: allow the mergeinfo property to be set
  2010-09-24 16:27 ` Eric Wong
@ 2010-09-25  3:51   ` Steven Walter
  2010-09-25  4:24     ` Eric Wong
  0 siblings, 1 reply; 7+ messages in thread
From: Steven Walter @ 2010-09-25  3:51 UTC (permalink / raw)
  To: normalperson, git; +Cc: Steven Walter

As a first step towards preserving merges across dcommit, we need a
mechanism to update the svn:mergeinfo property.

Signed-off-by: Steven Walter <stevenrwalter@gmail.com>
---
 git-svn.perl                 |   15 ++++++++++++++-
 t/t9157-git-svn-mergeinfo.sh |   39 +++++++++++++++++++++++++++++++++++++++
 2 files changed, 53 insertions(+), 1 deletions(-)
 create mode 100644 t/t9157-git-svn-mergeinfo.sh

diff --git a/git-svn.perl b/git-svn.perl
index c7c4dcd..1612fd7 100755
--- a/git-svn.perl
+++ b/git-svn.perl
@@ -83,7 +83,7 @@ my ($_stdin, $_help, $_edit,
 	$_version, $_fetch_all, $_no_rebase, $_fetch_parent,
 	$_merge, $_strategy, $_dry_run, $_local,
 	$_prefix, $_no_checkout, $_url, $_verbose,
-	$_git_format, $_commit_url, $_tag);
+	$_git_format, $_commit_url, $_tag, $_merge_info);
 $Git::SVN::_follow_parent = 1;
 $_q ||= 0;
 my %remote_opts = ( 'username=s' => \$Git::SVN::Prompt::_username,
@@ -153,6 +153,7 @@ my %cmd = (
 			  'commit-url=s' => \$_commit_url,
 			  'revision|r=i' => \$_revision,
 			  'no-rebase' => \$_no_rebase,
+			  'mergeinfo=s' => \$_merge_info,
 			%cmt_opts, %fc_opts } ],
 	branch => [ \&cmd_branch,
 	            'Create a branch in the SVN repository',
@@ -568,6 +569,7 @@ sub cmd_dcommit {
 			                       print "Committed r$_[0]\n";
 			                       $cmt_rev = $_[0];
 			                },
+					mergeinfo => $_merge_info,
 			                svn_path => '');
 			if (!SVN::Git::Editor->new(\%ed_opts)->apply_diff) {
 				print "No changes\n$d~1 == $d\n";
@@ -4449,6 +4451,7 @@ sub new {
 	$self->{path_prefix} = length $self->{svn_path} ?
 	                       "$self->{svn_path}/" : '';
 	$self->{config} = $opts->{config};
+	$self->{mergeinfo} = $opts->{mergeinfo};
 	return $self;
 }
 
@@ -4758,6 +4761,11 @@ sub change_file_prop {
 	$self->SUPER::change_file_prop($fbat, $pname, $pval, $self->{pool});
 }
 
+sub change_dir_prop {
+	my ($self, $pbat, $pname, $pval) = @_;
+	$self->SUPER::change_dir_prop($pbat, $pname, $pval, $self->{pool});
+}
+
 sub _chg_file_get_blob ($$$$) {
 	my ($self, $fbat, $m, $which) = @_;
 	my $fh = $::_repository->temp_acquire("git_blob_$which");
@@ -4851,6 +4859,11 @@ sub apply_diff {
 			fatal("Invalid change type: $f");
 		}
 	}
+
+	if (defined($self->{mergeinfo})) {
+		$self->change_dir_prop($self->{bat}{''}, "svn:mergeinfo",
+			               $self->{mergeinfo});
+	}
 	$self->rmdirs if $_rmdir;
 	if (@$mods == 0) {
 		$self->abort_edit;
diff --git a/t/t9157-git-svn-mergeinfo.sh b/t/t9157-git-svn-mergeinfo.sh
new file mode 100644
index 0000000..8337e44
--- /dev/null
+++ b/t/t9157-git-svn-mergeinfo.sh
@@ -0,0 +1,39 @@
+#!/bin/sh
+#
+# Copyright (c) 2010 Steven Walter
+#
+
+test_description='git svn mergeinfo propagation'
+
+. ./lib-git-svn.sh
+
+say 'define NO_SVN_TESTS to skip git svn tests'
+
+test_expect_success \
+    'initialize source svn repo' '
+        svn_cmd mkdir -m x "$svnrepo"/trunk &&
+        svn_cmd co "$svnrepo"/trunk "$SVN_TREE" &&
+        cd "$SVN_TREE" &&
+        touch foo &&
+        svn_cmd add foo &&
+        svn_cmd commit -m "initial commit" &&
+        cd .. &&
+        rm -rf "$SVN_TREE"'
+
+test_expect_success \
+    'clone svn repo' '
+        git svn init "$svnrepo"/trunk &&
+        git svn fetch'
+
+test_expect_success \
+    'change svn:mergeinfo' '
+        touch bar &&
+        git add bar &&
+        git commit -m "bar" &&
+        git svn dcommit --mergeinfo="/branches/foo:1-10"'
+
+test_expect_success \
+    'verify svn:mergeinfo' '
+        [ `svn_cmd propget svn:mergeinfo "$svnrepo"/trunk` == "/branches/foo:1-10" ]'
+
+test_done
-- 
1.6.3.3

^ permalink raw reply related	[flat|nested] 7+ messages in thread

* Re: [PATCH] git-svn: allow the mergeinfo property to be set
  2010-09-25  3:51   ` Steven Walter
@ 2010-09-25  4:24     ` Eric Wong
  2010-10-04  7:56       ` Mathias Lafeldt
  0 siblings, 1 reply; 7+ messages in thread
From: Eric Wong @ 2010-09-25  4:24 UTC (permalink / raw)
  To: Junio C Hamano; +Cc: git, Steven Walter

Steven Walter <stevenrwalter@gmail.com> wrote:
> As a first step towards preserving merges across dcommit, we need a
> mechanism to update the svn:mergeinfo property.
> 
> Signed-off-by: Steven Walter <stevenrwalter@gmail.com>

Thanks Steven,

I fixed a bashism and style issues in test case, but nonetheless acked
and pushed it out to git://git.bogomips.org/git-svn along with a few
others I had forgotten to tell Junio about while I was on vacation:

Eric Wong (1):
      Documentation/git-svn: discourage "noMetadata"

Mathias Lafeldt (1):
      git-svn: fix processing of decorated commit hashes

Steven Walter (2):
      git-svn: check_cherry_pick should exclude commits already in our history
      git-svn: allow the mergeinfo property to be set

-- 
Eric Wong

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH] git-svn: allow the mergeinfo property to be set
  2010-09-25  4:24     ` Eric Wong
@ 2010-10-04  7:56       ` Mathias Lafeldt
  2010-10-04 17:38         ` Junio C Hamano
  0 siblings, 1 reply; 7+ messages in thread
From: Mathias Lafeldt @ 2010-10-04  7:56 UTC (permalink / raw)
  To: Eric Wong; +Cc: Junio C Hamano, git, Steven Walter

Eric Wong wrote:
> Steven Walter <stevenrwalter@gmail.com> wrote:
>> As a first step towards preserving merges across dcommit, we need a
>> mechanism to update the svn:mergeinfo property.
>>
>> Signed-off-by: Steven Walter <stevenrwalter@gmail.com>
> 
> Thanks Steven,
> 
> I fixed a bashism and style issues in test case, but nonetheless acked
> and pushed it out to git://git.bogomips.org/git-svn along with a few
> others I had forgotten to tell Junio about while I was on vacation:
> 
> Eric Wong (1):
>       Documentation/git-svn: discourage "noMetadata"
> 
> Mathias Lafeldt (1):
>       git-svn: fix processing of decorated commit hashes
> 
> Steven Walter (2):
>       git-svn: check_cherry_pick should exclude commits already in our history
>       git-svn: allow the mergeinfo property to be set
> 

So, is Junio aware of those patches? Or is it better to resubmit my fix
separately?

-Mathias

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH] git-svn: allow the mergeinfo property to be set
  2010-10-04  7:56       ` Mathias Lafeldt
@ 2010-10-04 17:38         ` Junio C Hamano
  2010-10-04 22:05           ` Eric Wong
  0 siblings, 1 reply; 7+ messages in thread
From: Junio C Hamano @ 2010-10-04 17:38 UTC (permalink / raw)
  To: Mathias Lafeldt; +Cc: Eric Wong, Junio C Hamano, git, Steven Walter

Mathias Lafeldt <misfire@debugon.org> writes:

>> I fixed a bashism and style issues in test case, but nonetheless acked
>> and pushed it out to git://git.bogomips.org/git-svn along with a few
>> others I had forgotten to tell Junio about while I was on vacation:
>> 
>> Eric Wong (1):
>>       Documentation/git-svn: discourage "noMetadata"
>> 
>> Mathias Lafeldt (1):
>>       git-svn: fix processing of decorated commit hashes
>> 
>> Steven Walter (2):
>>       git-svn: check_cherry_pick should exclude commits already in our history
>>       git-svn: allow the mergeinfo property to be set
>> 
>
> So, is Junio aware of those patches? Or is it better to resubmit my fix
> separately?

Now I am ;-)  Thanks for reminding me.

I found these four near Eric's 'master':

  833fde5 git-svn: allow the mergeinfo property to be set
  8565a56 git-svn: fix processing of decorated commit hashes
  a3c7505 git-svn: check_cherry_pick should exclude commits already in our history
  c9be27f Documentation/git-svn: discourage "noMetadata"

They all (perhaps except the very tip one) look fixes not enhancements, so
I'll merge it to 'maint', so it can appear in 'master' and also in 1.7.3.2
in due course.

If 833fde5 needs to be excluded from 'maint', please advise.

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH] git-svn: allow the mergeinfo property to be set
  2010-10-04 17:38         ` Junio C Hamano
@ 2010-10-04 22:05           ` Eric Wong
  0 siblings, 0 replies; 7+ messages in thread
From: Eric Wong @ 2010-10-04 22:05 UTC (permalink / raw)
  To: Junio C Hamano; +Cc: Mathias Lafeldt, git, Steven Walter

Junio C Hamano <gitster@pobox.com> wrote:
> I found these four near Eric's 'master':
> 
>   833fde5 git-svn: allow the mergeinfo property to be set
>   8565a56 git-svn: fix processing of decorated commit hashes
>   a3c7505 git-svn: check_cherry_pick should exclude commits already in our history
>   c9be27f Documentation/git-svn: discourage "noMetadata"
> 
> They all (perhaps except the very tip one) look fixes not enhancements, so
> I'll merge it to 'maint', so it can appear in 'master' and also in 1.7.3.2
> in due course.
> 
> If 833fde5 needs to be excluded from 'maint', please advise.

Yes, 833fde5 is an enhancement so it should be left out of 'maint'.

In the future, I suppose I could maintain my own 'maint' branch to make
your life easier.

-- 
Eric Wong

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2010-10-04 22:06 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-09-24  0:52 [PATCH] git-svn: allow the mergeinfo property to be set Steven Walter
2010-09-24 16:27 ` Eric Wong
2010-09-25  3:51   ` Steven Walter
2010-09-25  4:24     ` Eric Wong
2010-10-04  7:56       ` Mathias Lafeldt
2010-10-04 17:38         ` Junio C Hamano
2010-10-04 22:05           ` Eric Wong

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).