Mercurial > hg
view tests/printenv.py @ 45125:f55099982bc5
absorb: make it explicit if empty changeset was created
If the config rewrite.empty-successor=skip is set, a message "became empty and
was dropped" is shown if the changeset became empty. If the config
rewrite.empty-successor=keep is set, absorb may create changesets even if they
became empty. It’s probably a good idea to make that explicit. Therefore the
message is changed to be a combination of both: "became empty and became ...".
Repeating the word "became" is not very elegant. This results from the fact
that "became" was and is overloaded to indicate both the change from non-empty
to empty and the successor relation. In the combinated message, both meanings
are used in one sentence.
author | Manuel Jacob <me@manueljacob.de> |
---|---|
date | Mon, 01 Jun 2020 09:55:31 +0200 |
parents | 2372284d9457 |
children | c102b704edb5 |
line wrap: on
line source
#!/usr/bin/env python # # simple script to be used in hooks # # put something like this in the repo .hg/hgrc: # # [hooks] # changegroup = python "$TESTDIR/printenv.py" <hookname> [exit] [output] # # - <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. # from __future__ import absolute_import import argparse import os import sys try: import msvcrt msvcrt.setmode(sys.stdin.fileno(), os.O_BINARY) msvcrt.setmode(sys.stdout.fileno(), os.O_BINARY) msvcrt.setmode(sys.stderr.fileno(), os.O_BINARY) except ImportError: pass 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" ) parser.add_argument( "--line", action="store_true", help="print environment variables one per line instead of on a single line", ) args = parser.parse_args() if args.out is None: out = sys.stdout out = getattr(out, "buffer", out) else: out = open(args.out, "ab") # variables with empty values may not exist on all platforms, filter # them now for portability sake. env = [(k, v) for k, v in os.environ.items() if k.startswith("HG_") and v] env.sort() out.write(b"%s hook: " % args.name.encode('ascii')) if os.name == 'nt': filter = lambda x: x.replace('\\', '/') else: filter = lambda x: x vars = [ b"%s=%s" % (k.encode('ascii'), filter(v).encode('ascii')) for k, v in env ] # 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") out.write(b"\n") out.close() sys.exit(args.exitcode)