##// END OF EJS Templates
tests: write commit message using file I/O...
tests: write commit message using file I/O Python 2.7 will print() \x94\x5c\x0a whereas Python 3 will print() \xc2\x94\x5c\x0a. Why, I'm not sure. It probably has to do with print() being Unicode aware on Python 3 and Python attempting some kind of encoding before emitting the output. This difference results in a different bytes making it to the commit message and the JSON output varying. We work around this by writing bytes to a commit message file. Differential Revision: https://phab.mercurial-scm.org/D5741

File last commit:

r40841:01c335af default
r41602:c67f55b0 default
Show More
discovery-helper.sh
64 lines | 1.9 KiB | application/x-sh | BashLexer
/ contrib / discovery-helper.sh
Boris Feld
contrib: add a helper script that help to build interesting repositories...
r40841 #!/bin/bash
#
# produces two repositories with different common and missing subsets
#
# $ discovery-helper.sh REPO NBHEADS DEPT
#
# The Goal is to produce two repositories with some common part and some
# exclusive part on each side. Provide a source repository REPO, it will
# produce two repositories REPO-left and REPO-right.
#
# Each repository will be missing some revisions exclusive to NBHEADS of the
# repo topological heads. These heads and revisions exclusive to them (up to
# DEPTH depth) are stripped.
#
# The "left" repository will use the NBHEADS first heads (sorted by
# description). The "right" use the last NBHEADS one.
#
# To find out how many topological heads a repo has, use:
#
# $ hg heads -t -T '{rev}\n' | wc -l
#
# Example:
#
# The `pypy-2018-09-01` repository has 192 heads. To produce two repositories
# with 92 common heads and ~50 exclusive heads on each side.
#
# $ ./discovery-helper.sh pypy-2018-08-01 50 10
set -euo pipefail
if [ $# -lt 3 ]; then
echo "usage: `basename $0` REPO NBHEADS DEPTH"
exit 64
fi
repo="$1"
shift
nbheads="$1"
shift
depth="$1"
shift
leftrepo="${repo}-left"
rightrepo="${repo}-right"
left="first(sort(heads(all()), 'desc'), $nbheads)"
right="last(sort(heads(all()), 'desc'), $nbheads)"
leftsubset="ancestors($left, $depth) and only($left, heads(all() - $left))"
rightsubset="ancestors($right, $depth) and only($right, heads(all() - $right))"
echo '### building left repository:' $left-repo
echo '# cloning'
hg clone --noupdate "${repo}" "${leftrepo}"
echo '# stripping' '"'${leftsubset}'"'
hg -R "${leftrepo}" --config extensions.strip= strip --rev "$leftsubset" --no-backup
echo '### building right repository:' $right-repo
echo '# cloning'
hg clone --noupdate "${repo}" "${rightrepo}"
echo '# stripping:' '"'${rightsubset}'"'
hg -R "${rightrepo}" --config extensions.strip= strip --rev "$rightsubset" --no-backup