cd4718d1d2ffce55f85d0dae778640a0f34abc44
[invirt/scripts/git-migration.git] / rules.mako
1 <%
2     packages = [line.strip() for line in open('package-list')]
3     repos = packages
4     packages = [package[len('packages/'):] for package in packages]
5
6     scripts = ['git-migration', 'invirt.mit.edu', 'munin', 'prod-migration']
7     repos += ['scripts/%s' % script for script in scripts]
8
9     repos += ['doc/xvm', 'scripts/osx-update']
10
11     doubled_packages = {
12         'sipb-xen-guest-installer': (310, 310),
13         'sipb-xen-base': (314, 315),
14         'sipb-xen-database': (311, 313),
15         'sipb-xen-dev': (314, 315),
16         'sipb-xen-dom0': (314, 315),
17         'sipb-xen-remctl-auto': (314, 315),
18     }
19
20     punt = {
21         'xvm-console-devconfig': 700,
22         'sipb-xen-guest-installer': 742,
23         'sipb-xen-remote-server': 1176,
24         'sipb-xen-dns': 1184,
25         'sipb-xen-console-server': 1187,
26         'sipb-xen-console': 1201,
27         'sipb-xen-base': 1350,
28         'sipb-xen-chrony-config': 1351,
29         'sipb-xen-database': 1352,
30         'sipb-xen-dev': 1353,
31         'sipb-xen-dom0': 1354,
32         'sipb-xen-host-master': 1355,
33         'sipb-xen-iptables': 1356,
34         'sipb-xen-python-pydhcplib': 1357,
35         'sipb-xen-remctl-auto': 1358,
36         'sipb-xen-vnc-client': 1359,
37         'sipb-xen-www': 1360,
38         'sipb-xen-vnc-server': 1387,
39         'sipb-xen-dhcp': 1436,
40         'sipb-xen-autoinstaller': 1569,
41         'sipb-xen-clvm-config': 1569,
42         'invirt-console-host': 1815,
43         'invirt-console-server': 1813,
44         'invirt-remote-host': 1822,
45         'invirt-remote-server': 1822,
46     }
47
48     quashes = [
49         ('/package_tags/sipb-xen-dev/sipb-xen-dev/', 11),
50         ('/package_tags/sipb-xen-dev/13/', 316),
51         ('/package_tags/sipb-xen-console/2/', 347),
52         ('/package_tags/sipb-xen-console/2/sipb-xen-console/', 348),
53         ('/package_tags/sipb-xen-console/2/', 349),
54         ('/package_tags/sipb-xen-console/7.1/sipb-xen-console/', 401),
55         ('/package_tags/sipb-xen-guest-installer/1.0/sipb-xen-guest-installer/', 452),
56         ('/package_tags/sipb-xen-dev/14/sipb-xen-dev/', 462),
57         ('/package_tags/sipb-xen-dev/14/', 463),
58         ('/trunk/packages/sipb-xen-autoinstaller/', 742),
59         ('/trunk/packages/invirt-console-server/', 1201),
60         ('/trunk/packages/xvm-prodconfig/', 1455),
61         ('/trunk/packages/invirt-xen-config/', 1757),
62         ('/trunk/packages/invirt-console/', 1819),
63         ('/trunk/scripts/prod-migration/', 1864),
64         ('/trunk/packages/invirt-dhcp/', 1904),
65     ]
66
67     merges = []
68     for line in open('merges'):
69         line = line.strip()
70         if line == '' or line[0] == '#':
71             continue
72
73         merges.append(line.split())
74
75     merge_map = {}
76     merge_count = {}
77     merge_n = {}
78     for merge in merges:
79         repos.remove('packages/%s' % merge[0])
80         merge_map[merge[0]] = merge[1]
81         if int(merge[2]) == 0:
82             merge_count[merge[1]] = merge_count.get(merge[1], 0) + 1
83         else:
84             merge_n[merge[0]] = int(merge[2])
85
86     def get_repo(package):
87         if package in merge_map:
88             return get_repo(merge_map[package])
89         return 'packages/%s.git' % package
90
91     def get_branch(package):
92         if package in merge_map:
93             if package in merge_n or merge_count[merge_map[package]] > 1:
94                 return package
95             return get_branch(merge_map[package])
96         return 'master'
97
98     def get_tag_prefix(package):
99         if package in merge_map:
100             return '%s/' % package
101         return ''
102 %>
103
104 % for repo in repos:
105 create repository ${repo}.git
106 end repository
107
108 % endfor
109
110 % for quash in quashes:
111 match ${quash[0]}
112   min revision ${quash[1]}
113   max revision ${quash[1]}
114 end match
115 % endfor
116
117 % for package in packages:
118
119 % if package == 'sipb-xen-database':
120 match /trunk/packages/${package}/${package}-0/
121   repository ${get_repo(package)}
122   branch ${get_branch(package)}
123   max revision 8
124 end match
125 % endif
126
127 % if package in doubled_packages:
128 match /trunk/packages/${package}/${package}/
129   repository ${get_repo(package)}
130   branch ${get_branch(package)}
131   max revision ${doubled_packages[package][0] - 1}
132 end match
133
134 match /package_tags/${package}/([^/~]+)/${package}/
135   repository ${get_repo(package)}
136   branch tags/${get_tag_prefix(package)}\1
137 % if package == 'sipb-xen-dev':
138   max revision 318
139 % else:
140   max revision ${doubled_packages[package][0] - 1}
141 % endif
142 end match
143
144 match /trunk/packages/tmp/${package}/
145   min revision ${doubled_packages[package][0]}
146   max revision ${doubled_packages[package][0]}
147 end match
148
149 match /trunk/packages/${package}/
150   min revision ${doubled_packages[package][1]}
151   max revision ${doubled_packages[package][1]}
152 end match
153 % endif
154
155 match /trunk/packages/${package}/
156   repository ${get_repo(package)}
157   branch ${get_branch(package)}
158 % if package in doubled_packages:
159   min revision ${doubled_packages[package][1] + 1}
160 % endif
161 % if package in punt:
162   max revision ${punt[package] - 1}
163 % endif
164 end match
165
166 match /package_tags/${package}/([^/~]+)/
167   repository ${get_repo(package)}
168   branch tags/${get_tag_prefix(package)}\1
169 % if package in doubled_packages:
170   min revision ${doubled_packages[package][1]}
171 % endif
172 end match
173
174 match /package_tags/${package}/([^/~]+)~([^/~]+)/
175   repository ${get_repo(package)}
176   branch tags/${get_tag_prefix(package)}\1_\2
177 % if package in doubled_packages:
178   min revision ${doubled_packages[package][1]}
179 % endif
180 end match
181
182 % endfor
183
184 match /trunk/packages/(xen-common|xen-3.1)/
185 end match
186
187 match /package_tags/(xen-common|xen-3.1)/
188 end match
189
190 match /trunk/dhcp/
191   repository ${get_repo('sipb-xen-dhcp')}
192   branch ${get_branch('sipb-xen-dhcp')}
193   max revision 281
194 end match
195
196 match /trunk/web(/|$)
197   repository ${get_repo('sipb-xen-www')}
198   branch ${get_branch('sipb-xen-www')}
199   max revision 303
200 end match
201
202 match /trunk/vnc/tightvnc-1.3.9_javasrc.zip
203 end match
204
205 match /trunk/vnc/vnc_javasrc/
206   repository ${get_repo('sipb-xen-vnc-client')}
207   branch ${get_branch('sipb-xen-vnc-client')}
208   max revision 304
209 end match
210
211 match /trunk/vnc/vnc_server(/|$)
212   repository ${get_repo('sipb-xen-vnc-server')}
213   branch ${get_branch('sipb-xen-vnc-server')}
214   max revision 286
215 end match
216
217 match /trunk/dns/
218   repository ${get_repo('sipb-xen-dns')}
219   branch dns
220   max revision 268
221 end match
222
223 % for script in scripts:
224 match /trunk/scripts/${script}/
225   repository scripts/${script}.git
226   branch master
227 end match
228 % endfor
229
230 match /trunk/scripts/
231   repository scripts/osx-update.git
232   branch master
233   min revision 1785
234   max revision 1785
235 end match
236
237 match /trunk/scripts/
238   repository scripts/prod-migration.git
239   branch master
240   max revision 1863
241 end match
242
243 % for rev in [803, 804, 925, 926, 928, 1537, 1566]:
244 match /trunk/
245   repository doc/xvm.git
246   branch master
247   min revision ${rev}
248   max revision ${rev}
249 end match
250 % endfor
251
252 match /trunk/vmctl/
253 end match
254
255 match /trunk/COPYING$
256 end match
257
258 match /branches/wsgi/
259 end match