git-svn: respect commiturl option for branch/tag
authorIgor Mironov <igor.a.mironov@gmail.com>
Mon, 11 Jan 2010 16:21:23 +0000 (03:21 +1100)
committerEric Wong <normalperson@yhbt.net>
Sat, 23 Jan 2010 11:23:03 +0000 (03:23 -0800)
When constructing a destination URL, use the property 'commiturl' if it
is specified in the configuration file; otherwise take 'url' as usual.
This accommodates the scenario where a user only wants to involve the
writable repository in operations performing a commit and defaults
everything else to a read-only URL.

[ew: shortened subject]

Signed-off-by: Igor Mironov <igor.a.mironov@gmail.com>
Acked-by: Eric Wong <normalperson@yhbt.net>
git-svn.perl
index e05bf366cc1946375be5d9dc91de4f38a0b31540..2e14b22c899105bbd97eaf01c2d2dc1b6b6a9144 100755 (executable)
@@ -708,7 +708,17 @@ sub cmd_branch {
                }
        }
        my ($lft, $rgt) = @{ $glob->{path} }{qw/left right/};
                }
        }
        my ($lft, $rgt) = @{ $glob->{path} }{qw/left right/};
-       my $dst = join '/', $remote->{url}, $lft, $branch_name, ($rgt || ());
+       my $url;
+       if (defined $_commit_url) {
+               $url = $_commit_url;
+       } else {
+               $url = eval { command_oneline('config', '--get',
+                       "svn-remote.$gs->{repo_id}.commiturl") };
+               if (!$url) {
+                       $url = $remote->{url};
+               }
+       }
+       my $dst = join '/', $url, $lft, $branch_name, ($rgt || ());
 
        if ($dst =~ /^https:/ && $src =~ /^http:/) {
                $src=~s/^http:/https:/;
 
        if ($dst =~ /^https:/ && $src =~ /^http:/) {
                $src=~s/^http:/https:/;