Mercurial > hg
annotate contrib/perf-utils/discovery-helper.sh @ 45382:0652a533fe3c
mergestate: use _stateextras instead of merge records for commit related info
There is a set of information related to a merge which is needed on commit. We
want to store such information in the mergestate so that we can read it while
committing.
For this purpose, we are using merge records and introduced a merge
entry state for that. However this won't scale and is not clean way to implement
this.
This patch reworks the existing logic related to this to use _stateextras and
read from it.
Right now the information stored is not very descriptive but it will be in next
patch.
Using _stateextras also makes MERGE_RECORD_MERGED_OTHER useless and only to be
kept for BC.
Differential Revision: https://phab.mercurial-scm.org/D8920
author | Pulkit Goyal <7895pulkit@gmail.com> |
---|---|
date | Mon, 10 Aug 2020 15:29:02 +0530 |
parents | cae3f7e37623 |
children |
rev | line source |
---|---|
40805
01c335afc997
contrib: add a helper script that help to build interesting repositories
Boris Feld <boris.feld@octobus.net>
parents:
diff
changeset
|
1 #!/bin/bash |
01c335afc997
contrib: add a helper script that help to build interesting repositories
Boris Feld <boris.feld@octobus.net>
parents:
diff
changeset
|
2 # |
01c335afc997
contrib: add a helper script that help to build interesting repositories
Boris Feld <boris.feld@octobus.net>
parents:
diff
changeset
|
3 # produces two repositories with different common and missing subsets |
01c335afc997
contrib: add a helper script that help to build interesting repositories
Boris Feld <boris.feld@octobus.net>
parents:
diff
changeset
|
4 # |
01c335afc997
contrib: add a helper script that help to build interesting repositories
Boris Feld <boris.feld@octobus.net>
parents:
diff
changeset
|
5 # $ discovery-helper.sh REPO NBHEADS DEPT |
01c335afc997
contrib: add a helper script that help to build interesting repositories
Boris Feld <boris.feld@octobus.net>
parents:
diff
changeset
|
6 # |
01c335afc997
contrib: add a helper script that help to build interesting repositories
Boris Feld <boris.feld@octobus.net>
parents:
diff
changeset
|
7 # The Goal is to produce two repositories with some common part and some |
01c335afc997
contrib: add a helper script that help to build interesting repositories
Boris Feld <boris.feld@octobus.net>
parents:
diff
changeset
|
8 # exclusive part on each side. Provide a source repository REPO, it will |
01c335afc997
contrib: add a helper script that help to build interesting repositories
Boris Feld <boris.feld@octobus.net>
parents:
diff
changeset
|
9 # produce two repositories REPO-left and REPO-right. |
01c335afc997
contrib: add a helper script that help to build interesting repositories
Boris Feld <boris.feld@octobus.net>
parents:
diff
changeset
|
10 # |
01c335afc997
contrib: add a helper script that help to build interesting repositories
Boris Feld <boris.feld@octobus.net>
parents:
diff
changeset
|
11 # Each repository will be missing some revisions exclusive to NBHEADS of the |
01c335afc997
contrib: add a helper script that help to build interesting repositories
Boris Feld <boris.feld@octobus.net>
parents:
diff
changeset
|
12 # repo topological heads. These heads and revisions exclusive to them (up to |
01c335afc997
contrib: add a helper script that help to build interesting repositories
Boris Feld <boris.feld@octobus.net>
parents:
diff
changeset
|
13 # DEPTH depth) are stripped. |
01c335afc997
contrib: add a helper script that help to build interesting repositories
Boris Feld <boris.feld@octobus.net>
parents:
diff
changeset
|
14 # |
01c335afc997
contrib: add a helper script that help to build interesting repositories
Boris Feld <boris.feld@octobus.net>
parents:
diff
changeset
|
15 # The "left" repository will use the NBHEADS first heads (sorted by |
01c335afc997
contrib: add a helper script that help to build interesting repositories
Boris Feld <boris.feld@octobus.net>
parents:
diff
changeset
|
16 # description). The "right" use the last NBHEADS one. |
01c335afc997
contrib: add a helper script that help to build interesting repositories
Boris Feld <boris.feld@octobus.net>
parents:
diff
changeset
|
17 # |
01c335afc997
contrib: add a helper script that help to build interesting repositories
Boris Feld <boris.feld@octobus.net>
parents:
diff
changeset
|
18 # To find out how many topological heads a repo has, use: |
01c335afc997
contrib: add a helper script that help to build interesting repositories
Boris Feld <boris.feld@octobus.net>
parents:
diff
changeset
|
19 # |
01c335afc997
contrib: add a helper script that help to build interesting repositories
Boris Feld <boris.feld@octobus.net>
parents:
diff
changeset
|
20 # $ hg heads -t -T '{rev}\n' | wc -l |
01c335afc997
contrib: add a helper script that help to build interesting repositories
Boris Feld <boris.feld@octobus.net>
parents:
diff
changeset
|
21 # |
01c335afc997
contrib: add a helper script that help to build interesting repositories
Boris Feld <boris.feld@octobus.net>
parents:
diff
changeset
|
22 # Example: |
01c335afc997
contrib: add a helper script that help to build interesting repositories
Boris Feld <boris.feld@octobus.net>
parents:
diff
changeset
|
23 # |
01c335afc997
contrib: add a helper script that help to build interesting repositories
Boris Feld <boris.feld@octobus.net>
parents:
diff
changeset
|
24 # The `pypy-2018-09-01` repository has 192 heads. To produce two repositories |
01c335afc997
contrib: add a helper script that help to build interesting repositories
Boris Feld <boris.feld@octobus.net>
parents:
diff
changeset
|
25 # with 92 common heads and ~50 exclusive heads on each side. |
01c335afc997
contrib: add a helper script that help to build interesting repositories
Boris Feld <boris.feld@octobus.net>
parents:
diff
changeset
|
26 # |
01c335afc997
contrib: add a helper script that help to build interesting repositories
Boris Feld <boris.feld@octobus.net>
parents:
diff
changeset
|
27 # $ ./discovery-helper.sh pypy-2018-08-01 50 10 |
01c335afc997
contrib: add a helper script that help to build interesting repositories
Boris Feld <boris.feld@octobus.net>
parents:
diff
changeset
|
28 |
01c335afc997
contrib: add a helper script that help to build interesting repositories
Boris Feld <boris.feld@octobus.net>
parents:
diff
changeset
|
29 set -euo pipefail |
01c335afc997
contrib: add a helper script that help to build interesting repositories
Boris Feld <boris.feld@octobus.net>
parents:
diff
changeset
|
30 |
41925
4f283b7dac44
discovery-helper: add an extra argument to generate only one repo
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
41895
diff
changeset
|
31 printusage () { |
4f283b7dac44
discovery-helper: add an extra argument to generate only one repo
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
41895
diff
changeset
|
32 echo "usage: `basename $0` REPO NBHEADS DEPTH [left|right]" >&2 |
4f283b7dac44
discovery-helper: add an extra argument to generate only one repo
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
41895
diff
changeset
|
33 } |
4f283b7dac44
discovery-helper: add an extra argument to generate only one repo
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
41895
diff
changeset
|
34 |
40805
01c335afc997
contrib: add a helper script that help to build interesting repositories
Boris Feld <boris.feld@octobus.net>
parents:
diff
changeset
|
35 if [ $# -lt 3 ]; then |
41925
4f283b7dac44
discovery-helper: add an extra argument to generate only one repo
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
41895
diff
changeset
|
36 printusage |
4f283b7dac44
discovery-helper: add an extra argument to generate only one repo
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
41895
diff
changeset
|
37 exit 64 |
40805
01c335afc997
contrib: add a helper script that help to build interesting repositories
Boris Feld <boris.feld@octobus.net>
parents:
diff
changeset
|
38 fi |
01c335afc997
contrib: add a helper script that help to build interesting repositories
Boris Feld <boris.feld@octobus.net>
parents:
diff
changeset
|
39 |
01c335afc997
contrib: add a helper script that help to build interesting repositories
Boris Feld <boris.feld@octobus.net>
parents:
diff
changeset
|
40 repo="$1" |
01c335afc997
contrib: add a helper script that help to build interesting repositories
Boris Feld <boris.feld@octobus.net>
parents:
diff
changeset
|
41 shift |
01c335afc997
contrib: add a helper script that help to build interesting repositories
Boris Feld <boris.feld@octobus.net>
parents:
diff
changeset
|
42 |
01c335afc997
contrib: add a helper script that help to build interesting repositories
Boris Feld <boris.feld@octobus.net>
parents:
diff
changeset
|
43 nbheads="$1" |
01c335afc997
contrib: add a helper script that help to build interesting repositories
Boris Feld <boris.feld@octobus.net>
parents:
diff
changeset
|
44 shift |
01c335afc997
contrib: add a helper script that help to build interesting repositories
Boris Feld <boris.feld@octobus.net>
parents:
diff
changeset
|
45 |
01c335afc997
contrib: add a helper script that help to build interesting repositories
Boris Feld <boris.feld@octobus.net>
parents:
diff
changeset
|
46 depth="$1" |
01c335afc997
contrib: add a helper script that help to build interesting repositories
Boris Feld <boris.feld@octobus.net>
parents:
diff
changeset
|
47 shift |
01c335afc997
contrib: add a helper script that help to build interesting repositories
Boris Feld <boris.feld@octobus.net>
parents:
diff
changeset
|
48 |
41925
4f283b7dac44
discovery-helper: add an extra argument to generate only one repo
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
41895
diff
changeset
|
49 doleft=1 |
4f283b7dac44
discovery-helper: add an extra argument to generate only one repo
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
41895
diff
changeset
|
50 doright=1 |
4f283b7dac44
discovery-helper: add an extra argument to generate only one repo
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
41895
diff
changeset
|
51 if [ $# -gt 1 ]; then |
4f283b7dac44
discovery-helper: add an extra argument to generate only one repo
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
41895
diff
changeset
|
52 printusage |
4f283b7dac44
discovery-helper: add an extra argument to generate only one repo
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
41895
diff
changeset
|
53 exit 64 |
4f283b7dac44
discovery-helper: add an extra argument to generate only one repo
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
41895
diff
changeset
|
54 elif [ $# -eq 1 ]; then |
4f283b7dac44
discovery-helper: add an extra argument to generate only one repo
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
41895
diff
changeset
|
55 if [ "$1" == "left" ]; then |
4f283b7dac44
discovery-helper: add an extra argument to generate only one repo
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
41895
diff
changeset
|
56 doleft=1 |
4f283b7dac44
discovery-helper: add an extra argument to generate only one repo
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
41895
diff
changeset
|
57 doright=0 |
4f283b7dac44
discovery-helper: add an extra argument to generate only one repo
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
41895
diff
changeset
|
58 elif [ "$1" == "right" ]; then |
4f283b7dac44
discovery-helper: add an extra argument to generate only one repo
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
41895
diff
changeset
|
59 doleft=0 |
4f283b7dac44
discovery-helper: add an extra argument to generate only one repo
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
41895
diff
changeset
|
60 doright=1 |
4f283b7dac44
discovery-helper: add an extra argument to generate only one repo
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
41895
diff
changeset
|
61 else |
4f283b7dac44
discovery-helper: add an extra argument to generate only one repo
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
41895
diff
changeset
|
62 printusage |
4f283b7dac44
discovery-helper: add an extra argument to generate only one repo
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
41895
diff
changeset
|
63 exit 64 |
4f283b7dac44
discovery-helper: add an extra argument to generate only one repo
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
41895
diff
changeset
|
64 fi |
4f283b7dac44
discovery-helper: add an extra argument to generate only one repo
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
41895
diff
changeset
|
65 fi |
4f283b7dac44
discovery-helper: add an extra argument to generate only one repo
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
41895
diff
changeset
|
66 |
41895
c1017bceb6ec
discovery-helper: reflect argument value in the name of the results
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
41894
diff
changeset
|
67 leftrepo="${repo}-${nbheads}h-${depth}d-left" |
c1017bceb6ec
discovery-helper: reflect argument value in the name of the results
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
41894
diff
changeset
|
68 rightrepo="${repo}-${nbheads}h-${depth}d-right" |
40805
01c335afc997
contrib: add a helper script that help to build interesting repositories
Boris Feld <boris.feld@octobus.net>
parents:
diff
changeset
|
69 |
01c335afc997
contrib: add a helper script that help to build interesting repositories
Boris Feld <boris.feld@octobus.net>
parents:
diff
changeset
|
70 left="first(sort(heads(all()), 'desc'), $nbheads)" |
01c335afc997
contrib: add a helper script that help to build interesting repositories
Boris Feld <boris.feld@octobus.net>
parents:
diff
changeset
|
71 right="last(sort(heads(all()), 'desc'), $nbheads)" |
01c335afc997
contrib: add a helper script that help to build interesting repositories
Boris Feld <boris.feld@octobus.net>
parents:
diff
changeset
|
72 |
01c335afc997
contrib: add a helper script that help to build interesting repositories
Boris Feld <boris.feld@octobus.net>
parents:
diff
changeset
|
73 leftsubset="ancestors($left, $depth) and only($left, heads(all() - $left))" |
01c335afc997
contrib: add a helper script that help to build interesting repositories
Boris Feld <boris.feld@octobus.net>
parents:
diff
changeset
|
74 rightsubset="ancestors($right, $depth) and only($right, heads(all() - $right))" |
01c335afc997
contrib: add a helper script that help to build interesting repositories
Boris Feld <boris.feld@octobus.net>
parents:
diff
changeset
|
75 |
41894
aea6bc63884d
discovery-helper: echo the stripped revsets early
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
41893
diff
changeset
|
76 echo '### creating left/right repositories with missing changesets:' |
41925
4f283b7dac44
discovery-helper: add an extra argument to generate only one repo
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
41895
diff
changeset
|
77 if [ $doleft -eq 1 ]; then |
4f283b7dac44
discovery-helper: add an extra argument to generate only one repo
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
41895
diff
changeset
|
78 echo '# left revset:' '"'${leftsubset}'"' |
4f283b7dac44
discovery-helper: add an extra argument to generate only one repo
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
41895
diff
changeset
|
79 fi |
4f283b7dac44
discovery-helper: add an extra argument to generate only one repo
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
41895
diff
changeset
|
80 if [ $doright -eq 1 ]; then |
4f283b7dac44
discovery-helper: add an extra argument to generate only one repo
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
41895
diff
changeset
|
81 echo '# right revset:' '"'${rightsubset}'"' |
4f283b7dac44
discovery-helper: add an extra argument to generate only one repo
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
41895
diff
changeset
|
82 fi |
41894
aea6bc63884d
discovery-helper: echo the stripped revsets early
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
41893
diff
changeset
|
83 |
41926
cb6c9d41a23e
discovery-helper: move repository creation in a function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
41925
diff
changeset
|
84 buildone() { |
41927
a60e9f163595
discovery-helper: bail out if destination already exists
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
41926
diff
changeset
|
85 side="$1" |
a60e9f163595
discovery-helper: bail out if destination already exists
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
41926
diff
changeset
|
86 dest="$2" |
a60e9f163595
discovery-helper: bail out if destination already exists
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
41926
diff
changeset
|
87 revset="$3" |
41926
cb6c9d41a23e
discovery-helper: move repository creation in a function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
41925
diff
changeset
|
88 echo "### building $side repository: $dest" |
41927
a60e9f163595
discovery-helper: bail out if destination already exists
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
41926
diff
changeset
|
89 if [ -e "$dest" ]; then |
a60e9f163595
discovery-helper: bail out if destination already exists
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
41926
diff
changeset
|
90 echo "destination repo already exists: $dest" >&2 |
a60e9f163595
discovery-helper: bail out if destination already exists
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
41926
diff
changeset
|
91 exit 1 |
a60e9f163595
discovery-helper: bail out if destination already exists
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
41926
diff
changeset
|
92 fi |
41925
4f283b7dac44
discovery-helper: add an extra argument to generate only one repo
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
41895
diff
changeset
|
93 echo '# cloning' |
41928
cae3f7e37623
discovery-helper: use reflink copy if available
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
41927
diff
changeset
|
94 if ! cp --recursive --reflink=always ${repo} ${dest}; then |
cae3f7e37623
discovery-helper: use reflink copy if available
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
41927
diff
changeset
|
95 hg clone --noupdate "${repo}" "${dest}" |
cae3f7e37623
discovery-helper: use reflink copy if available
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
41927
diff
changeset
|
96 fi |
41926
cb6c9d41a23e
discovery-helper: move repository creation in a function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
41925
diff
changeset
|
97 echo '# stripping' '"'${revset}'"' |
cb6c9d41a23e
discovery-helper: move repository creation in a function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
41925
diff
changeset
|
98 hg -R "${dest}" --config extensions.strip= strip --rev "$revset" --no-backup |
cb6c9d41a23e
discovery-helper: move repository creation in a function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
41925
diff
changeset
|
99 } |
cb6c9d41a23e
discovery-helper: move repository creation in a function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
41925
diff
changeset
|
100 |
cb6c9d41a23e
discovery-helper: move repository creation in a function
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
41925
diff
changeset
|
101 if [ $doleft -eq 1 ]; then |
41927
a60e9f163595
discovery-helper: bail out if destination already exists
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
41926
diff
changeset
|
102 buildone left "$leftrepo" "$leftsubset" |
41925
4f283b7dac44
discovery-helper: add an extra argument to generate only one repo
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
41895
diff
changeset
|
103 fi |
40805
01c335afc997
contrib: add a helper script that help to build interesting repositories
Boris Feld <boris.feld@octobus.net>
parents:
diff
changeset
|
104 |
41925
4f283b7dac44
discovery-helper: add an extra argument to generate only one repo
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
41895
diff
changeset
|
105 if [ $doright -eq 1 ]; then |
41927
a60e9f163595
discovery-helper: bail out if destination already exists
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
41926
diff
changeset
|
106 buildone right "$rightrepo" "$rightsubset" |
41925
4f283b7dac44
discovery-helper: add an extra argument to generate only one repo
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
41895
diff
changeset
|
107 fi |