| 1 | # TODO: svn mv --parents Various/Swierszcz_Piotr/Energy_1_2.sap Various/Swierszcz_Piotr/Last_World.sap
|
|---|
| 2 |
|
|---|
| 3 | use File::Basename;
|
|---|
| 4 | use File::Find;
|
|---|
| 5 | use POSIX qw(strftime);
|
|---|
| 6 |
|
|---|
| 7 | #my $repo = 'file:///C:/0/a8/asap/aasma/import/repo';
|
|---|
| 8 | my $repo = 'svn://asma.scene.pl/asma';
|
|---|
| 9 | my $globopt = '--username pfusik';
|
|---|
| 10 |
|
|---|
| 11 | my @dirs;
|
|---|
| 12 |
|
|---|
| 13 | sub wanted() {
|
|---|
| 14 | push @dirs, $File::Find::name if -d;
|
|---|
| 15 | }
|
|---|
| 16 |
|
|---|
| 17 | sub dirs($) {
|
|---|
| 18 | my ($dir) = @_;
|
|---|
| 19 | @dirs = ();
|
|---|
| 20 | find(\&wanted, $dir);
|
|---|
| 21 | shift @dirs;
|
|---|
| 22 | return map { s!^\Q$dir\E/!!; $_; } @dirs;
|
|---|
| 23 | }
|
|---|
| 24 |
|
|---|
| 25 | sub indir($\@) {
|
|---|
| 26 | my ($file, $dirs) = @_;
|
|---|
| 27 | my @r = grep $file =~ m!^$_/!, @$dirs;
|
|---|
| 28 | return pop @r;
|
|---|
| 29 | }
|
|---|
| 30 |
|
|---|
| 31 | sub shell($) {
|
|---|
| 32 | print @_, "\n";
|
|---|
| 33 | # system @_;
|
|---|
| 34 | }
|
|---|
| 35 |
|
|---|
| 36 | sub commit($$$$) {
|
|---|
| 37 | my ($d, $log, $tag, $taglog) = @_;
|
|---|
| 38 | shell "svn commit $globopt -m '$log' ..";
|
|---|
| 39 | my $f = (-e "$d/Docs/Asma.txt") ? "$d/Docs/Asma.txt" : "$d/Docs/Readme.txt";
|
|---|
| 40 | my $t = POSIX::strftime('%FT%T.000000Z', localtime((stat $f)[9]));
|
|---|
| 41 | shell "svn propset $globopt svn:date --revprop -r HEAD $t";
|
|---|
| 42 | shell "svn cp $globopt -m '$taglog' $repo/trunk/asma $repo/tags/$tag";
|
|---|
| 43 | shell "svn propset $globopt svn:date --revprop -r HEAD $t";
|
|---|
| 44 | }
|
|---|
| 45 |
|
|---|
| 46 | if (0) {
|
|---|
| 47 | shell "rm -rf trunk repo";
|
|---|
| 48 | shell "svnadmin create --fs-type fsfs repo";
|
|---|
| 49 | shell "touch repo/hooks/pre-revprop-change.bat";
|
|---|
| 50 | shell "svn mkdir -m 'Repository init' $repo/trunk $repo/tags $repo/branches";
|
|---|
| 51 | shell "svn co $repo/trunk trunk";
|
|---|
| 52 | }
|
|---|
| 53 | shell 'set -e';
|
|---|
| 54 | shell 'cd trunk';
|
|---|
| 55 | shell 'mkdir asma && svn add asma && cd asma';
|
|---|
| 56 | shell "cp -r ../../ASMA05/* .";
|
|---|
| 57 | shell "svn add *";
|
|---|
| 58 | commit('ASMA05', 'Imported ASMA 0.5', 'asma-0.5', 'PRE-RELEASE ASMA 0.5');
|
|---|
| 59 | my $p = 'ASMA05';
|
|---|
| 60 | for my $d ('ASMA06' .. 'ASMA35') {
|
|---|
| 61 | shell "echo -------- $d --------";
|
|---|
| 62 | my @pd = dirs($p);
|
|---|
| 63 | my @cd = dirs($d);
|
|---|
| 64 | my %pd = map { $_ => 1 } @pd;
|
|---|
| 65 | my %cd = map { $_ => 1 } @cd;
|
|---|
| 66 | my @rd = grep !$cd{$_}, @pd;
|
|---|
| 67 | my @ad = grep !$pd{$_}, @cd;
|
|---|
| 68 | my %md;
|
|---|
| 69 | my %nd;
|
|---|
| 70 | my @g = `git diff -M -l99999 --name-status $p $d`;
|
|---|
| 71 | my @a;
|
|---|
| 72 | if ($d eq 'ASMA29') {
|
|---|
| 73 | shell "svn mv Docs/Update1$_.txt Docs/Update2$_.txt" for 0 .. 8;
|
|---|
| 74 | shell "svn mv Docs/Update0$_.txt Docs/Update1$_.txt" for 1 .. 9;
|
|---|
| 75 | }
|
|---|
| 76 | elsif ($d eq 'ASMA33') {
|
|---|
| 77 | shell "svn mv Various Composers";
|
|---|
| 78 | shell "svn mv Composers/Benoth_Sukkor Composers/Stanik_Krzysztof";
|
|---|
| 79 | $md{'Composers/Benoth_Sukkor'} = 'Composers/Stanik_Krzysztof';
|
|---|
| 80 | shell "svn mv Composers/Trokowicz_B Composers/Trokowicz_Bartolomiej";
|
|---|
| 81 | $md{'Composers/Trokowicz_B'} = 'Composers/Trokowicz_Bartolomiej';
|
|---|
| 82 | shell "svn mv Composers/Zur-soft Composers/Zur_soft";
|
|---|
| 83 | $md{'Various/Zur-soft'} = 'Composers/Zur_soft';
|
|---|
| 84 | }
|
|---|
| 85 | for (@g) {
|
|---|
| 86 | if ($d eq 'ASMA29' && m!^(A\t$d|D\t$p)/Docs/Update\d\d\.txt$!) {
|
|---|
| 87 | }
|
|---|
| 88 | if (m!^A\t$d/(.+)$!) {
|
|---|
| 89 | push @a, $1 if $1 ne 'Various/Ramzes/Endless_Dream_5.sap';
|
|---|
| 90 | }
|
|---|
| 91 | elsif (m!^R0*(\d+)\t$p/(.+?)\t$d/(.+)$!) {
|
|---|
| 92 | my ($perc, $rf, $af) = ($1, $2, $3);
|
|---|
| 93 | my $rd = indir($rf, @rd);
|
|---|
| 94 | my $ad = indir($af, @ad);
|
|---|
| 95 | if (defined($rd) && defined($ad)
|
|---|
| 96 | && $ad ne 'Various/Grayscale' && $ad ne 'Composers/Kuczek_Ireneusz/Worktunes'
|
|---|
| 97 | && $rd ne 'Unsorted' && $rd ne 'Demos' && $rd ne 'Games/Various') {
|
|---|
| 98 | if (exists($md{$rd})) {
|
|---|
| 99 | die $_ if $md{$rd} ne $ad;
|
|---|
| 100 | }
|
|---|
| 101 | else {
|
|---|
| 102 | $md{$rd} = $ad;
|
|---|
| 103 | shell "svn mv --parents $rd $ad" unless "$rd $ad" =~ m!^Various/(.+?) Composers/\1$!;
|
|---|
| 104 | }
|
|---|
| 105 | $rf =~ s/^$rd/$ad/;
|
|---|
| 106 | shell "svn mv $rf $af # RENAME $perc%" if $rf ne $af;
|
|---|
| 107 | }
|
|---|
| 108 | else {
|
|---|
| 109 | if ($af eq 'Demos/Ray_of_Hope_2.sap') {
|
|---|
| 110 | push @a, $af;
|
|---|
| 111 | $af = 'Various/Ramzes/Endless_Dream_5.sap' ;
|
|---|
| 112 | }
|
|---|
| 113 | if ($af eq 'Various/Szpilowski_Michal/Sej-mik.sap') {
|
|---|
| 114 | push @a, $af;
|
|---|
| 115 | shell "svn rm $rf";
|
|---|
| 116 | next;
|
|---|
| 117 | }
|
|---|
| 118 | # --parents does this
|
|---|
| 119 | #$ad = dirname($af);
|
|---|
| 120 | #unless ($nd{$ad} || -d "$p/$ad") {
|
|---|
| 121 | # shell "mkdir -p $ad && svn add $ad";
|
|---|
| 122 | # $nd{$ad} = 1;
|
|---|
| 123 | #}
|
|---|
| 124 | $rf =~ s/^.*?'.*$/"$&"/;
|
|---|
| 125 | shell "svn mv --parents $rf $af # $perc%";
|
|---|
| 126 | }
|
|---|
| 127 | }
|
|---|
| 128 | elsif (m!^D\t$p/(.+)$!) {
|
|---|
| 129 | my $f = $1;
|
|---|
| 130 | shell "svn rm $f" unless defined indir($f, @rd);
|
|---|
| 131 | }
|
|---|
| 132 | elsif (m!^M!) {
|
|---|
| 133 | }
|
|---|
| 134 | else {
|
|---|
| 135 | die $_;
|
|---|
| 136 | }
|
|---|
| 137 | }
|
|---|
| 138 | shell "cp -r ../../$d/* .";
|
|---|
| 139 | exists($md{$_}) || shell "svn rm $_" for @rd;
|
|---|
| 140 | s/^.*?'.*$/"$&"/, shell "svn add --parents $_" for @a;
|
|---|
| 141 | $d =~ /(\d)(\d)/;
|
|---|
| 142 | my $r = "$1.$2";
|
|---|
| 143 | my $pre = $1 ? '' : 'PRE-';
|
|---|
| 144 | commit($d, "Imported ASMA $r", "asma-$r", "${pre}RELEASE ASMA $r");
|
|---|
| 145 | $p = $d;
|
|---|
| 146 | shell "svn up";
|
|---|
| 147 | }
|
|---|