#!/usr/bin/env python import os from glob import glob from subprocess import call from mercurial import hg, ui, cmdutil import csv, re, sys # call(['rm', '-rf', 'IronPython']) ui = ui.ui(quiet=True) repo = hg.repository(ui, 'IronPython') #, create=True) # we assume the repo layout is what we created here; # could do something like repo.changelog.rev(repo.lookup('tip')) to be sure tip = repo.parents()[0] if tip.rev() != -1: last_cset_id = re.match(r'\[([^]]+)\]', tip.description()).group(1) print 'last cset was', last_cset_id else: last_cset_id = None commits = list(csv.reader(file(sys.argv[1]))) for cset_id, download_url, date, comment, by in reversed(commits): if last_cset_id: if cset_id == last_cset_id: last_cset_id = None continue print 'processing cset', cset_id cset_file = '%s.zip' % cset_id call(['rm', '-rf'] + glob('IronPython/*')) call(['unzip', '-q', cset_file]) cmdutil.addremove(repo) repo.commit(text='[%s] %s' % (cset_id, comment), user=by, date=date)