diff options
author | Jan Lübbe <jluebbe@debian.org> | 2008-10-13 09:32:51 +0000 |
---|---|---|
committer | Jan Lübbe <jluebbe@debian.org> | 2008-10-13 09:32:51 +0000 |
commit | 4d085fba58dfe13563f5a3d3900a93ff2859705e (patch) | |
tree | 1838637169be75d4d6787e4530c593082791affb /contrib/mtn2git/mtn2cache.py | |
parent | f55f3d0724bdd62c22cb5cdbaa317dcfe7edc085 (diff) |
mtn2git: fix bugs in conversion script
also add mtn2cache.py which extracts some information from the DB (caution ~40GiB)
Diffstat (limited to 'contrib/mtn2git/mtn2cache.py')
-rwxr-xr-x | contrib/mtn2git/mtn2cache.py | 74 |
1 files changed, 74 insertions, 0 deletions
diff --git a/contrib/mtn2git/mtn2cache.py b/contrib/mtn2git/mtn2cache.py new file mode 100755 index 0000000000..323822a7fb --- /dev/null +++ b/contrib/mtn2git/mtn2cache.py @@ -0,0 +1,74 @@ +#!/usr/bin/env python + +import os, processing +from child import Child + +MTN = ["mtn", "--db=~/oe/OE.mtn"] +DIFF = ["diff", "-u"] + +def handle_parents(revision): + parents = Child(*MTN+["au", "parents", revision]).stdout.strip().split('\n') + if not parents: + return + print "revision: %s (parents: %s)" % (revision, parents) + for parent in parents: + filename = os.path.join("mtn2cache", "patch", parent+"-"+revision) + curfilename = os.path.join("mtn2cache", "manifest", revision) + parfilename = os.path.join("mtn2cache", "manifest", parent) + if not os.path.exists(filename): + diff = Child(*DIFF+[parfilename, curfilename]).stdout + try: + file(filename, "w").write(diff) + except: + os.unlink(filename) + raise + +def handle_revision(revision): + print "revision: %s" % revision + filename = os.path.join("mtn2cache", "revision", revision) + if not os.path.exists(filename): + data = Child(*MTN+["au", "get_revision", revision]).stdout + try: + file(filename, "w").write(data) + except: + os.unlink(filename) + raise + + filename = os.path.join("mtn2cache", "manifest", revision) + if not os.path.exists(filename): + data = Child(*MTN+["au", "get_manifest_of", revision]).stdout + try: + file(filename, "w").write(data) + except: + os.unlink(filename) + raise + + filename = os.path.join("mtn2cache", "certs", revision) + if not os.path.exists(filename): + data = Child(*MTN+["au", "certs", revision]).stdout + try: + file(filename, "w").write(data) + except: + os.unlink(filename) + raise + +def handle_head(head): + print "head: %s" % head + ancestors = Child(*MTN+["au", "ancestors", head]).stdout.strip().split('\n') + pool.map(handle_revision, ancestors) + pool.map(handle_parents, ancestors) + +def handle_branch(branch): + print "branch: %s" % branch + heads = Child(*MTN+["au", "heads", branch]).stdout.strip().split('\n') + for head in heads: + handle_head(head) + +def main(): + branches = Child(*MTN+["au", "branches"]).stdout.strip().split('\n') + for branch in branches: + handle_branch(branch) + +pool = processing.Pool(12) +main() + |