Tommaso Colombo
2014-10-15 12:39:01 UTC
When populating svn:mergeinfo, git-svn merge checks if the merge parent
of the merged branch is under the same root as the git-svn repository.
This was implemented comparing $gs->repos_root with the return value of
of cmt_metadata for the merge parent. However, the first may contain a
username, whereas the second does not. In this case the comparison
fails.
Remove the username from $gs->repos_root before performing the
comparison.
---
git-svn.perl | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/git-svn.perl b/git-svn.perl
index b6e2186..0a5a5ff 100755
--- a/git-svn.perl
+++ b/git-svn.perl
@@ -707,7 +707,8 @@ sub populate_merge_info {
my $all_parents_ok = 1;
my $aggregate_mergeinfo = '';
my $rooturl = $gs->repos_root;
- my ($target_branch) = $gs->full_pushurl =~ /^\Q$rooturl\E(.*)/;
+ Git::SVN::remove_username($rooturl);
+ my $target_branch = $gs->path;
if (defined($rewritten_parent)) {
# Replace first parent with newly-rewritten version
@@ -729,7 +730,7 @@ sub populate_merge_info {
}
my $branchpath = $1;
- my $ra = Git::SVN::Ra->new($branchurl);
+ my $ra = Git::SVN::Ra->new(add_path_to_url($gs->repos_root, $branchpath));
my (undef, undef, $props) =
$ra->get_dir(canonicalize_path("."), $svnrev);
my $par_mergeinfo = $props->{'svn:mergeinfo'};
@@ -921,6 +922,7 @@ sub cmd_dcommit {
# information from different SVN repos, and paths
# which are not underneath this repository root.
my $rooturl = $gs->repos_root;
+ Git::SVN::remove_username($rooturl);
foreach my $d (@$linear_refs) {
my %parentshash;
read_commit_parents(\%parentshash, $d);
of the merged branch is under the same root as the git-svn repository.
This was implemented comparing $gs->repos_root with the return value of
of cmt_metadata for the merge parent. However, the first may contain a
username, whereas the second does not. In this case the comparison
fails.
Remove the username from $gs->repos_root before performing the
comparison.
---
git-svn.perl | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/git-svn.perl b/git-svn.perl
index b6e2186..0a5a5ff 100755
--- a/git-svn.perl
+++ b/git-svn.perl
@@ -707,7 +707,8 @@ sub populate_merge_info {
my $all_parents_ok = 1;
my $aggregate_mergeinfo = '';
my $rooturl = $gs->repos_root;
- my ($target_branch) = $gs->full_pushurl =~ /^\Q$rooturl\E(.*)/;
+ Git::SVN::remove_username($rooturl);
+ my $target_branch = $gs->path;
if (defined($rewritten_parent)) {
# Replace first parent with newly-rewritten version
@@ -729,7 +730,7 @@ sub populate_merge_info {
}
my $branchpath = $1;
- my $ra = Git::SVN::Ra->new($branchurl);
+ my $ra = Git::SVN::Ra->new(add_path_to_url($gs->repos_root, $branchpath));
my (undef, undef, $props) =
$ra->get_dir(canonicalize_path("."), $svnrev);
my $par_mergeinfo = $props->{'svn:mergeinfo'};
@@ -921,6 +922,7 @@ sub cmd_dcommit {
# information from different SVN repos, and paths
# which are not underneath this repository root.
my $rooturl = $gs->repos_root;
+ Git::SVN::remove_username($rooturl);
foreach my $d (@$linear_refs) {
my %parentshash;
read_commit_parents(\%parentshash, $d);
--
2.1.2.443.g670a3c1.dirty
2.1.2.443.g670a3c1.dirty