view unixSoft/bin/hgimp @ 372:ce87db9038f5

havepatch: new script to easily check if a mailed patch is applied Right now this only works on the hg repo, and it assumes the patch was applied as a descendant of 3.5 to keep the checks quick. In a perfect world I'd be able to do this all with obsolete marker checks, but that doesn't seem to be a good option yet.
author Augie Fackler <raf@durin42.com>
date Tue, 13 Oct 2015 11:04:51 -0400
parents 2ac43cd7bbf7
children 24d75bc4a3a1
line wrap: on
line source

#!/usr/bin/env python
import argparse
import os
import subprocess
import sys

_MAP = {
    'hg': '~/Programming/hg/crew',
    'hgsubversion': '~/Programming/hg/hgsubversion',
    'hg-git': '~/Programming/hg/hg-git',
    'topics': '~/Programming/hg/topic',
    }


def main(argv):
    p = argparse.ArgumentParser('import patches')
    p.add_argument('repo', type=str, nargs=1,
                   help='repo name to apply patches to')
    args = p.parse_args(argv[1:])
    name, = args.repo
    if name in _MAP:
        repo = _MAP[name]
    else:
        c = []
        for n in _MAP:
            if n.startswith(name):
                c.append(n)
        if not c:
            print 'abort: no repo named %s' % name
            sys.exit(1)
        elif len(c) != 1:
            print 'abort: ambiguous repo name %s matches %s' % (
                name, ', '.join(c))
            sys.exit(1)
        repo = _MAP[c[0]]
    hg = subprocess.Popen(['hg', '-R', repo, 'import', '--obsolete', '-'],
                          stdin=subprocess.PIPE)
    hg.stdin.write(sys.stdin.read())
    hg.stdin.close()
    hg.wait()
    sys.exit(hg.returncode)


if __name__ == '__main__':
    main(argv=sys.argv)