|
|
|
@ -59,6 +59,7 @@ use File::Find;
@@ -59,6 +59,7 @@ use File::Find;
|
|
|
|
|
use Getopt::Long qw/:config gnu_getopt no_ignore_case auto_abbrev/; |
|
|
|
|
use IPC::Open3; |
|
|
|
|
use Git; |
|
|
|
|
use Memoize; # core since 5.8.0, Jul 2002 |
|
|
|
|
|
|
|
|
|
BEGIN { |
|
|
|
|
# import functions from Git into our packages, en masse |
|
|
|
@ -72,6 +73,8 @@ BEGIN {
@@ -72,6 +73,8 @@ BEGIN {
|
|
|
|
|
*{"${package}::$_"} = \&{"Git::$_"}; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
Memoize::memoize 'Git::config'; |
|
|
|
|
Memoize::memoize 'Git::config_bool'; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
my ($SVN); |
|
|
|
@ -528,7 +531,7 @@ sub cmd_dcommit {
@@ -528,7 +531,7 @@ sub cmd_dcommit {
|
|
|
|
|
$url = eval { command_oneline('config', '--get', |
|
|
|
|
"svn-remote.$gs->{repo_id}.commiturl") }; |
|
|
|
|
if (!$url) { |
|
|
|
|
$url = $gs->full_url |
|
|
|
|
$url = $gs->full_pushurl |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -676,7 +679,7 @@ sub cmd_branch {
@@ -676,7 +679,7 @@ sub cmd_branch {
|
|
|
|
|
$head ||= 'HEAD'; |
|
|
|
|
|
|
|
|
|
my (undef, $rev, undef, $gs) = working_head_info($head); |
|
|
|
|
my $src = $gs->full_url; |
|
|
|
|
my $src = $gs->full_pushurl; |
|
|
|
|
|
|
|
|
|
my $remote = Git::SVN::read_all_remotes()->{$gs->{repo_id}}; |
|
|
|
|
my $allglobs = $remote->{ $_tag ? 'tags' : 'branches' }; |
|
|
|
@ -727,7 +730,7 @@ sub cmd_branch {
@@ -727,7 +730,7 @@ sub cmd_branch {
|
|
|
|
|
$url = eval { command_oneline('config', '--get', |
|
|
|
|
"svn-remote.$gs->{repo_id}.commiturl") }; |
|
|
|
|
if (!$url) { |
|
|
|
|
$url = $remote->{url}; |
|
|
|
|
$url = $remote->{pushurl} || $remote->{url}; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
my $dst = join '/', $url, $lft, $branch_name, ($rgt || ()); |
|
|
|
@ -1831,6 +1834,8 @@ sub read_all_remotes {
@@ -1831,6 +1834,8 @@ sub read_all_remotes {
|
|
|
|
|
$r->{$1}->{svm} = {}; |
|
|
|
|
} elsif (m!^(.+)\.url=\s*(.*)\s*$!) { |
|
|
|
|
$r->{$1}->{url} = $2; |
|
|
|
|
} elsif (m!^(.+)\.pushurl=\s*(.*)\s*$!) { |
|
|
|
|
$r->{$1}->{pushurl} = $2; |
|
|
|
|
} elsif (m!^(.+)\.(branches|tags)=$svn_refspec$!) { |
|
|
|
|
my ($remote, $t, $local_ref, $remote_ref) = |
|
|
|
|
($1, $2, $3, $4); |
|
|
|
@ -2068,6 +2073,8 @@ sub new {
@@ -2068,6 +2073,8 @@ sub new {
|
|
|
|
|
$self->{url} = command_oneline('config', '--get', |
|
|
|
|
"svn-remote.$repo_id.url") or |
|
|
|
|
die "Failed to read \"svn-remote.$repo_id.url\" in config\n"; |
|
|
|
|
$self->{pushurl} = eval { command_oneline('config', '--get', |
|
|
|
|
"svn-remote.$repo_id.pushurl") }; |
|
|
|
|
$self->rebuild; |
|
|
|
|
$self; |
|
|
|
|
} |
|
|
|
@ -2545,6 +2552,15 @@ sub full_url {
@@ -2545,6 +2552,15 @@ sub full_url {
|
|
|
|
|
$self->{url} . (length $self->{path} ? '/' . $self->{path} : ''); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
sub full_pushurl { |
|
|
|
|
my ($self) = @_; |
|
|
|
|
if ($self->{pushurl}) { |
|
|
|
|
return $self->{pushurl} . (length $self->{path} ? '/' . |
|
|
|
|
$self->{path} : ''); |
|
|
|
|
} else { |
|
|
|
|
return $self->full_url; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
sub set_commit_header_env { |
|
|
|
|
my ($log_entry) = @_; |
|
|
|
@ -3197,6 +3213,8 @@ sub has_no_changes {
@@ -3197,6 +3213,8 @@ sub has_no_changes {
|
|
|
|
|
Memoize::unmemoize 'check_cherry_pick'; |
|
|
|
|
Memoize::unmemoize 'has_no_changes'; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
Memoize::memoize 'Git::SVN::repos_root'; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
END { |
|
|
|
|