Newer
Older
====================================
Test for the `make reference` script
====================================
Setup
$ export PATH=$TESTDIR/../repo-scripts/:${PATH}
$ mkdir some-dir
$ hg init some-dir/my-source-repo --config format.usegeneraldelta=False
$ hg -R some-dir/my-source-repo debugbuilddag --new-file '.+5:brancha$.+11:branchb$.+30:branchc<brancha+2<branchb+2'
Define partial set
$ cat << EOF >> p-config.yaml
> partial-sets:
> same:
> missing-last-10:
> remove: "last(all(), 10)"
> roles:
> pull:
> noop:
> same:
> source: "reference"
> target: "same"
Wrong call
----------
$ make-reference
usage: make-reference [-h] [--optimize OPTIMIZE [OPTIMIZE ...]] [--hgrc HGRC]
[--existing-repo EXISTING_REPO]
source id partial_sets_file
make-reference: error: too few arguments
[2]
$ make-reference some-dir/my-source-repo
usage: make-reference [-h] [--optimize OPTIMIZE [OPTIMIZE ...]] [--hgrc HGRC]
[--existing-repo EXISTING_REPO]
source id partial_sets_file
make-reference: error: too few arguments
[2]
$ make-reference my-id
usage: make-reference [-h] [--optimize OPTIMIZE [OPTIMIZE ...]] [--hgrc HGRC]
[--existing-repo EXISTING_REPO]
source id partial_sets_file
make-reference: error: too few arguments
[2]
Call from scratch
-----------------
$ make-reference some-dir/my-source-repo my-reference p-config.yaml
copy of old repository backed up at $TESTTMP/my-reference-tmp?????-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 because of format mismatch:
generaldelta: False != True (repo/config)
sparserevlog: False != True (repo/config)
building a reference tarball
result available at: my-reference-0c229866-reference.tar
$ ls -1
my-reference-0c229866-reference
my-reference-0c229866-reference.tar
my-reference-0c229866.benchrepo
some-dir
$ cat my-reference-*.benchrepo
partial-sets:
missing-last-10:
remove: last(all(), 10)
same: null
reference-repo:
format-info:
compression: zlib
compression-level: default
dotencode: true
fncache: true
generaldelta: true
plain-cl-delta: true
sparserevlog: true
id: my-reference
number-heads:
all: 3
visible: 3
number-named-branch:
all: 1
visible: 1
number-revisions:
all: 53
repo-hash: 0c229866
repo-prefix: my-reference-0c229866
source: some-dir/my-source-repo
roles:
pull:
noop:
same:
source: reference
target: same
Call with existing data
-----------------
$ rm -rf my-reference-*.benchrepo my-reference-*.tar my-reference-*-reference
$ ls -1
$ make-reference some-dir/my-source-repo my-reference p-config.yaml --existing-repo some-dir/my-source-repo
copy of old repository backed up at $TESTTMP/my-reference-tmp?????-reference/.hg/upgradebackup.* (glob)
the old repository will not be deleted; remove it to free up disk space once the upgraded repository is verified
using 'some-dir/my-source-repo' as source instead of cloning
(make sure this was cloned with the right version)
Running debugupgraderepo because of format mismatch:
generaldelta: False != True (repo/config)
sparserevlog: False != True (repo/config)
building a reference tarball
result available at: my-reference-0c229866-reference.tar
$ ls -1
my-reference-0c229866-reference
my-reference-0c229866-reference.tar
my-reference-0c229866.benchrepo
some-dir
$ cat my-reference-*.benchrepo
partial-sets:
missing-last-10:
remove: last(all(), 10)
same: null
reference-repo:
format-info:
compression: zlib
compression-level: default
dotencode: true
fncache: true
generaldelta: true
plain-cl-delta: true
sparserevlog: true
id: my-reference
number-heads:
all: 3
visible: 3
number-named-branch:
all: 1
visible: 1
number-revisions:
all: 53
repo-hash: 0c229866
repo-prefix: my-reference-0c229866
source: some-dir/my-source-repo
roles:
pull:
noop:
same:
source: reference
target: same
$ tar tf my-reference-*-reference.tar | sort
my-reference-0c229866-reference/
my-reference-0c229866-reference/.hg/
my-reference-0c229866-reference/.hg/00changelog.i
my-reference-0c229866-reference/.hg/cache/
my-reference-0c229866-reference/.hg/cache/branch2-served
my-reference-0c229866-reference/.hg/cache/hgtagsfnodes1
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
my-reference-0c229866-reference/.hg/cache/rbc-names-v1
my-reference-0c229866-reference/.hg/cache/rbc-revs-v1
my-reference-0c229866-reference/.hg/cache/tags2
my-reference-0c229866-reference/.hg/cache/tags2-served
my-reference-0c229866-reference/.hg/dirstate
my-reference-0c229866-reference/.hg/localtags
my-reference-0c229866-reference/.hg/requires
my-reference-0c229866-reference/.hg/store/
my-reference-0c229866-reference/.hg/store/00changelog.i
my-reference-0c229866-reference/.hg/store/00manifest.i
my-reference-0c229866-reference/.hg/store/data/
my-reference-0c229866-reference/.hg/store/data/nf0.i
my-reference-0c229866-reference/.hg/store/data/nf1.i
my-reference-0c229866-reference/.hg/store/data/nf10.i
my-reference-0c229866-reference/.hg/store/data/nf11.i
my-reference-0c229866-reference/.hg/store/data/nf12.i
my-reference-0c229866-reference/.hg/store/data/nf13.i
my-reference-0c229866-reference/.hg/store/data/nf14.i
my-reference-0c229866-reference/.hg/store/data/nf15.i
my-reference-0c229866-reference/.hg/store/data/nf16.i
my-reference-0c229866-reference/.hg/store/data/nf17.i
my-reference-0c229866-reference/.hg/store/data/nf18.i
my-reference-0c229866-reference/.hg/store/data/nf19.i
my-reference-0c229866-reference/.hg/store/data/nf2.i
my-reference-0c229866-reference/.hg/store/data/nf20.i
my-reference-0c229866-reference/.hg/store/data/nf21.i
my-reference-0c229866-reference/.hg/store/data/nf22.i
my-reference-0c229866-reference/.hg/store/data/nf23.i
my-reference-0c229866-reference/.hg/store/data/nf24.i
my-reference-0c229866-reference/.hg/store/data/nf25.i
my-reference-0c229866-reference/.hg/store/data/nf26.i
my-reference-0c229866-reference/.hg/store/data/nf27.i
my-reference-0c229866-reference/.hg/store/data/nf28.i
my-reference-0c229866-reference/.hg/store/data/nf29.i
my-reference-0c229866-reference/.hg/store/data/nf3.i
my-reference-0c229866-reference/.hg/store/data/nf30.i
my-reference-0c229866-reference/.hg/store/data/nf31.i
my-reference-0c229866-reference/.hg/store/data/nf32.i
my-reference-0c229866-reference/.hg/store/data/nf33.i
my-reference-0c229866-reference/.hg/store/data/nf34.i
my-reference-0c229866-reference/.hg/store/data/nf35.i
my-reference-0c229866-reference/.hg/store/data/nf36.i
my-reference-0c229866-reference/.hg/store/data/nf37.i
my-reference-0c229866-reference/.hg/store/data/nf38.i
my-reference-0c229866-reference/.hg/store/data/nf39.i
my-reference-0c229866-reference/.hg/store/data/nf4.i
my-reference-0c229866-reference/.hg/store/data/nf40.i
my-reference-0c229866-reference/.hg/store/data/nf41.i
my-reference-0c229866-reference/.hg/store/data/nf42.i
my-reference-0c229866-reference/.hg/store/data/nf43.i
my-reference-0c229866-reference/.hg/store/data/nf44.i
my-reference-0c229866-reference/.hg/store/data/nf45.i
my-reference-0c229866-reference/.hg/store/data/nf46.i
my-reference-0c229866-reference/.hg/store/data/nf47.i
my-reference-0c229866-reference/.hg/store/data/nf48.i
my-reference-0c229866-reference/.hg/store/data/nf49.i
my-reference-0c229866-reference/.hg/store/data/nf5.i
my-reference-0c229866-reference/.hg/store/data/nf50.i
my-reference-0c229866-reference/.hg/store/data/nf51.i
my-reference-0c229866-reference/.hg/store/data/nf52.i
my-reference-0c229866-reference/.hg/store/data/nf6.i
my-reference-0c229866-reference/.hg/store/data/nf7.i
my-reference-0c229866-reference/.hg/store/data/nf8.i
my-reference-0c229866-reference/.hg/store/data/nf9.i
my-reference-0c229866-reference/.hg/store/fncache
my-reference-0c229866-reference/.hg/store/phaseroots
my-reference-0c229866-reference/.hg/store/undo
my-reference-0c229866-reference/.hg/store/undo.backupfiles
my-reference-0c229866-reference/.hg/store/undo.phaseroots
my-reference-0c229866-reference/.hg/undo.bookmarks
my-reference-0c229866-reference/.hg/undo.branch
my-reference-0c229866-reference/.hg/undo.desc
my-reference-0c229866-reference/.hg/undo.dirstate
my-reference-0c229866-reference/.hg/wcache/
my-reference-0c229866-reference/.hg/wcache/manifestfulltextcache
my-reference-0c229866.benchrepo
update the reference
--------------------
$ EDITOR=cat update-reference-config my-reference-*-reference.tar
partial-sets:
missing-last-10:
remove: last(all(), 10)
same: null
reference-repo:
format-info:
compression: zlib
compression-level: default
dotencode: true
fncache: true
generaldelta: true
plain-cl-delta: true
sparserevlog: true
id: my-reference
number-heads:
all: 3
visible: 3
number-named-branch:
all: 1
visible: 1
number-revisions:
all: 53
repo-hash: 0c229866
repo-prefix: my-reference-0c229866
source: some-dir/my-source-repo
roles:
pull:
noop:
same:
source: reference
target: same
$ cat << EOF > editor.sh
> #!/bin/bash
> sed -i 's,some-dir/my-source-repo,some-dir/my-other-source-repo,' \$1
> 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 --wildcards "my-reference-*.benchrepo"
$ cat my-reference-*.benchrepo
partial-sets:
missing-last-10:
remove: last(all(), 10)
same: null
reference-repo:
format-info:
compression: zlib
compression-level: default
dotencode: true
fncache: true
generaldelta: true
plain-cl-delta: true
sparserevlog: true
id: my-reference
number-heads:
all: 3
visible: 3
number-named-branch:
all: 1
visible: 1
number-revisions:
all: 53
repo-hash: 0c229866
repo-prefix: my-reference-0c229866
source: some-dir/my-other-source-repo
roles:
pull:
noop:
same:
source: reference
target: same
$ cd ..
Call from scratch with explicit optimization
--------------------------------------------
$ rm -rf my-reference-*.benchrepo my-reference-reference-*.tar my-reference-*-reference
my-reference-0c229866-reference.tar
$ make-reference some-dir/my-source-repo my-reference p-config.yaml --optimize re-delta-parent re-delta-multibase
copy of old repository backed up at $TESTTMP/my-reference-tmp?????-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-0c229866-reference.tar
my-reference-0c229866-reference
my-reference-0c229866-reference.tar
my-reference-0c229866.benchrepo
$ cat my-reference-*.benchrepo
partial-sets:
missing-last-10:
remove: last(all(), 10)
same: null
reference-repo:
enabled: true
format-info:
compression: zlib
compression-level: default
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
repo-hash: 0c229866
repo-prefix: my-reference-0c229866
roles:
pull:
noop:
same:
source: reference
target: same
Call from scratch with given hgrc file
--------------------------------------
$ rm -rf my-reference-*.benchrepo my-reference-*.tar my-reference-reference
$ ls -1
dst
editor.sh
my-reference-0c229866-reference
some-dir
$ cat << EOF > sparse-revlog-hgrc
> [format]
> sparse-revlog = false
> EOF
$ make-reference some-dir/my-source-repo my-reference p-config.yaml --hgrc non-existing-hgrc
Given hgrc 'non-existing-hgrc' is not a file
[1]
$ make-reference some-dir/my-source-repo my-reference p-config.yaml --hgrc sparse-revlog-hgrc
copy of old repository backed up at $TESTTMP/my-reference-tmp?????-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
copying hgrc file from: sparse-revlog-hgrc
Running debugupgraderepo because of format mismatch:
generaldelta: False != True (repo/config)
building a reference tarball
result available at: my-reference-8e2c7069-reference.tar
$ ls -1
dst
editor.sh
my-reference-0c229866-reference
my-reference-8e2c7069-reference
my-reference-8e2c7069-reference.tar
my-reference-8e2c7069.benchrepo
some-dir
sparse-revlog-hgrc
$ cat my-reference-*.benchrepo
partial-sets:
missing-last-10:
remove: last(all(), 10)
same: null
reference-repo:
enabled: true
format-info:
compression: zlib
compression-level: default
dotencode: true
fncache: true
generaldelta: true
plain-cl-delta: true
sparserevlog: false
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
repo-hash: 8e2c7069
repo-prefix: my-reference-8e2c7069
source: some-dir/my-source-repo
roles:
pull:
noop:
same:
source: reference
target: same