Mercurial > dotfiles
view unixSoft/bin/havepatch @ 378:20e47bc8eea9
hgrc: disable hg-git and hgsubversion
It hasn't been common for me to use either of these extensions for
some time, so just drop both of them from the main hgrc. Instead I'll
enable them as-needed in individual repositories.
author | Augie Fackler <durin42@gmail.com> |
---|---|
date | Thu, 09 Jun 2011 20:20:04 -0500 |
parents | ce87db9038f5 |
children | d81eb79e4f4c |
line wrap: on
line source
#!/usr/bin/env python """Detect if a patch is already applied in a Mercurial repository.""" import sys import subprocess import os import re from mercurial import util def main(argv): os.chdir(util.expandpath('~/Programming/hg/crew')) os.environ['EDITOR'] = 'true' pp = subprocess.Popen(['patchpipe'], stdin=sys.stdin, stdout=subprocess.PIPE) patchdata = pp.stdout.read() summary = (l for l in patchdata.splitlines() if not l.startswith('#')).next() # First pass: look for exact summary matches after tag 3.5 ret = subprocess.call(['hg', 'log', '-r', '(not ::3.5) and grep(%r)' % summary]) if ret != 0: # Failing that, look for obsmarkers that might be relevant. If # we could actually do something like 'hg log -r # successors($NODE)', that'd be preferable to even the # summary-matching from above. print 'no exact match in hg log, checking obsmarkers' nodematch = re.search('# Node ID ([0-9a-f]{40})', patchdata) if nodematch: os.system('hg debugobsolete | grep %s' % nodematch.group(1)) sys.exit(ret) if __name__ == '__main__': main(sys.argv)