Mercurial > hg > nginx-vendor-import
annotate nginx-vendor-import.pl @ 0:0272fd3371b2
Import script I use to create nginx mercurial repositories.
author | Maxim Dounin <mdounin@mdounin.ru> |
---|---|
date | Mon, 04 Aug 2008 01:01:04 +0400 |
parents | |
children | 216d6c84d918 |
rev | line source |
---|---|
0
0272fd3371b2
Import script I use to create nginx mercurial repositories.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
1 #!/usr/bin/perl -w |
0272fd3371b2
Import script I use to create nginx mercurial repositories.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
2 |
0272fd3371b2
Import script I use to create nginx mercurial repositories.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
3 # Import nginx source history into Mercurial repo. |
0272fd3371b2
Import script I use to create nginx mercurial repositories.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
4 |
0272fd3371b2
Import script I use to create nginx mercurial repositories.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
5 # perl -nle 'BEGIN { $/ = "\n\nChanges with nginx "; }; m/^([\d.]+)\s+/gs && print "$1 -- \n\n$_\n\n--\n\n"' CHANGES | less |
0272fd3371b2
Import script I use to create nginx mercurial repositories.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
6 |
0272fd3371b2
Import script I use to create nginx mercurial repositories.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
7 use HTTP::Date qw/ str2time /; |
0272fd3371b2
Import script I use to create nginx mercurial repositories.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
8 use POSIX qw/ strftime /; |
0272fd3371b2
Import script I use to create nginx mercurial repositories.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
9 use Getopt::Long; |
0272fd3371b2
Import script I use to create nginx mercurial repositories.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
10 |
0272fd3371b2
Import script I use to create nginx mercurial repositories.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
11 my $changes = 'CHANGES'; |
0272fd3371b2
Import script I use to create nginx mercurial repositories.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
12 my $stopat; |
0272fd3371b2
Import script I use to create nginx mercurial repositories.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
13 my $startat; |
0272fd3371b2
Import script I use to create nginx mercurial repositories.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
14 my $userepo; |
0272fd3371b2
Import script I use to create nginx mercurial repositories.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
15 |
0272fd3371b2
Import script I use to create nginx mercurial repositories.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
16 { |
0272fd3371b2
Import script I use to create nginx mercurial repositories.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
17 GetOptions( |
0272fd3371b2
Import script I use to create nginx mercurial repositories.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
18 'changes=s' => \$changes, |
0272fd3371b2
Import script I use to create nginx mercurial repositories.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
19 'userepo=s' => \$userepo, |
0272fd3371b2
Import script I use to create nginx mercurial repositories.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
20 'stopat=s' => \$stopat, |
0272fd3371b2
Import script I use to create nginx mercurial repositories.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
21 'startat=s' => \$startat, |
0272fd3371b2
Import script I use to create nginx mercurial repositories.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
22 ); |
0272fd3371b2
Import script I use to create nginx mercurial repositories.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
23 } |
0272fd3371b2
Import script I use to create nginx mercurial repositories.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
24 |
0272fd3371b2
Import script I use to create nginx mercurial repositories.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
25 # Auto detect $stopat if repo specified. |
0272fd3371b2
Import script I use to create nginx mercurial repositories.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
26 |
0272fd3371b2
Import script I use to create nginx mercurial repositories.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
27 if ($userepo) { |
0272fd3371b2
Import script I use to create nginx mercurial repositories.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
28 my $log = `hg -R $userepo log --limit 1`; |
0272fd3371b2
Import script I use to create nginx mercurial repositories.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
29 |
0272fd3371b2
Import script I use to create nginx mercurial repositories.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
30 if ($log =~ /Added tag NGINX_(\d+)_(\d+)_(\d+) for changeset/) { |
0272fd3371b2
Import script I use to create nginx mercurial repositories.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
31 $stopat = "$1.$2.$3"; |
0272fd3371b2
Import script I use to create nginx mercurial repositories.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
32 print "stopat: $stopat\n"; |
0272fd3371b2
Import script I use to create nginx mercurial repositories.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
33 } |
0272fd3371b2
Import script I use to create nginx mercurial repositories.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
34 } |
0272fd3371b2
Import script I use to create nginx mercurial repositories.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
35 |
0272fd3371b2
Import script I use to create nginx mercurial repositories.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
36 # Read CHANGES file for commit logs. |
0272fd3371b2
Import script I use to create nginx mercurial repositories.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
37 |
0272fd3371b2
Import script I use to create nginx mercurial repositories.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
38 push @ARGV, $changes; |
0272fd3371b2
Import script I use to create nginx mercurial repositories.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
39 |
0272fd3371b2
Import script I use to create nginx mercurial repositories.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
40 my @changes; |
0272fd3371b2
Import script I use to create nginx mercurial repositories.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
41 my ($version, $date, $log, $started); |
0272fd3371b2
Import script I use to create nginx mercurial repositories.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
42 |
0272fd3371b2
Import script I use to create nginx mercurial repositories.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
43 while (<>) { |
0272fd3371b2
Import script I use to create nginx mercurial repositories.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
44 |
0272fd3371b2
Import script I use to create nginx mercurial repositories.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
45 if (/^Changes with nginx ([\d.]+)\s+(\d\d \S+ \d+)/) { |
0272fd3371b2
Import script I use to create nginx mercurial repositories.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
46 if ($version && $started) { |
0272fd3371b2
Import script I use to create nginx mercurial repositories.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
47 $log =~ s/\s+$//s; |
0272fd3371b2
Import script I use to create nginx mercurial repositories.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
48 unshift @changes, { |
0272fd3371b2
Import script I use to create nginx mercurial repositories.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
49 version => $version, |
0272fd3371b2
Import script I use to create nginx mercurial repositories.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
50 date => $date, |
0272fd3371b2
Import script I use to create nginx mercurial repositories.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
51 log => $log |
0272fd3371b2
Import script I use to create nginx mercurial repositories.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
52 }; |
0272fd3371b2
Import script I use to create nginx mercurial repositories.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
53 } |
0272fd3371b2
Import script I use to create nginx mercurial repositories.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
54 $version = $1; |
0272fd3371b2
Import script I use to create nginx mercurial repositories.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
55 $date = $2; |
0272fd3371b2
Import script I use to create nginx mercurial repositories.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
56 $log = "nginx $version\n"; |
0272fd3371b2
Import script I use to create nginx mercurial repositories.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
57 |
0272fd3371b2
Import script I use to create nginx mercurial repositories.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
58 if (defined $stopat && $version eq $stopat) { |
0272fd3371b2
Import script I use to create nginx mercurial repositories.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
59 undef $version; |
0272fd3371b2
Import script I use to create nginx mercurial repositories.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
60 last; |
0272fd3371b2
Import script I use to create nginx mercurial repositories.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
61 } |
0272fd3371b2
Import script I use to create nginx mercurial repositories.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
62 if (!$started && (!defined $startat |
0272fd3371b2
Import script I use to create nginx mercurial repositories.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
63 or ($version eq $startat))) |
0272fd3371b2
Import script I use to create nginx mercurial repositories.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
64 { |
0272fd3371b2
Import script I use to create nginx mercurial repositories.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
65 $started = 1; |
0272fd3371b2
Import script I use to create nginx mercurial repositories.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
66 } |
0272fd3371b2
Import script I use to create nginx mercurial repositories.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
67 } else { |
0272fd3371b2
Import script I use to create nginx mercurial repositories.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
68 $log .= $_; |
0272fd3371b2
Import script I use to create nginx mercurial repositories.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
69 } |
0272fd3371b2
Import script I use to create nginx mercurial repositories.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
70 } |
0272fd3371b2
Import script I use to create nginx mercurial repositories.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
71 if ($version) { |
0272fd3371b2
Import script I use to create nginx mercurial repositories.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
72 unshift @changes, { |
0272fd3371b2
Import script I use to create nginx mercurial repositories.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
73 version => $version, |
0272fd3371b2
Import script I use to create nginx mercurial repositories.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
74 date => $date, |
0272fd3371b2
Import script I use to create nginx mercurial repositories.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
75 log => $log |
0272fd3371b2
Import script I use to create nginx mercurial repositories.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
76 }; |
0272fd3371b2
Import script I use to create nginx mercurial repositories.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
77 } |
0272fd3371b2
Import script I use to create nginx mercurial repositories.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
78 |
0272fd3371b2
Import script I use to create nginx mercurial repositories.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
79 my $prev = $userepo; |
0272fd3371b2
Import script I use to create nginx mercurial repositories.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
80 my $user = 'Igor Sysoev <http://sysoev.ru>'; |
0272fd3371b2
Import script I use to create nginx mercurial repositories.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
81 |
0272fd3371b2
Import script I use to create nginx mercurial repositories.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
82 foreach (@changes) { |
0272fd3371b2
Import script I use to create nginx mercurial repositories.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
83 print "version => $_->{version}, date => $_->{date}\n"; |
0272fd3371b2
Import script I use to create nginx mercurial repositories.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
84 #print "log:\n$_->{log}\n"; |
0272fd3371b2
Import script I use to create nginx mercurial repositories.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
85 |
0272fd3371b2
Import script I use to create nginx mercurial repositories.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
86 my $date = str2time($_->{date}); |
0272fd3371b2
Import script I use to create nginx mercurial repositories.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
87 $date = strftime("%F", localtime $date); |
0272fd3371b2
Import script I use to create nginx mercurial repositories.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
88 |
0272fd3371b2
Import script I use to create nginx mercurial repositories.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
89 my $tag = 'NGINX_' . $_->{version}; |
0272fd3371b2
Import script I use to create nginx mercurial repositories.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
90 $tag =~ s/\./_/g; |
0272fd3371b2
Import script I use to create nginx mercurial repositories.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
91 |
0272fd3371b2
Import script I use to create nginx mercurial repositories.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
92 my $curr = "nginx-$_->{version}"; |
0272fd3371b2
Import script I use to create nginx mercurial repositories.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
93 `tar zxf $curr.tar.gz`; |
0272fd3371b2
Import script I use to create nginx mercurial repositories.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
94 |
0272fd3371b2
Import script I use to create nginx mercurial repositories.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
95 if (!defined $prev) { |
0272fd3371b2
Import script I use to create nginx mercurial repositories.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
96 `hg init $curr`; |
0272fd3371b2
Import script I use to create nginx mercurial repositories.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
97 } else { |
0272fd3371b2
Import script I use to create nginx mercurial repositories.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
98 `mv -v -f $prev/.hg $prev/.hgtags $curr/`; |
0272fd3371b2
Import script I use to create nginx mercurial repositories.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
99 } |
0272fd3371b2
Import script I use to create nginx mercurial repositories.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
100 |
0272fd3371b2
Import script I use to create nginx mercurial repositories.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
101 open L, '>templog' or die "unable to open templog: $!\n"; |
0272fd3371b2
Import script I use to create nginx mercurial repositories.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
102 print L $_->{log}; |
0272fd3371b2
Import script I use to create nginx mercurial repositories.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
103 close L; |
0272fd3371b2
Import script I use to create nginx mercurial repositories.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
104 |
0272fd3371b2
Import script I use to create nginx mercurial repositories.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
105 `cd $curr/ && hg addremove -s 99 && hg ci -d "$date" -u "$user" -l ../templog && hg tag -d "$date" -u "$user" $tag`; |
0272fd3371b2
Import script I use to create nginx mercurial repositories.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
106 |
0272fd3371b2
Import script I use to create nginx mercurial repositories.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
107 $prev = $curr; |
0272fd3371b2
Import script I use to create nginx mercurial repositories.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
108 } |
0272fd3371b2
Import script I use to create nginx mercurial repositories.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
109 |
0272fd3371b2
Import script I use to create nginx mercurial repositories.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
110 if ($userepo) { |
0272fd3371b2
Import script I use to create nginx mercurial repositories.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
111 `mv $prev/.hg $prev/.hgtags $userepo/`; |
0272fd3371b2
Import script I use to create nginx mercurial repositories.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
112 } |