Re: [PATCH 1/2] git-svn.perl: consider all ranges for a given merge, instead of only tip-by-tip

2012-08-21 Thread Eric Wong
Steven Walter stevenrwal...@gmail.com wrote:
 Consider the case where you have trunk, branch1 of trunk, and branch2 of
 branch1.  trunk is merged back into branch2, and then branch2 is
 reintegrated into trunk.  The merge of branch2 into trunk will have
 svn:mergeinfo property references to both branch1 and branch2.  When
 git-svn fetches the commit that merges branch2 (check_cherry_pick),
 it is necessary to eliminate the merged contents of branch1 as well as
 branch2, or else the merge will be incorrectly ignored as a cherry-pick.
 
 Signed-off-by: Steven Walter stevenrwal...@gmail.com

Thanks, I've Signed-off (also added Sam's Reviewed-by) and
pushed to for-git-master on git://bogomips.org/git-svn

(Will wait on a few other patches before asking Junio to pull)
--
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 1/2] git-svn.perl: consider all ranges for a given merge, instead of only tip-by-tip

2012-08-21 Thread Junio C Hamano
Eric Wong normalper...@yhbt.net writes:

 Steven Walter stevenrwal...@gmail.com wrote:
 Consider the case where you have trunk, branch1 of trunk, and branch2 of
 branch1.  trunk is merged back into branch2, and then branch2 is
 reintegrated into trunk.  The merge of branch2 into trunk will have
 svn:mergeinfo property references to both branch1 and branch2.  When
 git-svn fetches the commit that merges branch2 (check_cherry_pick),
 it is necessary to eliminate the merged contents of branch1 as well as
 branch2, or else the merge will be incorrectly ignored as a cherry-pick.
 
 Signed-off-by: Steven Walter stevenrwal...@gmail.com

 Thanks, I've Signed-off (also added Sam's Reviewed-by) and
 pushed to for-git-master on git://bogomips.org/git-svn

 (Will wait on a few other patches before asking Junio to pull)

If there are stuff that should go to 1.7.12 maintenance track,
please separate them from new features and risky improvements.

Thanks.
--
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH 1/2] git-svn.perl: consider all ranges for a given merge, instead of only tip-by-tip

2012-08-19 Thread Steven Walter
Consider the case where you have trunk, branch1 of trunk, and branch2 of
branch1.  trunk is merged back into branch2, and then branch2 is
reintegrated into trunk.  The merge of branch2 into trunk will have
svn:mergeinfo property references to both branch1 and branch2.  When
git-svn fetches the commit that merges branch2 (check_cherry_pick),
it is necessary to eliminate the merged contents of branch1 as well as
branch2, or else the merge will be incorrectly ignored as a cherry-pick.

Signed-off-by: Steven Walter stevenrwal...@gmail.com
---
 perl/Git/SVN.pm |8 ++-
 t/t9165-git-svn-fetch-merge-branch-of-branch.sh |   60 +++
 2 files changed, 63 insertions(+), 5 deletions(-)
 create mode 100755 t/t9165-git-svn-fetch-merge-branch-of-branch.sh

diff --git a/perl/Git/SVN.pm b/perl/Git/SVN.pm
index 8478d0c..2707003 100644
--- a/perl/Git/SVN.pm
+++ b/perl/Git/SVN.pm
@@ -1695,14 +1695,14 @@ sub find_extra_svn_parents {
my @merge_tips;
my $url = $self-{url};
my $uuid = $self-ra_uuid;
-   my %ranges;
+   my @all_ranges;
for my $merge ( @merges ) {
my ($tip_commit, @ranges) =
lookup_svn_merge( $uuid, $url, $merge );
unless (!$tip_commit or
grep { $_ eq $tip_commit } @$parents ) {
push @merge_tips, $tip_commit;
-   $ranges{$tip_commit} = \@ranges;
+   push @all_ranges, @ranges;
} else {
push @merge_tips, undef;
}
@@ -1717,8 +1717,6 @@ sub find_extra_svn_parents {
my $spec = shift @merges;
next unless $merge_tip and $excluded{$merge_tip};
 
-   my $ranges = $ranges{$merge_tip};
-
# check out 'new' tips
my $merge_base;
eval {
@@ -1740,7 +1738,7 @@ sub find_extra_svn_parents {
my (@incomplete) = check_cherry_pick(
$merge_base, $merge_tip,
$parents,
-   @$ranges,
+   @all_ranges,
   );
 
if ( @incomplete ) {
diff --git a/t/t9165-git-svn-fetch-merge-branch-of-branch.sh 
b/t/t9165-git-svn-fetch-merge-branch-of-branch.sh
new file mode 100755
index 000..13ae7e3
--- /dev/null
+++ b/t/t9165-git-svn-fetch-merge-branch-of-branch.sh
@@ -0,0 +1,60 @@
+#!/bin/sh
+#
+# Copyright (c) 2012 Steven Walter
+#
+
+test_description='git svn merge detection'
+. ./lib-git-svn.sh
+
+svn_ver=$(svn --version --quiet)
+case $svn_ver in
+0.* | 1.[0-4].*)
+   skip_all=skipping git-svn test - SVN too old ($svn_ver)
+   test_done
+   ;;
+esac
+
+test_expect_success 'initialize source svn repo' '
+   svn_cmd mkdir -m x $svnrepo/trunk 
+   svn_cmd mkdir -m x $svnrepo/branches 
+   svn_cmd co $svnrepo/trunk $SVN_TREE 
+   (
+   cd $SVN_TREE 
+   touch foo 
+   svn_cmd add foo 
+   svn_cmd commit -m initial commit 
+   svn_cmd cp -m branch $svnrepo/trunk 
$svnrepo/branches/branch1 
+   svn_cmd switch $svnrepo/branches/branch1 
+   touch bar 
+   svn_cmd add bar 
+   svn_cmd commit -m branch1 
+   svn_cmd cp -m branch $svnrepo/branches/branch1 
$svnrepo/branches/branch2 
+   svn_cmd switch $svnrepo/branches/branch2 
+   touch baz 
+   svn_cmd add baz 
+   svn_cmd commit -m branch2 
+   svn_cmd switch $svnrepo/trunk 
+   touch bar2 
+   svn_cmd add bar2 
+   svn_cmd commit -m trunk 
+   svn_cmd switch $svnrepo/branches/branch2 
+   svn_cmd merge $svnrepo/trunk 
+   svn_cmd commit -m merge trunk
+   svn_cmd switch $svnrepo/trunk 
+   svn_cmd merge --reintegrate $svnrepo/branches/branch2 
+   svn_cmd commit -m merge branch2
+   ) 
+   rm -rf $SVN_TREE
+'
+
+test_expect_success 'clone svn repo' '
+   git svn init -s $svnrepo 
+   git svn fetch
+'
+
+test_expect_success 'verify merge commit' 'x=$(git rev-parse HEAD^2) 
+   y=$(git rev-parse branch2) 
+   test x$x = x$y
+'
+
+test_done
-- 
1.7.9.5

--
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html