diff options
Diffstat (limited to 'git-svn.perl')
| -rwxr-xr-x | git-svn.perl | 21 |
1 files changed, 14 insertions, 7 deletions
diff --git a/git-svn.perl b/git-svn.perl index 914c707a90..ad01e182df 100755 --- a/git-svn.perl +++ b/git-svn.perl @@ -558,7 +558,7 @@ sub cmd_branch { my ($src, $rev, undef, $gs) = working_head_info($head); - my $remote = Git::SVN::read_all_remotes()->{svn}; + my $remote = Git::SVN::read_all_remotes()->{$gs->{repo_id}}; my $glob = $remote->{ $_tag ? 'tags' : 'branches' }; my ($lft, $rgt) = @{ $glob->{path} }{qw/left right/}; my $dst = join '/', $remote->{url}, $lft, $branch_name, ($rgt || ()); @@ -2403,12 +2403,20 @@ sub find_parent_branch { $gs = Git::SVN->init($u, $p, $repo_id, $ref_id, 1); } my ($r0, $parent) = $gs->find_rev_before($r, 1); - if (!defined $r0 || !defined $parent) { - my ($base, $head) = parse_revision_argument(0, $r); - if ($base <= $r) { + { + my ($base, $head); + if (!defined $r0 || !defined $parent) { + ($base, $head) = parse_revision_argument(0, $r); + } else { + if ($r0 < $r) { + $gs->ra->get_log([$gs->{path}], $r0 + 1, $r, 1, + 0, 1, sub { $base = $_[1] - 1 }); + } + } + if (defined $base && $base <= $r) { $gs->fetch($base, $r); } - ($r0, $parent) = $gs->last_rev_commit; + ($r0, $parent) = $gs->find_rev_before($r, 1); } if (defined $r0 && defined $parent) { print STDERR "Found branch parent: ($self->{ref_id}) $parent\n"; @@ -5007,8 +5015,7 @@ sub minimize_connections { } } if (@emptied) { - my $file = $ENV{GIT_CONFIG} || $ENV{GIT_CONFIG_LOCAL} || - "$ENV{GIT_DIR}/config"; + my $file = $ENV{GIT_CONFIG} || "$ENV{GIT_DIR}/config"; print STDERR <<EOF; The following [svn-remote] sections in your config file ($file) are empty and can be safely removed: |
