annotate unixSoft/bin/havepatch @ 377:117e3c11d953

zprofile: introduce zprofile use El Capitan (OS X 10.11) introduces a system-level /etc/zprofile which uses a path_helper thing to mangle $PATH. Unfortunately, the way path_helper works, it forces /usr/local/bin and /usr/bin to the *start* of the PATH variable, which means that any PATH mutations I want have to run after /etc/zprofile calls path_helper. As such, move my path insertions into .zprofile{,-machine} rather than .zshenv{,-machine} so that I can still ensure my path entries are at the start of PATH rather than the end. This works because: > Commands are then read from $ZDOTDIR/.zshenv. If the shell is a > login shell, commands are read from /etc/zprofile and then > $ZDOTDIR/.zprofile. Then, if the shell is interactive, commands > are read from /etc/zshrc and then $ZDOTDIR/.zshrc. Finally, if the > shell is a login shell, /etc/zlogin and $ZDOTDIR/.zlogin are read. This means that non-login shells no longer pick up my custom PATH entries, but as I only use OS X as a desktop OS that seems like a workable tradeoff for now.
author Augie Fackler <raf@durin42.com>
date Sun, 31 Jan 2016 20:46:29 -0500
parents ce87db9038f5
children d81eb79e4f4c
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
372
ce87db9038f5 havepatch: new script to easily check if a mailed patch is applied
Augie Fackler <raf@durin42.com>
parents:
diff changeset
1 #!/usr/bin/env python
ce87db9038f5 havepatch: new script to easily check if a mailed patch is applied
Augie Fackler <raf@durin42.com>
parents:
diff changeset
2 """Detect if a patch is already applied in a Mercurial repository."""
ce87db9038f5 havepatch: new script to easily check if a mailed patch is applied
Augie Fackler <raf@durin42.com>
parents:
diff changeset
3 import sys
ce87db9038f5 havepatch: new script to easily check if a mailed patch is applied
Augie Fackler <raf@durin42.com>
parents:
diff changeset
4 import subprocess
ce87db9038f5 havepatch: new script to easily check if a mailed patch is applied
Augie Fackler <raf@durin42.com>
parents:
diff changeset
5 import os
ce87db9038f5 havepatch: new script to easily check if a mailed patch is applied
Augie Fackler <raf@durin42.com>
parents:
diff changeset
6 import re
ce87db9038f5 havepatch: new script to easily check if a mailed patch is applied
Augie Fackler <raf@durin42.com>
parents:
diff changeset
7
ce87db9038f5 havepatch: new script to easily check if a mailed patch is applied
Augie Fackler <raf@durin42.com>
parents:
diff changeset
8 from mercurial import util
ce87db9038f5 havepatch: new script to easily check if a mailed patch is applied
Augie Fackler <raf@durin42.com>
parents:
diff changeset
9
ce87db9038f5 havepatch: new script to easily check if a mailed patch is applied
Augie Fackler <raf@durin42.com>
parents:
diff changeset
10 def main(argv):
ce87db9038f5 havepatch: new script to easily check if a mailed patch is applied
Augie Fackler <raf@durin42.com>
parents:
diff changeset
11 os.chdir(util.expandpath('~/Programming/hg/crew'))
ce87db9038f5 havepatch: new script to easily check if a mailed patch is applied
Augie Fackler <raf@durin42.com>
parents:
diff changeset
12 os.environ['EDITOR'] = 'true'
ce87db9038f5 havepatch: new script to easily check if a mailed patch is applied
Augie Fackler <raf@durin42.com>
parents:
diff changeset
13 pp = subprocess.Popen(['patchpipe'], stdin=sys.stdin,
ce87db9038f5 havepatch: new script to easily check if a mailed patch is applied
Augie Fackler <raf@durin42.com>
parents:
diff changeset
14 stdout=subprocess.PIPE)
ce87db9038f5 havepatch: new script to easily check if a mailed patch is applied
Augie Fackler <raf@durin42.com>
parents:
diff changeset
15 patchdata = pp.stdout.read()
ce87db9038f5 havepatch: new script to easily check if a mailed patch is applied
Augie Fackler <raf@durin42.com>
parents:
diff changeset
16 summary = (l for l in patchdata.splitlines()
ce87db9038f5 havepatch: new script to easily check if a mailed patch is applied
Augie Fackler <raf@durin42.com>
parents:
diff changeset
17 if not l.startswith('#')).next()
ce87db9038f5 havepatch: new script to easily check if a mailed patch is applied
Augie Fackler <raf@durin42.com>
parents:
diff changeset
18 # First pass: look for exact summary matches after tag 3.5
ce87db9038f5 havepatch: new script to easily check if a mailed patch is applied
Augie Fackler <raf@durin42.com>
parents:
diff changeset
19 ret = subprocess.call(['hg', 'log', '-r',
ce87db9038f5 havepatch: new script to easily check if a mailed patch is applied
Augie Fackler <raf@durin42.com>
parents:
diff changeset
20 '(not ::3.5) and grep(%r)' % summary])
ce87db9038f5 havepatch: new script to easily check if a mailed patch is applied
Augie Fackler <raf@durin42.com>
parents:
diff changeset
21 if ret != 0:
ce87db9038f5 havepatch: new script to easily check if a mailed patch is applied
Augie Fackler <raf@durin42.com>
parents:
diff changeset
22 # Failing that, look for obsmarkers that might be relevant. If
ce87db9038f5 havepatch: new script to easily check if a mailed patch is applied
Augie Fackler <raf@durin42.com>
parents:
diff changeset
23 # we could actually do something like 'hg log -r
ce87db9038f5 havepatch: new script to easily check if a mailed patch is applied
Augie Fackler <raf@durin42.com>
parents:
diff changeset
24 # successors($NODE)', that'd be preferable to even the
ce87db9038f5 havepatch: new script to easily check if a mailed patch is applied
Augie Fackler <raf@durin42.com>
parents:
diff changeset
25 # summary-matching from above.
ce87db9038f5 havepatch: new script to easily check if a mailed patch is applied
Augie Fackler <raf@durin42.com>
parents:
diff changeset
26 print 'no exact match in hg log, checking obsmarkers'
ce87db9038f5 havepatch: new script to easily check if a mailed patch is applied
Augie Fackler <raf@durin42.com>
parents:
diff changeset
27 nodematch = re.search('# Node ID ([0-9a-f]{40})', patchdata)
ce87db9038f5 havepatch: new script to easily check if a mailed patch is applied
Augie Fackler <raf@durin42.com>
parents:
diff changeset
28 if nodematch:
ce87db9038f5 havepatch: new script to easily check if a mailed patch is applied
Augie Fackler <raf@durin42.com>
parents:
diff changeset
29 os.system('hg debugobsolete | grep %s' % nodematch.group(1))
ce87db9038f5 havepatch: new script to easily check if a mailed patch is applied
Augie Fackler <raf@durin42.com>
parents:
diff changeset
30 sys.exit(ret)
ce87db9038f5 havepatch: new script to easily check if a mailed patch is applied
Augie Fackler <raf@durin42.com>
parents:
diff changeset
31
ce87db9038f5 havepatch: new script to easily check if a mailed patch is applied
Augie Fackler <raf@durin42.com>
parents:
diff changeset
32 if __name__ == '__main__':
ce87db9038f5 havepatch: new script to easily check if a mailed patch is applied
Augie Fackler <raf@durin42.com>
parents:
diff changeset
33 main(sys.argv)