Skip to content

Commit

Permalink
git-svn: allow overriding of the SVN repo root in metadata
Browse files Browse the repository at this point in the history
This feature allows users to create repositories from alternate
URLs.  For example, an administrator could run git-svn on the
server locally (accessing via file://) but wish to distribute
the repository with a public http:// or svn:// URL in the
metadata so users of it will see the public URL.

Config key: svn-remote.<remote>.rewriteRoot

Signed-off-by: Eric Wong <normalperson@yhbt.net>
  • Loading branch information
Eric Wong committed Feb 23, 2007
1 parent 0425ea9 commit aea736c
Showing 1 changed file with 25 additions and 1 deletion.
26 changes: 25 additions & 1 deletion git-svn.perl
Original file line number Diff line number Diff line change
Expand Up @@ -1406,6 +1406,26 @@ sub get_commit_parents {
@ret;
}

sub rewrite_root {
my ($self) = @_;
return $self->{-rewrite_root} if exists $self->{-rewrite_root};
my $k = "svn-remote.$self->{repo_id}.rewriteRoot";
my $rwr = eval { command_oneline(qw/config --get/, $k) };
if ($rwr) {
$rwr =~ s#/+$##;
if ($rwr !~ m#^[a-z\+]+://#) {
die "$rwr is not a valid URL (key: $k)\n";
}
}
$self->{-rewrite_root} = $rwr;
}

sub metadata_url {
my ($self) = @_;
($self->rewrite_root || $self->{url}) .
(length $self->{path} ? '/' . $self->{path} : '');
}

sub full_url {
my ($self) = @_;
$self->{url} . (length $self->{path} ? '/' . $self->{path} : '');
Expand Down Expand Up @@ -1704,6 +1724,10 @@ sub make_log_entry {
my ($name, $email) = defined $::users{$author} ? @{$::users{$author}}
: ($author, undef);
if (defined $headrev && $self->use_svm_props) {
if ($self->rewrite_root) {
die "Can't have both 'useSvmProps' and 'rewriteRoot' ",
"options set!\n";
}
my ($uuid, $r) = $headrev =~ m{^([a-f\d\-]{30,}):(\d+)$};
if ($uuid ne $self->{svm}->{uuid}) {
die "UUID mismatch on SVM path:\n",
Expand All @@ -1716,7 +1740,7 @@ sub make_log_entry {
$log_entry{svm_revision} = $r;
$email ||= "$author\@$uuid"
} else {
$log_entry{metadata} = $self->full_url . "\@$rev " .
$log_entry{metadata} = $self->metadata_url. "\@$rev " .
$self->ra->get_uuid;
$email ||= "$author\@" . $self->ra->get_uuid;
}
Expand Down

0 comments on commit aea736c

Please sign in to comment.