# HG changeset patch # User Boris Feld <boris.feld@octobus.net> # Date 1548436896 18000 # Fri Jan 25 12:21:36 2019 -0500 # Node ID 039688ae2325e9573a50bdfc6d5d88a84d3b8a76 # Parent 9462b14569817f095344e8013a838333f5ab5e10 Add `--optimize` flag to make-reference diff --git a/repo-scripts/make-reference b/repo-scripts/make-reference --- a/repo-scripts/make-reference +++ b/repo-scripts/make-reference @@ -25,6 +25,12 @@ parser = argparse.ArgumentParser() parser.add_argument("source") parser.add_argument("id") + parser.add_argument( + "--optimize", + help="Run extra optimization through debugupgraderepo before archiving", + nargs="+", + ) + args = parser.parse_args(args) repo_source = args.source @@ -58,13 +64,24 @@ mismatch = check_format_data(repo_main) ### Run upgraderepo if needed - if len(mismatch) > 0: - print("Running debugupgraderepo because of format mismatch:") - for format_name, repo_value, config_value in mismatch: - msg = "\t{0}: {1!r} != {2!r} (repo/config)" - print(msg.format(format_name, repo_value, config_value)) + if len(mismatch) > 0 or args.optimize: + if not args.optimize: + print("Running debugupgraderepo because of format mismatch:") + for format_name, repo_value, config_value in mismatch: + msg = "\t{0}: {1!r} != {2!r} (repo/config)" + print(msg.format(format_name, repo_value, config_value)) - shell_exec(["hg", "-R", repo_main, "debugupgraderepo", "--run"]) + shell_exec(["hg", "-R", repo_main, "debugupgraderepo", "--run"]) + else: + print("Running `debugupgraderepo` with requested optimizations:") + print("\t{0}".format(", ".join(args.optimize))) + cmd = ["hg", "-R", repo_main, "debugupgraderepo", "--run"] + + for optimization in args.optimize: + cmd.append("-o") + cmd.append(optimization) + + shell_exec(cmd) # We need to remove the upgradebackup for backup_dir in glob(join(repo_main, ".hg", "upgradebackup*")): diff --git a/tests/test-make-reference.t b/tests/test-make-reference.t --- a/tests/test-make-reference.t +++ b/tests/test-make-reference.t @@ -14,15 +14,15 @@ ---------- $ make-reference - usage: make-reference [-h] source id + usage: make-reference [-h] [--optimize OPTIMIZE [OPTIMIZE ...]] source id make-reference: error: too few arguments [2] $ make-reference some-dir/my-source-repo - usage: make-reference [-h] source id + usage: make-reference [-h] [--optimize OPTIMIZE [OPTIMIZE ...]] source id make-reference: error: too few arguments [2] $ make-reference my-id - usage: make-reference [-h] source id + usage: make-reference [-h] [--optimize OPTIMIZE [OPTIMIZE ...]] source id make-reference: error: too few arguments [2] @@ -206,8 +206,10 @@ > EOF $ chmod +x editor.sh $ EDITOR=$PWD/editor.sh update-reference-config my-reference-reference.tar + $ mkdir dst $ cd dst + $ tar xf ../my-reference-reference.tar my-reference.benchrepo $ cat my-reference.benchrepo reference-repo: @@ -231,3 +233,50 @@ all: 53 visible: 53 source: some-dir/my-other-source-repo + $ cd .. + +Call from scratch with explicit optimization +-------------------------------------------- + + $ rm -rf my-reference.benchrepo my-reference-reference.tar my-reference-reference + $ ls -1 + dst + editor.sh + some-dir + $ make-reference some-dir/my-source-repo my-reference --optimize re-delta-parent re-delta-multibase + copy of old repository backed up at $TESTTMP/my-reference-reference/.hg/upgradebackup.* (glob) + the old repository will not be deleted; remove it to free up disk space once the upgraded repository is verified + hg cloning repository from: some-dir/my-source-repo + Running `debugupgraderepo` with requested optimizations: + re-delta-parent, re-delta-multibase + building a reference tarball + result available at: my-reference-reference.tar + $ ls -1 + dst + editor.sh + my-reference-reference + my-reference-reference.tar + my-reference.benchrepo + some-dir + $ cat my-reference.benchrepo + reference-repo: + enabled: true + format-info: + compression: zlib + dotencode: true + fncache: true + generaldelta: true + plain-cl-delta: true + sparserevlog: true + hg-version: * (glob) + id: my-reference + number-heads: + all: 3 + visible: 3 + number-named-branch: + all: 1 + visible: 1 + number-revisions: + all: 53 + visible: 53 + source: some-dir/my-source-repo