Move lots of information to a YAML database.
[invirt/scripts/git-migration.git] / rules.mako
index 120302e..015aa62 100644 (file)
@@ -1,79 +1,32 @@
 <%
-    packages = [line.strip() for line in open('package-list')]
-    packages.append('packages/xvm-console-devconfig')
-    repos = packages
-    packages = [package[len('packages/'):] for package in packages]
-
-    doubled_packages = {
-        'sipb-xen-guest-installer': (310, 310),
-        'sipb-xen-base': (314, 315),
-        'sipb-xen-database': (311, 313),
-        'sipb-xen-dev': (314, 315),
-        'sipb-xen-dom0': (314, 315),
-        'sipb-xen-remctl-auto': (314, 315),
-    }
-
-    punt = {
-        'xvm-console-devconfig': 700,
-        'sipb-xen-guest-installer': 742,
-        'sipb-xen-remote-server': 1176,
-        'sipb-xen-dns': 1184,
-        'sipb-xen-console-server': 1187,
-        'sipb-xen-console': 1201,
-        'sipb-xen-base': 1350,
-        'sipb-xen-chrony-config': 1351,
-        'sipb-xen-database': 1352,
-        'sipb-xen-dev': 1353,
-        'sipb-xen-dom0': 1354,
-        'sipb-xen-host-master': 1355,
-        'sipb-xen-iptables': 1356,
-        'sipb-xen-python-pydhcplib': 1357,
-        'sipb-xen-remctl-auto': 1358,
-        'sipb-xen-vnc-client': 1359,
-        'sipb-xen-www': 1360,
-        'sipb-xen-vnc-server': 1387,
-        'sipb-xen-dhcp': 1436,
-        'sipb-xen-autoinstaller': 1569,
-        'sipb-xen-clvm-config': 1569,
-        'invirt-console-host': 1816,
-        'invirt-console-server': 1816,
-        'invirt-remote-host': 1822,
-        'invirt-remote-server': 1822,
-    }
-
-    merges = []
-    for line in open('merges'):
-        line = line.strip()
-        if line == '' or line[0] == '#':
-            continue
-
-        merges.append(line.split())
-
-    merge_map = {}
-    merge_count = {}
-    merge_n = {}
-    for merge in merges:
-        repos.remove('packages/%s' % merge[0])
-        merge_map[merge[0]] = merge[1]
-        if int(merge[2]) == 0:
-            merge_count[merge[1]] = merge_count.get(merge[1], 0) + 1
-        else:
-            merge_n[merge[0]] = int(merge[2])
+    import yaml
+    svn = yaml.load(open('svn.yml'))
+    packages = svn['packages']
+    scripts = svn['scripts']
+    quashes = svn['quashes']
+
+    repos = ['packages/%s' % package for package in packages]
+    repos += ['scripts/%s' % script for script in scripts]
+    repos += ['doc/xvm', 'scripts/osx-update']
+
+    for package in packages:
+        if 'merge' in packages[package]:
+            repos.remove('packages/%s' % package)
 
     def get_repo(package):
-        if package in merge_map:
-            return get_repo(merge_map[package])
+        if 'merge' in packages[package]:
+            return get_repo(packages[package]['merge'])
         return 'packages/%s.git' % package
 
     def get_branch(package):
-        if package in merge_map:
-            if package in merge_n or merge_count[merge_map[package]] > 1:
-                return package
-            return get_branch(merge_map[package])
+        if 'branch' in packages[package]:
+            return packages[package]['branch']
+        if 'merge' in packages[package]:
+            return get_branch(packages[package]['merge'])
         return 'master'
 
     def get_tag_prefix(package):
-        if package in merge_map:
+        if 'merge' in packages[package]:
             return '%s/' % package
         return ''
 %>
@@ -84,104 +37,87 @@ end repository
 
 % endfor
 
-match /package_tags/sipb-xen-dev/sipb-xen-dev(/|$)
-end match
-
-match /package_tags/sipb-xen-console/2(/|$)
-  min revision 347
-  max revision 349
-end match
-
-match /package_tags/sipb-xen-console/7.1/sipb-xen-console(/|$)
-  min revision 401
-  max revision 401
-end match
-
-match /package_tags/sipb-xen-guest-installer/1.0/sipb-xen-guest-installer(/|$)
-  min revision 452
-  max revision 452
-end match
-
-match /package_tags/sipb-xen-dev/14/sipb-xen-dev(/|$)
-  min revision 462
-  max revision 463
-end match
-
-match /trunk/packages/sipb-xen-autoinstaller(/|$)
-  min revision 742
-  max revision 742
+% for quash in quashes:
+match ${quash['path']}
+  min revision ${quash['rev']}
+  max revision ${quash['rev']}
 end match
+% endfor
 
 % for package in packages:
 
-% if package == 'sipb-xen-database':
-match /trunk/packages/${package}/${package}-0(/|$)
+%   if package == 'sipb-xen-database':
+match /trunk/packages/${package}/${package}-0/
   repository ${get_repo(package)}
   branch ${get_branch(package)}
   max revision 8
 end match
-% endif
+%   endif
 
-% if package in doubled_packages:
-match /trunk/packages/${package}/${package}(/|$)
+%   if 'undouble' in packages[package]:
+match /trunk/packages/${package}/${package}/
   repository ${get_repo(package)}
   branch ${get_branch(package)}
-  max revision ${doubled_packages[package][0] - 1}
+  max revision ${packages[package]['undouble'][0] - 1}
 end match
 
-match /package_tags/${package}/([^/~]+)/${package}(/|$)
+match /package_tags/${package}/([^/~]+)/${package}/
   repository ${get_repo(package)}
   branch tags/${get_tag_prefix(package)}\1
-  max revision ${doubled_packages[package][0] - 1}
+%     if package == 'sipb-xen-dev':
+  max revision 318
+%     else:
+  max revision ${packages[package]['undouble'][0] - 1}
+%     endif
 end match
 
-match /trunk/packages/tmp/${package}(/|$)
-  min revision ${doubled_packages[package][0]}
-  max revision ${doubled_packages[package][0]}
+match /trunk/packages/tmp/${package}/
+  min revision ${packages[package]['undouble'][0]}
+  max revision ${packages[package]['undouble'][0]}
 end match
 
-match /trunk/packages/${package}(/|$)
-  min revision ${doubled_packages[package][1]}
-  max revision ${doubled_packages[package][1]}
+match /trunk/packages/${package}/
+  min revision ${packages[package]['undouble'][1]}
+  max revision ${packages[package]['undouble'][1]}
 end match
-% endif
+%   endif
 
-match /trunk/packages/${package}(/|$)
+match /trunk/packages/${package}/
   repository ${get_repo(package)}
   branch ${get_branch(package)}
-% if package in doubled_packages:
-  min revision ${doubled_packages[package][1] + 1}
-% endif
-% if package in punt:
-  max revision ${punt[package] - 1}
-% endif
+%   if 'undouble' in packages[package]:
+  min revision ${packages[package]['undouble'][1] + 1}
+%   endif
+%   if 'punt' in packages[package]:
+  max revision ${packages[package]['punt'] - 1}
+%   endif
 end match
 
-match /package_tags/${package}/([^/~]+)(/|$)
+match /package_tags/${package}/([^/~]+)/
   repository ${get_repo(package)}
   branch tags/${get_tag_prefix(package)}\1
-% if package in doubled_packages:
-  min revision ${doubled_packages[package][1]}
-% endif
+%   if 'undouble' in packages[package]:
+  min revision ${packages[package]['undouble'][1]}
+%   endif
 end match
 
-match /package_tags/${package}/([^/~]+)~([^/~]+)(/|$)
+match /package_tags/${package}/([^/~]+)~([^/~]+)/
   repository ${get_repo(package)}
   branch tags/${get_tag_prefix(package)}\1_\2
-% if package in doubled_packages:
-  min revision ${doubled_packages[package][1]}
-% endif
+%   if 'undouble' in packages[package]:
+  min revision ${packages[package]['undouble'][1]}
+%   endif
 end match
 
 % endfor
 
-match /trunk/packages/(xen-common|xen-3.1)(/|$)
+match /trunk/packages/(xen-common|xen-3.1)/
 end match
 
-match /package_tags/(xen-common|xen-3.1)(/|$)
+match /package_tags/(xen-common|xen-3.1)/
 end match
 
-match /trunk/dhcp(/|$)
+match /trunk/dhcp/
   repository ${get_repo('sipb-xen-dhcp')}
   branch ${get_branch('sipb-xen-dhcp')}
   max revision 281
@@ -196,7 +132,7 @@ end match
 match /trunk/vnc/tightvnc-1.3.9_javasrc.zip
 end match
 
-match /trunk/vnc/vnc_javasrc(/|$)
+match /trunk/vnc/vnc_javasrc/
   repository ${get_repo('sipb-xen-vnc-client')}
   branch ${get_branch('sipb-xen-vnc-client')}
   max revision 304
@@ -208,11 +144,46 @@ match /trunk/vnc/vnc_server(/|$)
   max revision 286
 end match
 
-match /trunk/(dns|scripts|vmctl)(/|$)
+match /trunk/dns/
+  repository ${get_repo('sipb-xen-dns')}
+  branch dns
+  max revision 268
+end match
+
+% for script in scripts:
+match /trunk/scripts/${script}/
+  repository scripts/${script}.git
+  branch master
+end match
+% endfor
+
+match /trunk/scripts/
+  repository scripts/osx-update.git
+  branch master
+  min revision 1785
+  max revision 1785
+end match
+
+match /trunk/scripts/
+  repository scripts/prod-migration.git
+  branch master
+  max revision 1863
+end match
+
+% for rev in [803, 804, 925, 926, 928, 1537, 1566]:
+match /trunk/
+  repository doc/xvm.git
+  branch master
+  min revision ${rev}
+  max revision ${rev}
+end match
+% endfor
+
+match /trunk/vmctl/
 end match
 
-match /trunk/(COPYING|xvm-host-setup-notes)
+match /trunk/COPYING$
 end match
 
-match /branches/wsgi(/|$)
+match /branches/wsgi/
 end match