Skip to content

Latest commit

 

History

History
executable file
·
52 lines (43 loc) · 1.62 KB

svnpush.pl

File metadata and controls

executable file
·
52 lines (43 loc) · 1.62 KB
 
Apr 7, 2008
Apr 7, 2008
1
2
3
4
5
6
#!/usr/bin/perl -w
use strict;
use warnings;
print("Making sure svn working copy is up to date...\n");
Apr 8, 2008
Apr 8, 2008
7
8
system("cd ../svn-mojoshader ; svn update");
my $svnver = `cd ../svn-mojoshader ; svnversion`;
Apr 7, 2008
Apr 7, 2008
9
chomp($svnver);
Apr 8, 2008
Apr 8, 2008
10
my $hgver = `cd ../svn-mojoshader ; svn log -r${svnver} |grep 'changeset:'`;
Apr 7, 2008
Apr 7, 2008
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
chomp($hgver);
$hgver =~ s/^changeset:\s+(\d+):.*\Z/$1/;
my $min = $hgver;
$hgver = `hg tip |grep 'changeset:'`;
chomp($hgver);
$hgver =~ s/^changeset:\s+(\d+):.*\Z/$1/;
my $max = $hgver;
if ($min == $max) {
print("We're already up to date. Exiting.\n");
exit 0;
}
$min++; # $min was the last committed revision, so we need to start one later.
print("first hg revision to commit to svn == '$min'\n");
print("last hg revision to commit to svn == '$max'\n");
my $i;
for ($i = $min; $i <= $max; $i++) {
my $p = $i - 1;
print("Revision #$i ...\n");
print("Getting log from Mercurial...\n");
system("hg log -v -r$i |grep -v '^tag: ' |tail -n +7 > commit.txt");
system("echo >> commit.txt");
system("echo 'This commit is from my temporary Mercurial repository...' >> commit.txt");
system("hg log -v -r$i |grep -v '^tag: ' |head -n 4 >> commit.txt");
print("Getting diff...\n");
system("hg diff -r${p}:${i} > patch.diff");
print("Patching svn working copy...\n");
Apr 8, 2008
Apr 8, 2008
42
system("cd ../svn-mojoshader ; patch -p1 < ../mojoshader/patch.diff");
Apr 7, 2008
Apr 7, 2008
43
print("Committing svn working copy...\n");
Apr 8, 2008
Apr 8, 2008
44
system("cd ../svn-mojoshader ; svn commit -F ../mojoshader/commit.txt");
Apr 7, 2008
Apr 7, 2008
45
46
47
48
49
50
51
print("Cleaning up...\n");
system("rm -rf commit.txt patch.diff");
print("...revision committed!\n");
}
print("svn push complete!\n\n");
exit 0;