Move lots of information to a YAML database.
authorAnders Kaseorg <andersk@mit.edu>
Mon, 29 Dec 2008 08:55:59 +0000 (03:55 -0500)
committerAnders Kaseorg <andersk@mit.edu>
Mon, 29 Dec 2008 08:55:59 +0000 (03:55 -0500)
svn path=/trunk/scripts/git-migration/; revision=1945

merges [deleted file]
package-list [deleted file]
rules.mako
svn.yml [new file with mode: 0644]

diff --git a/merges b/merges
deleted file mode 100644 (file)
index f593991..0000000
--- a/merges
+++ /dev/null
@@ -1,32 +0,0 @@
-# The format of this file is:
-# package-that-vanished    package-it-vanished-into    n
-#
-# Where n is the number of the commit in the new repository where the
-# old package should be merged in, starting from the beginning of the
-# new package's history
-#
-# (n is translated into a revision using git rev-list --reverse
-# --skip=<n> | head -n 1)
-
-sipb-xen-base  invirt-base     0
-sipb-xen-console       invirt-console-server   0
-sipb-xen-console-server        invirt-console-host     0
-sipb-xen-database      invirt-database 0
-sipb-xen-dev   invirt-dev      0
-sipb-xen-dhcp  invirt-dhcp     0
-sipb-xen-dns   invirt-dns      0
-sipb-xen-dom0  invirt-xen-config       0
-sipb-xen-guest-installer       sipb-xen-autoinstaller  0
-sipb-xen-host-master   invirt-host-master      0
-sipb-xen-iptables      invirt-web-iptables     0
-sipb-xen-python-pydhcplib      python-pydhcplib        0
-sipb-xen-remctl-auto   invirt-remote-host      0
-sipb-xen-remote-server invirt-remote-server    0
-sipb-xen-vnc-client    invirt-vnc-client       0
-sipb-xen-vnc-server    invirt-vnc-server       0
-sipb-xen-www   invirt-web      0
-invirt-console-server  invirt-console  0
-invirt-console-host    invirt-console  2
-sipb-xen-autoinstaller invirt-autoinstaller    0
-invirt-remote-host     invirt-remote   0
-invirt-remote-server   invirt-remote   0
diff --git a/package-list b/package-list
deleted file mode 100644 (file)
index 3b0d02d..0000000
+++ /dev/null
@@ -1,56 +0,0 @@
-packages/invirt-autoinstaller
-packages/invirt-base
-packages/invirt-cluster-config
-packages/invirt-console
-packages/invirt-console-host
-packages/invirt-console-server
-packages/invirt-database
-packages/invirt-database-server
-packages/invirt-dev
-packages/invirt-dhcp
-packages/invirt-dns
-packages/invirt-host-master
-packages/invirt-images
-packages/invirt-manual-config
-packages/invirt-remote
-packages/invirt-remote-host
-packages/invirt-remote-server
-packages/invirt-svn-server
-packages/invirt-vnc-client
-packages/invirt-vnc-server
-packages/invirt-web
-packages/invirt-web-iptables
-packages/invirt-xen-config
-packages/libapache2-mod-auth-sslcert
-packages/libyaml
-packages/python-pydhcplib
-packages/python-routefs
-packages/pyyaml
-packages/sipb-xen-autoinstaller
-packages/sipb-xen-base
-packages/sipb-xen-chrony-config
-packages/sipb-xen-clvm-config
-packages/sipb-xen-console
-packages/sipb-xen-console-server
-packages/sipb-xen-database
-packages/sipb-xen-dev
-packages/sipb-xen-dhcp
-packages/sipb-xen-dns
-packages/sipb-xen-dom0
-packages/sipb-xen-guest-installer
-packages/sipb-xen-host-master
-packages/sipb-xen-iptables
-packages/sipb-xen-python-pydhcplib
-packages/sipb-xen-remctl-auto
-packages/sipb-xen-remote-server
-packages/sipb-xen-vnc-client
-packages/sipb-xen-vnc-server
-packages/sipb-xen-www
-packages/xvm-console-devconfig
-packages/xvm-db-backup
-packages/xvm-devconfig
-packages/xvm-iscsi-config
-packages/xvm-mail-config
-packages/xvm-meta
-packages/xvm-munin-config
-packages/xvm-prodconfig
index e3b8e9c..015aa62 100644 (file)
 <%
 <%
-    packages = [line.strip() for line in open('package-list')]
-    repos = packages
-    packages = [package[len('packages/'):] for package in packages]
+    import yaml
+    svn = yaml.load(open('svn.yml'))
+    packages = svn['packages']
+    scripts = svn['scripts']
+    quashes = svn['quashes']
 
 
-    scripts = ['git-migration', 'invirt.mit.edu', 'munin', 'prod-migration']
+    repos = ['packages/%s' % package for package in packages]
     repos += ['scripts/%s' % script for script in scripts]
     repos += ['scripts/%s' % script for script in scripts]
-
     repos += ['doc/xvm', 'scripts/osx-update']
 
     repos += ['doc/xvm', 'scripts/osx-update']
 
-    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': 1815,
-        'invirt-console-server': 1813,
-        'invirt-remote-host': 1822,
-        'invirt-remote-server': 1822,
-    }
-
-    quashes = [
-        ('/package_tags/sipb-xen-dev/sipb-xen-dev/', 11),
-        ('/package_tags/sipb-xen-dev/13/', 316),
-        ('/package_tags/sipb-xen-console/2/', 347),
-        ('/package_tags/sipb-xen-console/2/sipb-xen-console/', 348),
-        ('/package_tags/sipb-xen-console/2/', 349),
-        ('/package_tags/sipb-xen-console/7.1/sipb-xen-console/', 401),
-        ('/package_tags/sipb-xen-guest-installer/1.0/sipb-xen-guest-installer/', 452),
-        ('/package_tags/sipb-xen-dev/14/sipb-xen-dev/', 462),
-        ('/package_tags/sipb-xen-dev/14/', 463),
-        ('/trunk/packages/sipb-xen-autoinstaller/', 742),
-        ('/trunk/packages/invirt-console-server/', 1201),
-        ('/trunk/packages/xvm-prodconfig/', 1455),
-        ('/trunk/packages/invirt-xen-config/', 1757),
-        ('/trunk/packages/invirt-console/', 1819),
-        ('/trunk/scripts/prod-migration/', 1864),
-        ('/trunk/packages/invirt-dhcp/', 1904),
-    ]
-
-    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])
+    for package in packages:
+        if 'merge' in packages[package]:
+            repos.remove('packages/%s' % package)
 
     def get_repo(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):
         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):
         return 'master'
 
     def get_tag_prefix(package):
-        if package in merge_map:
+        if 'merge' in packages[package]:
             return '%s/' % package
         return ''
 %>
             return '%s/' % package
         return ''
 %>
@@ -108,9 +38,9 @@ end repository
 % endfor
 
 % for quash in quashes:
 % endfor
 
 % for quash in quashes:
-match ${quash[0]}
-  min revision ${quash[1]}
-  max revision ${quash[1]}
+match ${quash['path']}
+  min revision ${quash['rev']}
+  max revision ${quash['rev']}
 end match
 % endfor
 
 end match
 % endfor
 
@@ -124,11 +54,11 @@ match /trunk/packages/${package}/${package}-0/
 end match
 %   endif
 
 end match
 %   endif
 
-%   if package in doubled_packages:
+%   if 'undouble' in packages[package]:
 match /trunk/packages/${package}/${package}/
   repository ${get_repo(package)}
   branch ${get_branch(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}/
 end match
 
 match /package_tags/${package}/([^/~]+)/${package}/
@@ -137,45 +67,45 @@ match /package_tags/${package}/([^/~]+)/${package}/
 %     if package == 'sipb-xen-dev':
   max revision 318
 %     else:
 %     if package == 'sipb-xen-dev':
   max revision 318
 %     else:
-  max revision ${doubled_packages[package][0] - 1}
+  max revision ${packages[package]['undouble'][0] - 1}
 %     endif
 end match
 
 match /trunk/packages/tmp/${package}/
 %     endif
 end match
 
 match /trunk/packages/tmp/${package}/
-  min revision ${doubled_packages[package][0]}
-  max revision ${doubled_packages[package][0]}
+  min revision ${packages[package]['undouble'][0]}
+  max revision ${packages[package]['undouble'][0]}
 end match
 
 match /trunk/packages/${package}/
 end match
 
 match /trunk/packages/${package}/
-  min revision ${doubled_packages[package][1]}
-  max revision ${doubled_packages[package][1]}
+  min revision ${packages[package]['undouble'][1]}
+  max revision ${packages[package]['undouble'][1]}
 end match
 %   endif
 
 match /trunk/packages/${package}/
   repository ${get_repo(package)}
   branch ${get_branch(package)}
 end match
 %   endif
 
 match /trunk/packages/${package}/
   repository ${get_repo(package)}
   branch ${get_branch(package)}
-%   if package in doubled_packages:
-  min revision ${doubled_packages[package][1] + 1}
+%   if 'undouble' in packages[package]:
+  min revision ${packages[package]['undouble'][1] + 1}
 %   endif
 %   endif
-%   if package in punt:
-  max revision ${punt[package] - 1}
+%   if 'punt' in packages[package]:
+  max revision ${packages[package]['punt'] - 1}
 %   endif
 end match
 
 match /package_tags/${package}/([^/~]+)/
   repository ${get_repo(package)}
   branch tags/${get_tag_prefix(package)}\1
 %   endif
 end match
 
 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]}
+%   if 'undouble' in packages[package]:
+  min revision ${packages[package]['undouble'][1]}
 %   endif
 end match
 
 match /package_tags/${package}/([^/~]+)~([^/~]+)/
   repository ${get_repo(package)}
   branch tags/${get_tag_prefix(package)}\1_\2
 %   endif
 end match
 
 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]}
+%   if 'undouble' in packages[package]:
+  min revision ${packages[package]['undouble'][1]}
 %   endif
 end match
 
 %   endif
 end match
 
diff --git a/svn.yml b/svn.yml
new file mode 100644 (file)
index 0000000..8c1def7
--- /dev/null
+++ b/svn.yml
@@ -0,0 +1,106 @@
+%YAML 1.1
+---
+packages:
+  invirt-autoinstaller: {}
+  invirt-base: {}
+  invirt-cluster-config: {}
+  invirt-console: {}
+  invirt-console-host:
+    {punt: 1815, merge: invirt-console, branch: invirt-console-host}
+  invirt-console-server:
+    {punt: 1813, merge: invirt-console}
+  invirt-database: {}
+  invirt-database-server: {}
+  invirt-dev: {}
+  invirt-dhcp: {}
+  invirt-dns: {}
+  invirt-host-master: {}
+  invirt-images: {}
+  invirt-manual-config: {}
+  invirt-remote: {}
+  invirt-remote-host:
+    {punt: 1822, merge: invirt-remote, branch: invirt-remote-host}
+  invirt-remote-server:
+    {punt: 1822, merge: invirt-remote, branch: invirt-remote-server}
+  invirt-svn-server: {}
+  invirt-vnc-client: {}
+  invirt-vnc-server: {}
+  invirt-web: {}
+  invirt-web-iptables: {}
+  invirt-xen-config: {}
+  libapache2-mod-auth-sslcert: {}
+  libyaml: {}
+  python-pydhcplib: {}
+  python-routefs: {}
+  pyyaml: {}
+  sipb-xen-autoinstaller:
+    {punt: 1569, merge: invirt-autoinstaller}
+  sipb-xen-base:
+    {undouble: [314, 315], punt: 1350, merge: invirt-base}
+  sipb-xen-chrony-config:
+    {punt: 1351}
+  sipb-xen-clvm-config:
+    {punt: 1569}
+  sipb-xen-console:
+    {punt: 1201, merge: invirt-console-server}
+  sipb-xen-console-server:
+    {punt: 1187, merge: invirt-console-host}
+  sipb-xen-database:
+    {undouble: [311, 313], punt: 1352, merge: invirt-database}
+  sipb-xen-dev:
+    {undouble: [314, 315], punt: 1353, merge: invirt-dev}
+  sipb-xen-dhcp:
+    {punt: 1436, merge: invirt-dhcp}
+  sipb-xen-dns:
+    {punt: 1184, merge: invirt-dns}
+  sipb-xen-dom0:
+    {undouble: [314, 315], punt: 1354, merge: invirt-xen-config}
+  sipb-xen-guest-installer:
+    {undouble: [310, 310], punt: 742, merge: sipb-xen-autoinstaller}
+  sipb-xen-host-master:
+    {punt: 1355, merge: invirt-host-master}
+  sipb-xen-iptables:
+    {punt: 1356, merge: invirt-web-iptables}
+  sipb-xen-python-pydhcplib:
+    {punt: 1357, merge: python-pydhcplib}
+  sipb-xen-remctl-auto:
+    {undouble: [314, 315], punt: 1358, merge: invirt-remote-host}
+  sipb-xen-remote-server:
+    {punt: 1176, merge: invirt-remote-server}
+  sipb-xen-vnc-client:
+    {punt: 1359, merge: invirt-vnc-client}
+  sipb-xen-vnc-server:
+    {punt: 1387, merge: invirt-vnc-server}
+  sipb-xen-www:
+    {punt: 1360, merge: invirt-web}
+  xvm-console-devconfig:
+    {punt: 700}
+  xvm-db-backup: {}
+  xvm-devconfig: {}
+  xvm-iscsi-config: {}
+  xvm-mail-config: {}
+  xvm-meta: {}
+  xvm-munin-config: {}
+  xvm-prodconfig: {}
+scripts:
+- git-migration
+- invirt.mit.edu
+- munin
+- prod-migration
+quashes:
+- {rev: 11, path: /package_tags/sipb-xen-dev/sipb-xen-dev/}
+- {rev: 316, path: /package_tags/sipb-xen-dev/13/}
+- {rev: 347, path: /package_tags/sipb-xen-console/2/}
+- {rev: 348, path: /package_tags/sipb-xen-console/2/sipb-xen-console/}
+- {rev: 349, path: /package_tags/sipb-xen-console/2/}
+- {rev: 401, path: /package_tags/sipb-xen-console/7.1/sipb-xen-console/}
+- {rev: 452, path: /package_tags/sipb-xen-guest-installer/1.0/sipb-xen-guest-installer/}
+- {rev: 462, path: /package_tags/sipb-xen-dev/14/sipb-xen-dev/}
+- {rev: 463, path: /package_tags/sipb-xen-dev/14/}
+- {rev: 742, path: /trunk/packages/sipb-xen-autoinstaller/}
+- {rev: 1201, path: /trunk/packages/invirt-console-server/}
+- {rev: 1455, path: /trunk/packages/xvm-prodconfig/}
+- {rev: 1757, path: /trunk/packages/invirt-xen-config/}
+- {rev: 1819, path: /trunk/packages/invirt-console/}
+- {rev: 1864, path: /trunk/scripts/prod-migration/}
+- {rev: 1904, path: /trunk/packages/invirt-dhcp/}