##// END OF EJS Templates
phabricator: warn if unable to amend, instead of aborting after posting...
phabricator: warn if unable to amend, instead of aborting after posting There was a divergence in behavior here between obsolete and strip based amending. I first noticed the abort when testing outside of the test harness, but then had trouble recreating it here after reverting the code changes. It turns out, strip based amend was successfully amending the public commit after it was posted! It looks like the protection is in the `commit --amend` command, not in the underlying code that it calls. I considered doing a preflight check and aborting. But the locks are only acquired at the end, if amending, and this is too large a section of code to be wrapped in a maybe-it's-held-or-not context manager for my tastes. Additionally, some people do post-push reviews, and amending is the default behavior, so they shouldn't see a misleading error message. The lack of a 'Differential Revision' entry in the commit message breaks a {phabreview} test, so it had to be partially conditionalized.

File last commit:

r41065:73da729c default
r41198:0101a35d default
Show More
printenv.py
79 lines | 1.9 KiB | text/x-python | PythonLexer
Matt Mackall
tests: make printenv executable
r25477 #!/usr/bin/env python
#
Alexis S. L. Carvalho
Add tests/printenv.py...
r4285 # simple script to be used in hooks
#
# put something like this in the repo .hg/hgrc:
#
# [hooks]
Mads Kiilerich
tests: consistently use printenv.py the same MSYS/Windows-compatible way...
r17018 # changegroup = python "$TESTDIR/printenv.py" <hookname> [exit] [output]
Alexis S. L. Carvalho
Add tests/printenv.py...
r4285 #
# - <hookname> is a mandatory argument (e.g. "changegroup")
# - [exit] is the exit code of the hook (default: 0)
# - [output] is the name of the output file (default: use sys.stdout)
# the file will be opened in append mode.
#
Robert Stanca
py3: use absolute_import in printenv.py
r28944 from __future__ import absolute_import
Boris Feld
tests: update printenv.py argument parsing...
r41054 import argparse
Alexis S. L. Carvalho
Add tests/printenv.py...
r4285 import os
import sys
Patrick Mezard
tests: Windows compatibility fixes...
r7080 try:
import msvcrt
msvcrt.setmode(sys.stdin.fileno(), os.O_BINARY)
msvcrt.setmode(sys.stdout.fileno(), os.O_BINARY)
Dirkjan Ochtman
clean up trailing spaces, leading spaces in C
r7186 msvcrt.setmode(sys.stderr.fileno(), os.O_BINARY)
Patrick Mezard
tests: Windows compatibility fixes...
r7080 except ImportError:
pass
Boris Feld
tests: update printenv.py argument parsing...
r41054 parser = argparse.ArgumentParser()
parser.add_argument("name", help="the hook name, used for display")
parser.add_argument(
"exitcode",
nargs="?",
default=0,
type=int,
help="the exit code for the hook",
)
parser.add_argument(
"out", nargs="?", default=None, help="where to write the output"
)
Boris Feld
test: introduce a new flag to display env variable line per line...
r41065 parser.add_argument(
"--line",
action="store_true",
help="print environment variables one per line instead of on a single line",
)
Boris Feld
tests: update printenv.py argument parsing...
r41054 args = parser.parse_args()
Alexis S. L. Carvalho
Add tests/printenv.py...
r4285
Boris Feld
tests: update printenv.py argument parsing...
r41054 if args.out is None:
out = sys.stdout
out = getattr(out, "buffer", out)
else:
out = open(args.out, "ab")
Alexis S. L. Carvalho
Add tests/printenv.py...
r4285
Patrick Mezard
printenv: filter empty environment variables for portability.
r4643 # variables with empty values may not exist on all platforms, filter
# them now for portability sake.
Augie Fackler
printenv: port to python3...
r36268 env = [(k, v) for k, v in os.environ.items()
Patrick Mezard
printenv: filter empty environment variables for portability.
r4643 if k.startswith("HG_") and v]
Alexis S. L. Carvalho
Add tests/printenv.py...
r4285 env.sort()
Boris Feld
tests: update printenv.py argument parsing...
r41054 out.write(b"%s hook: " % args.name.encode('ascii'))
Adrian Buehlmann
tests/printenv.py: eliminate trailing spaces on output
r16982 if os.name == 'nt':
filter = lambda x: x.replace('\\', '/')
else:
filter = lambda x: x
Boris Feld
test: introduce a new flag to display env variable line per line...
r41065
Pulkit Goyal
py3: use bytes in tests/printenv.py...
r38123 vars = [b"%s=%s" % (k.encode('ascii'), filter(v).encode('ascii'))
for k, v in env]
Boris Feld
test: introduce a new flag to display env variable line per line...
r41065
# Print variables on out
if not args.line:
out.write(b" ".join(vars))
else:
for var in vars:
out.write(var)
out.write(b"\n")
Pulkit Goyal
py3: use bytes in tests/printenv.py...
r38123 out.write(b"\n")
Alexis S. L. Carvalho
Add tests/printenv.py...
r4285 out.close()
Boris Feld
tests: update printenv.py argument parsing...
r41054 sys.exit(args.exitcode)