summaryrefslogtreecommitdiff
path: root/git-svn.perl
diff options
context:
space:
mode:
authorJohn Goerzen <jgoerzen@complete.org>2008-03-08 22:04:05 (GMT)
committerJunio C Hamano <gitster@pobox.com>2008-03-09 03:20:06 (GMT)
commit0bb91d9a6283661c32878f93a601828cac58d2d6 (patch)
tree97f9e5e772aeb047beb209dbdb5ae356993b49da /git-svn.perl
parent655e8515f279c01f525745d443f509f97cd805ab (diff)
downloadgit-0bb91d9a6283661c32878f93a601828cac58d2d6.zip
git-0bb91d9a6283661c32878f93a601828cac58d2d6.tar.gz
git-0bb91d9a6283661c32878f93a601828cac58d2d6.tar.bz2
Fix dcommit, rebase when rewriteRoot is in use
When the rewriteRoot setting is used with git-svn, it causes the svn IDs added to commit messages to bear a different URL than is actually used to retrieve Subversion data. It is common for Subversion repositories to be available multiple ways: for instance, HTTP to the public, and svn+ssh to people with commit access. The need to switch URLs for access is fairly common as well -- perhaps someone was just given commit access. To switch URLs without having to rewrite history, one can use the old url as a rewriteRoot, and use the new one in the svn-remote url setting. This works well for svn fetching and general git commands. However, git-svn dcommit, rebase, and perhaps other commands do not work in this scenario. They scan the svn ID lines in commit messages and attempt to match them up with url lines in [svn-remote] sections in the git config. This patch allows them to match rewriteRoot options, if such options are present. Signed-off-by: John Goerzen <jgoerzen@complete.org> Acked-by: Eric Wong <normalperson@yhbt.net>
Diffstat (limited to 'git-svn.perl')
-rwxr-xr-xgit-svn.perl7
1 files changed, 6 insertions, 1 deletions
diff --git a/git-svn.perl b/git-svn.perl
index a4ab051..29f39c0 100755
--- a/git-svn.perl
+++ b/git-svn.perl
@@ -1535,9 +1535,14 @@ sub find_by_url { # repos_root and, path are optional
$remotes->{$repo_id}->{$_});
}
my $p = $path;
+ my $rwr = rewrite_root({repo_id => $repo_id});
unless (defined $p) {
$p = $full_url;
- $p =~ s#^\Q$u\E(?:/|$)## or next;
+ my $z = $u;
+ if ($rwr) {
+ $z = $rwr;
+ }
+ $p =~ s#^\Q$z\E(?:/|$)## or next;
}
foreach my $f (keys %$fetch) {
next if $f ne $p;