Mercurial > hg > nginx-vendor-import
annotate nginx-vendor-import.pl @ 1:216d6c84d918 default tip
Make it a bit more pretty (i.e. not so ugly).
author | Maxim Dounin <mdounin@mdounin.ru> |
---|---|
date | Mon, 04 Aug 2008 01:14:31 +0400 |
parents | 0272fd3371b2 |
children |
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 |
1
216d6c84d918
Make it a bit more pretty (i.e. not so ugly).
Maxim Dounin <mdounin@mdounin.ru>
parents:
0
diff
changeset
|
3 # (C) Maxim Dounin |
216d6c84d918
Make it a bit more pretty (i.e. not so ugly).
Maxim Dounin <mdounin@mdounin.ru>
parents:
0
diff
changeset
|
4 |
0
0272fd3371b2
Import script I use to create nginx mercurial repositories.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
5 # 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
|
6 |
1
216d6c84d918
Make it a bit more pretty (i.e. not so ugly).
Maxim Dounin <mdounin@mdounin.ru>
parents:
0
diff
changeset
|
7 ############################################################################### |
216d6c84d918
Make it a bit more pretty (i.e. not so ugly).
Maxim Dounin <mdounin@mdounin.ru>
parents:
0
diff
changeset
|
8 |
216d6c84d918
Make it a bit more pretty (i.e. not so ugly).
Maxim Dounin <mdounin@mdounin.ru>
parents:
0
diff
changeset
|
9 use strict; |
216d6c84d918
Make it a bit more pretty (i.e. not so ugly).
Maxim Dounin <mdounin@mdounin.ru>
parents:
0
diff
changeset
|
10 use warnings; |
0
0272fd3371b2
Import script I use to create nginx mercurial repositories.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
11 |
0272fd3371b2
Import script I use to create nginx mercurial repositories.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
12 use HTTP::Date qw/ str2time /; |
0272fd3371b2
Import script I use to create nginx mercurial repositories.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
13 use POSIX qw/ strftime /; |
0272fd3371b2
Import script I use to create nginx mercurial repositories.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
14 use Getopt::Long; |
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 my $changes = 'CHANGES'; |
0272fd3371b2
Import script I use to create nginx mercurial repositories.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
17 my $stopat; |
0272fd3371b2
Import script I use to create nginx mercurial repositories.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
18 my $startat; |
0272fd3371b2
Import script I use to create nginx mercurial repositories.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
19 my $userepo; |
0272fd3371b2
Import script I use to create nginx mercurial repositories.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
20 |
0272fd3371b2
Import script I use to create nginx mercurial repositories.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
21 { |
0272fd3371b2
Import script I use to create nginx mercurial repositories.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
22 GetOptions( |
0272fd3371b2
Import script I use to create nginx mercurial repositories.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
23 'changes=s' => \$changes, |
1
216d6c84d918
Make it a bit more pretty (i.e. not so ugly).
Maxim Dounin <mdounin@mdounin.ru>
parents:
0
diff
changeset
|
24 'repo=s' => \$userepo, |
0
0272fd3371b2
Import script I use to create nginx mercurial repositories.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
25 'stopat=s' => \$stopat, |
0272fd3371b2
Import script I use to create nginx mercurial repositories.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
26 'startat=s' => \$startat, |
0272fd3371b2
Import script I use to create nginx mercurial repositories.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
27 ); |
0272fd3371b2
Import script I use to create nginx mercurial repositories.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
28 } |
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 # Auto detect $stopat if repo specified. |
0272fd3371b2
Import script I use to create nginx mercurial repositories.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
31 |
0272fd3371b2
Import script I use to create nginx mercurial repositories.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
32 if ($userepo) { |
0272fd3371b2
Import script I use to create nginx mercurial repositories.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
33 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
|
34 |
0272fd3371b2
Import script I use to create nginx mercurial repositories.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
35 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
|
36 $stopat = "$1.$2.$3"; |
0272fd3371b2
Import script I use to create nginx mercurial repositories.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
37 print "stopat: $stopat\n"; |
0272fd3371b2
Import script I use to create nginx mercurial repositories.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
38 } |
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 |
0272fd3371b2
Import script I use to create nginx mercurial repositories.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
41 # Read CHANGES file for commit logs. |
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 push @ARGV, $changes; |
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 my @changes; |
0272fd3371b2
Import script I use to create nginx mercurial repositories.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
46 my ($version, $date, $log, $started); |
0272fd3371b2
Import script I use to create nginx mercurial repositories.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
47 |
0272fd3371b2
Import script I use to create nginx mercurial repositories.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
48 while (<>) { |
0272fd3371b2
Import script I use to create nginx mercurial repositories.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
49 |
0272fd3371b2
Import script I use to create nginx mercurial repositories.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
50 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
|
51 if ($version && $started) { |
0272fd3371b2
Import script I use to create nginx mercurial repositories.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
52 $log =~ s/\s+$//s; |
0272fd3371b2
Import script I use to create nginx mercurial repositories.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
53 unshift @changes, { |
0272fd3371b2
Import script I use to create nginx mercurial repositories.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
54 version => $version, |
0272fd3371b2
Import script I use to create nginx mercurial repositories.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
55 date => $date, |
0272fd3371b2
Import script I use to create nginx mercurial repositories.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
56 log => $log |
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 } |
0272fd3371b2
Import script I use to create nginx mercurial repositories.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
59 $version = $1; |
0272fd3371b2
Import script I use to create nginx mercurial repositories.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
60 $date = $2; |
0272fd3371b2
Import script I use to create nginx mercurial repositories.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
61 $log = "nginx $version\n"; |
0272fd3371b2
Import script I use to create nginx mercurial repositories.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
62 |
0272fd3371b2
Import script I use to create nginx mercurial repositories.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
63 if (defined $stopat && $version eq $stopat) { |
0272fd3371b2
Import script I use to create nginx mercurial repositories.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
64 undef $version; |
0272fd3371b2
Import script I use to create nginx mercurial repositories.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
65 last; |
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 if (!$started && (!defined $startat |
0272fd3371b2
Import script I use to create nginx mercurial repositories.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
68 or ($version eq $startat))) |
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 $started = 1; |
0272fd3371b2
Import script I use to create nginx mercurial repositories.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
71 } |
0272fd3371b2
Import script I use to create nginx mercurial repositories.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
72 } else { |
0272fd3371b2
Import script I use to create nginx mercurial repositories.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
73 $log .= $_; |
0272fd3371b2
Import script I use to create nginx mercurial repositories.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
74 } |
0272fd3371b2
Import script I use to create nginx mercurial repositories.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
75 } |
0272fd3371b2
Import script I use to create nginx mercurial repositories.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
76 if ($version) { |
0272fd3371b2
Import script I use to create nginx mercurial repositories.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
77 unshift @changes, { |
0272fd3371b2
Import script I use to create nginx mercurial repositories.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
78 version => $version, |
0272fd3371b2
Import script I use to create nginx mercurial repositories.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
79 date => $date, |
0272fd3371b2
Import script I use to create nginx mercurial repositories.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
80 log => $log |
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 } |
0272fd3371b2
Import script I use to create nginx mercurial repositories.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
83 |
0272fd3371b2
Import script I use to create nginx mercurial repositories.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
84 my $prev = $userepo; |
0272fd3371b2
Import script I use to create nginx mercurial repositories.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
85 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
|
86 |
0272fd3371b2
Import script I use to create nginx mercurial repositories.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
87 foreach (@changes) { |
0272fd3371b2
Import script I use to create nginx mercurial repositories.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
88 print "version => $_->{version}, date => $_->{date}\n"; |
0272fd3371b2
Import script I use to create nginx mercurial repositories.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
89 #print "log:\n$_->{log}\n"; |
0272fd3371b2
Import script I use to create nginx mercurial repositories.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
90 |
0272fd3371b2
Import script I use to create nginx mercurial repositories.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
91 my $date = str2time($_->{date}); |
0272fd3371b2
Import script I use to create nginx mercurial repositories.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
92 $date = strftime("%F", localtime $date); |
0272fd3371b2
Import script I use to create nginx mercurial repositories.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
93 |
0272fd3371b2
Import script I use to create nginx mercurial repositories.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
94 my $tag = 'NGINX_' . $_->{version}; |
0272fd3371b2
Import script I use to create nginx mercurial repositories.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
95 $tag =~ s/\./_/g; |
0272fd3371b2
Import script I use to create nginx mercurial repositories.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
96 |
0272fd3371b2
Import script I use to create nginx mercurial repositories.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
97 my $curr = "nginx-$_->{version}"; |
0272fd3371b2
Import script I use to create nginx mercurial repositories.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
98 `tar zxf $curr.tar.gz`; |
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 if (!defined $prev) { |
0272fd3371b2
Import script I use to create nginx mercurial repositories.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
101 `hg init $curr`; |
0272fd3371b2
Import script I use to create nginx mercurial repositories.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
102 } else { |
0272fd3371b2
Import script I use to create nginx mercurial repositories.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
103 `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
|
104 } |
0272fd3371b2
Import script I use to create nginx mercurial repositories.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
105 |
0272fd3371b2
Import script I use to create nginx mercurial repositories.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
106 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
|
107 print L $_->{log}; |
0272fd3371b2
Import script I use to create nginx mercurial repositories.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
108 close L; |
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 `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
|
111 |
0272fd3371b2
Import script I use to create nginx mercurial repositories.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
112 $prev = $curr; |
0272fd3371b2
Import script I use to create nginx mercurial repositories.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
113 } |
0272fd3371b2
Import script I use to create nginx mercurial repositories.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
114 |
0272fd3371b2
Import script I use to create nginx mercurial repositories.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
115 if ($userepo) { |
0272fd3371b2
Import script I use to create nginx mercurial repositories.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
116 `mv $prev/.hg $prev/.hgtags $userepo/`; |
0272fd3371b2
Import script I use to create nginx mercurial repositories.
Maxim Dounin <mdounin@mdounin.ru>
parents:
diff
changeset
|
117 } |
1
216d6c84d918
Make it a bit more pretty (i.e. not so ugly).
Maxim Dounin <mdounin@mdounin.ru>
parents:
0
diff
changeset
|
118 |
216d6c84d918
Make it a bit more pretty (i.e. not so ugly).
Maxim Dounin <mdounin@mdounin.ru>
parents:
0
diff
changeset
|
119 ############################################################################### |