--- /dev/null
+#!/bin/bash
+set -e
+
+mako-render rules.mako > rules
+
+rm git -rf
+mkdir git
+cd git
+
+sed -n 's/^create repository // p' ../rules | while read repo; do
+ mkdir -p "$repo" && GIT_DIR="$repo" git init --bare
+done
+
+echo run > ../run.gdb
+gdb -batch -x ../run.gdb --args svn-all-fast-export ../rules /home/anders/xvm/svn
+
+sed -n 's/^create repository // p' ../rules | while read repo; do
+ ! [ -e "$repo/refs/heads/tags" ] || \
+ cp -a "$repo/refs/heads/tags/." "$repo/refs/tags" && \
+ rm -rf "$repo/refs/heads/tags"
+done
--- /dev/null
+<%
+ 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]
+
+ 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])
+
+ def get_repo(package):
+ if package in merge_map:
+ return get_repo(merge_map[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])
+ return 'master'
+
+ def get_tag_prefix(package):
+ if package in merge_map:
+ return '%s/' % package
+ return ''
+%>
+
+% for repo in repos:
+create repository ${repo}.git
+end repository
+
+% endfor
+
+% for package in packages:
+match /trunk/packages/${package}/${package}/
+ repository ${get_repo(package)}
+ branch ${get_branch(package)}
+end match
+
+match /package_tags/${package}/([^/~]+)/${package}/
+ repository ${get_repo(package)}
+ branch tags/${get_tag_prefix(package)}\1
+end match
+
+match /trunk/packages/${package}/
+ repository ${get_repo(package)}
+ branch ${get_branch(package)}
+end match
+
+match /package_tags/${package}/([^/~]+)/
+ repository ${get_repo(package)}
+ branch tags/${get_tag_prefix(package)}\1
+end match
+
+match /package_tags/${package}/([^/~]+)~([^/~]+)/
+ repository ${get_repo(package)}
+ branch tags/${get_tag_prefix(package)}\1_\2
+end match
+
+% endfor
+
+match /trunk/packages/(xen-common|xen-3.1)/
+end match
+
+match /package_tags/(xen-common|xen-3.1)/
+end match
+
+match /trunk/packages/tmp/
+ repository ${get_repo('sipb-xen-database')}
+ branch ${get_branch('sipb-xen-database')}
+end match
+
+match /trunk/(dhcp|dns|scripts|vnc|web|vmctl)/
+end match
+
+match /trunk/(COPYING|xvm-host-setup-notes)
+end match
+
+match /branches/wsgi/
+end match