For the git migration, one repository per invertified package, and
[invirt/scripts/git-migration.git] / rules.mako
1 <%
2     import yaml
3     svn = yaml.load(open('svn.yml'))
4     packages = svn['packages']
5     trunks = svn['trunks']
6     scripts = svn['scripts']
7     third = svn['third']
8     quashes = svn['quashes']
9
10     repos = ['packages/%s' % package for package in packages]
11     repos += ['scripts/%s' % script for script in scripts]
12     repos += ['doc/xvm', 'scripts/osx-update', 'scripts/install-invirt']
13     repos += ['third/%s' % t for t in third]
14
15     for package in packages:
16         if 'merge' in packages[package]:
17             repos.remove('packages/%s' % package)
18
19     def get_repo(package):
20         if 'merge' in packages[package]:
21             return get_repo(packages[package]['merge'])
22         return 'packages/%s.git' % package
23
24     def get_branch(package):
25         if 'branch' in packages[package]:
26             return packages[package]['branch']
27         if 'merge' in packages[package]:
28             return get_branch(packages[package]['merge'])
29         return 'master'
30
31     def get_tag_prefix(package):
32         if 'merge' in packages[package]:
33             return '%s/' % package
34         return ''
35 %>
36
37 % for repo in repos:
38 create repository ${repo}.git
39 end repository
40
41 % endfor
42
43 % for quash in quashes:
44 match ${quash['path']}
45   min revision ${quash['rev']}
46   max revision ${quash['rev']}
47 end match
48 % endfor
49
50 % for package in packages:
51
52 %   if package == 'sipb-xen-database':
53 match /trunk/packages/${package}/${package}-0/
54   repository ${get_repo(package)}
55   branch ${get_branch(package)}
56   max revision 8
57 end match
58 %   endif
59
60 %   if 'undouble' in packages[package]:
61 match /trunk/packages/${package}/${package}/
62   repository ${get_repo(package)}
63   branch ${get_branch(package)}
64   max revision ${packages[package]['undouble'][0] - 1}
65 end match
66
67 match /package_tags/${package}/([^/~]+)/${package}/
68   repository ${get_repo(package)}
69   branch tags/${get_tag_prefix(package)}\1
70   max revision ${packages[package]['undouble'][0] - 1}
71 end match
72
73 match /trunk/packages/tmp/${package}/
74   min revision ${packages[package]['undouble'][0]}
75   max revision ${packages[package]['undouble'][0]}
76 end match
77
78 match /trunk/packages/${package}/
79   min revision ${packages[package]['undouble'][1]}
80   max revision ${packages[package]['undouble'][1]}
81 end match
82 %   endif
83
84 match /trunk/packages/${package}/
85   repository ${get_repo(package)}
86   branch ${get_branch(package)}
87 %   if 'undouble' in packages[package]:
88   min revision ${packages[package]['undouble'][1] + 1}
89 %   endif
90 %   if 'punt' in packages[package]:
91   max revision ${packages[package]['punt'] - 1}
92 %   endif
93 end match
94
95 match /package_tags/${package}/([^/~]+)/
96   repository ${get_repo(package)}
97   branch tags/${get_tag_prefix(package)}\1
98 %   if 'undouble' in packages[package]:
99   min revision ${packages[package]['undouble'][1]}
100 %   endif
101 end match
102
103 match /package_tags/${package}/([^/~]+)~([^/~]+)/
104   repository ${get_repo(package)}
105   branch tags/${get_tag_prefix(package)}\1_\2
106 %   if 'undouble' in packages[package]:
107   min revision ${packages[package]['undouble'][1]}
108 %   endif
109 end match
110
111 % endfor
112
113 match /trunk/packages/(xen-common|xen-3.1)/
114 end match
115
116 match /package_tags/(xen-common|xen-3.1)/
117 end match
118
119 % for trunk in trunks:
120 %   if 'inclusive' in trunks[trunk]:
121 match /trunk/${trunk}(/|$)
122 %   else:
123 match /trunk/${trunk}/
124 %   endif
125   repository ${get_repo(trunks[trunk]['merge'])}
126 %   if 'branch' in trunks[trunk]:
127   branch ${trunks[trunk]['branch']}
128 %   else:
129   branch ${get_branch(trunks[trunk]['merge'])}
130 %   endif
131 %   if 'inclusive' in trunks[trunk]:
132   max revision ${trunks[trunk]['punt']}
133 %   else:
134   max revision ${trunks[trunk]['punt'] - 1}
135 %   endif
136 end match
137 % endfor
138
139 match /trunk/vnc/tightvnc-1.3.9_javasrc.zip
140 end match
141
142 % for script in scripts:
143 match /trunk/scripts/${script}/
144   repository scripts/${script}.git
145   branch master
146 end match
147 % endfor
148
149 match /trunk/scripts/
150   repository scripts/osx-update.git
151   branch master
152   min revision 1785
153   max revision 1785
154 end match
155
156 match /trunk/scripts/
157   repository scripts/install-invirt.git
158   branch master
159   min revision 2026
160   max revision 2026
161 end match
162
163 match /trunk/scripts/
164   repository scripts/prod-migration.git
165   branch master
166   max revision 1863
167 end match
168
169 % for t in third:
170 match /trunk/third/${t}/
171   repository third/${t}.git
172   branch master
173 end match
174
175 match /third_tags/${t}/([^/~]+)/
176   repository third/${t}.git
177   branch tags/\1
178 end match
179 % endfor
180
181 % for rev in [803, 804, 925, 926, 928, 1537, 1566]:
182 match /trunk/
183   repository doc/xvm.git
184   branch master
185   min revision ${rev}
186   max revision ${rev}
187 end match
188 % endfor
189
190 match /trunk/vmctl/
191 end match
192
193 match /trunk/COPYING$
194 end match
195
196 match /branches/wsgi/
197 end match