Mercurial > dotfiles
view unixSoft/bin/havepatch @ 380:0ceb8554801e
zsh: make vcs info in prompt async
Roughly cribbed from [0], but I'm hoping to rework this soon to use
the zsh async library that shouldn't require a tempfile.
0: http://www.anishathalye.com/2015/02/07/an-asynchronous-shell-prompt/
author | Augie Fackler <raf@durin42.com> |
---|---|
date | Thu, 10 Mar 2016 18:56:28 -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)