source: trunk/scripts/git-migration/rules.mako @ 1936

Last change on this file since 1936 was 1936, checked in by andersk, 15 years ago

Use templates to compactify the list of quashed revisions.

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