115
'use-svm-props' => sub { $icv{useSvmProps} = 1 },
116
'use-svnsync-props' => sub { $icv{useSvnsyncProps} = 1 },
117
'rewrite-root=s' => sub { $icv{rewriteRoot} = $_[1] },
118
+ 'rewrite-uuid=s' => sub { $icv{rewriteUUID} = $_[1] },
119
%remote_opts );
120
my %cmt_opts = ( 'edit|e' => \$_edit,
121
'rmdir' => \$SVN::Git::Editor::_rmdir,
2208
die "Can't have both 'useSvnsyncProps' and 'rewriteRoot' ",
2209
"options set!\n";
2210
}
2211
+ if ($self->rewrite_uuid) {
2212
+ die "Can't have both 'useSvnsyncProps' and 'rewriteUUID' ",
2213
+ "options set!\n";
2214
+ }
2215
2216
my $svnsync;
2217
# see if we have it in our config, first:
2493
$self->{-rewrite_root} = $rwr;
2494
}
2495
2496
+sub rewrite_uuid {
2497
+ my ($self) = @_;
2498
+ return $self->{-rewrite_uuid} if exists $self->{-rewrite_uuid};
2499
+ my $k = "svn-remote.$self->{repo_id}.rewriteUUID";
2500
+ my $rwid = eval { command_oneline(qw/config --get/, $k) };
2501
+ if ($rwid) {
2502
+ $rwid =~ s#/+$##;
2503
+ if ($rwid !~ m#^[a-f0-9]{8}-(?:[a-f0-9]{4}-){3}[a-f0-9]{12}$#) {
2504
+ die "$rwid is not a valid UUID (key: $k)\n";
2505
+ }
2506
+ }
2507
+ $self->{-rewrite_uuid} = $rwid;
2508
+}
2509
+
2510
sub metadata_url {
2511
my ($self) = @_;
2512
($self->rewrite_root || $self->{url}) .
3325
die "Can't have both 'useSvmProps' and 'rewriteRoot' ",
3326
"options set!\n";
3327
}
3328
+ if ($self->rewrite_uuid) {
3329
+ die "Can't have both 'useSvmProps' and 'rewriteUUID' ",
3330
+ "options set!\n";
3331
+ }
3332
my ($uuid, $r) = $headrev =~ m{^([a-f\d\-]{30,}):(\d+)$}i;
3333
# we don't want "SVM: initializing mirror for junk" ...
3334
return undef if $r == 0;
3359
} else {
3360
my $url = $self->metadata_url;
3361
remove_username($url);
3339
- $log_entry{metadata} = "$url\@$rev " .
3340
- $self->ra->get_uuid;
3341
- $email ||= "$author\@" . $self->ra->get_uuid;
3342
- $commit_email ||= "$author\@" . $self->ra->get_uuid;
3362
+ my $uuid = $self->rewrite_uuid || $self->ra->get_uuid;
3363
+ $log_entry{metadata} = "$url\@$rev " . $uuid;
3364
+ $email ||= "$author\@" . $uuid;
3365
+ $commit_email ||= "$author\@" . $uuid;
3366
}
3367
$log_entry{name} = $name;
3368
$log_entry{email} = $email;
3444
'--');
3445
my $metadata_url = $self->metadata_url;
3446
remove_username($metadata_url);
3424
- my $svn_uuid = $self->ra_uuid;
3447
+ my $svn_uuid = $self->rewrite_uuid || $self->ra_uuid;
3448
my $c;
3449
while (<$log>) {
3450
if ( m{^commit ($::sha1)$} ) {