Mercurial > hg
view contrib/automation/automation.py @ 45670:a8fb29b05f92
salvaged: properly deal with salvaged file during copy tracing
When salvaged files are encountered, the removal have been reverted and we
should keep the rename information from the other side.
The conditional was starting to be quite hairy, so we spell it out in multiple
elif case for readability.
This fixes the associated test cases introduced a while back. The changeset centric copy tracing is now (known) bug free.
Differential Revision: https://phab.mercurial-scm.org/D9130
author | Pierre-Yves David <pierre-yves.david@octobus.net> |
---|---|
date | Wed, 16 Sep 2020 21:00:02 +0200 |
parents | 2372284d9457 |
children |
line wrap: on
line source
#!/usr/bin/env python3 # # automation.py - Perform tasks on remote machines # # Copyright 2019 Gregory Szorc <gregory.szorc@gmail.com> # # This software may be used and distributed according to the terms of the # GNU General Public License version 2 or any later version. import os import pathlib import subprocess import sys import venv HERE = pathlib.Path(os.path.abspath(__file__)).parent REQUIREMENTS_TXT = HERE / 'requirements.txt' SOURCE_DIR = HERE.parent.parent VENV = SOURCE_DIR / 'build' / 'venv-automation' def bootstrap(): venv_created = not VENV.exists() VENV.parent.mkdir(exist_ok=True) venv.create(VENV, with_pip=True) if os.name == 'nt': venv_bin = VENV / 'Scripts' pip = venv_bin / 'pip.exe' python = venv_bin / 'python.exe' else: venv_bin = VENV / 'bin' pip = venv_bin / 'pip' python = venv_bin / 'python' args = [ str(pip), 'install', '-r', str(REQUIREMENTS_TXT), '--disable-pip-version-check', ] if not venv_created: args.append('-q') subprocess.run(args, check=True) os.environ['HGAUTOMATION_BOOTSTRAPPED'] = '1' os.environ['PATH'] = '%s%s%s' % (venv_bin, os.pathsep, os.environ['PATH']) subprocess.run([str(python), __file__] + sys.argv[1:], check=True) def run(): import hgautomation.cli as cli # Need to strip off main Python executable. cli.main() if __name__ == '__main__': try: if 'HGAUTOMATION_BOOTSTRAPPED' not in os.environ: bootstrap() else: run() except subprocess.CalledProcessError as e: sys.exit(e.returncode) except KeyboardInterrupt: sys.exit(1)