ARB-SVN-Repository: svn_relocate_2_waltz.pl

File svn_relocate_2_waltz.pl, 1.8 KB (added by westram, 12 years ago)

script to relocate old svn+ssh-checkouts to new repository location

Line 
1#!/usr/bin/perl
2
3use strict;
4use warnings;
5
6my $make_patch_cmd = 'svn diff > b4_svn_relocate_2_waltz.patch';
7{
8  my $psp = $ENV{HOME}.'/bin/patch_store.pl';
9  if (-x $psp) { $make_patch_cmd = 'patch_store.pl --keep AUTO'; }
10}
11
12
13sub get_svn_url_rev() {
14  my $cmd = 'svn info';
15  my ($url,$rev) = (undef,undef);
16
17  open(INFO,$cmd.'|') || die "can't exec '$cmd' (Reason: $?)";
18  foreach (<INFO>) {
19    chomp;
20    if (/^URL:\s/) { $url = $'; }
21    if (/^Revision:\s/) { $rev = $'; }
22  }
23  close(INFO);
24
25  if (not defined $url) { die "could not parse 'URL' from '$cmd'"; }
26  if (not defined $rev) { die "could not parse 'Revision' from '$cmd'"; }
27
28  return ($url,$rev);
29}
30
31sub convert_URL($) {
32  my ($old) = @_;
33  if (not $old =~ /\@menuett\.mikro\.biologie\.tu-muenchen\.de\/menuett1\/repository\/ARB\//) {
34    die "expected URL '$old'\nto contain 'menuett.mikro.biologie.tu-muenchen.de/menuett1/repository/ARB'";
35  }
36
37  my ($prefix,$suffix) = ($`,$');
38  my $accept_suffix = 0;
39  if ($suffix eq 'trunk') { $accept_suffix = 1; }
40  elsif ($suffix =~ /^(branches|tags)\/[^\/]+$/) { $accept_suffix = 1; }
41
42  if ($accept_suffix==0) { die "wont accept url '$old'\ndid you call from root of checkout?"; }
43
44  my $new_part = '@svn.arb-home.de/svn/ARB/';
45  return $prefix.$new_part.$suffix;
46}
47
48sub main() {
49  my ($oldurl,$rev) = get_svn_url_rev();
50
51  # print "rev='$rev'\n";
52
53  if (not $rev =~ /^[0-9]+$/) { die "invalid revision '$rev'"; }
54
55  my $newurl = convert_URL($oldurl);
56  print "oldurl='$oldurl'\n";
57  print "newurl='$newurl'\n";
58
59  print "creating safety-patch using\n$make_patch_cmd\n";
60  system($make_patch_cmd)==0 || die "failed to exec '$make_patch_cmd' (Reason: $?)";
61
62  my $switch_command = "svn switch --relocate -r $rev '$oldurl' '$newurl'";
63  print "Running\n$switch_command\n";
64
65  system($switch_command)==0 || die "failed to exec '$switch_command' (Reason: $?)";
66}
67main();