Skip to content
Snippets Groups Projects
Commit 5a52af2b authored by Pierre-Yves David's avatar Pierre-Yves David :octopus:
Browse files

repo-script: add a reference script to build reference tarball

This might not be the best script ever, but it is a common reference.
parent dd1acf78
No related branches found
No related tags found
No related merge requests found
......@@ -6,3 +6,5 @@
env
results
html
**/.testtimes
tests/*.err
#!/bin/bash
set -euo pipefail
# This make a standard clone, register some data about it, make sure the
# cache are warm and build a tarball.
# Possible extensions:
# * allow optimization (maybe from another script)
# * records more format data (requirement and config)
if [ $# -lt 2 ]; then
echo 'usage: make-reference SOURCE ID'
exit 64
fi
repo_source="$1"
repo_id="$2"
repo_main="${repo_id}"-reference
repo_details="${repo_id}".yaml
repo_tarball="${repo_id}"-reference.tar
### initial clone
if [ -d "${repo_main}"/.hg/ ]; then
echo 'target repo already exists, skipping clone'
echo '(make sure this was clone with the right version)'
else
echo 'hg cloning repository from:' "${repo_source}"
hg clone --noupdate "${repo_source}" "${repo_main}"
fi
### Generate various data
hg -R "${repo_main}" debugupdatecache
hgversion=$(hg version -T '{ver}\n')
numrevs=$(hg -R "${repo_main}" log -T '{rev}\n' | wc -l)
numrevshidden=$(hg --hidden -R "${repo_main}" log -T '{rev}\n' | wc -l)
numheads=$(hg -R "${repo_main}" heads -t -T '{rev}\n' | wc -l)
numheadshidden=$(hg --hidden -R "${repo_main}" heads -t -T '{rev}\n' | wc -l)
numbranches=$(hg -R "${repo_main}" branches -c -T '{rev}\n' | wc -l)
numbrancheshidden=$(hg --hidden -R "${repo_main}" branches -c -T '{rev}\n' | wc -l)
echo 'reference-repo:' > "${repo_details}"
echo ' id:' "${repo_id}" >> "${repo_details}"
echo ' source:' "${repo_source}" >> "${repo_details}"
echo ' hg-version:' "${hgversion}" >> "${repo_details}"
echo ' number-revisions:' >> "${repo_details}"
echo ' visible:' $numrevs >> "${repo_details}"
echo ' all:' $numrevshidden >> "${repo_details}"
echo ' number-heads:' >> "${repo_details}"
echo ' visible:' $numheads >> "${repo_details}"
echo ' all:' $numheadshidden >> "${repo_details}"
echo ' number-names-branch:' >> "${repo_details}"
echo ' visible:' $numbranches >> "${repo_details}"
echo ' all:' $numbranches >> "${repo_details}"
### final tarball
echo 'building a reference tarball'
tar cf "${repo_tarball}" "${repo_details}" "${repo_main}"
echo "result available at:" "${repo_tarball}"
====================================
Test for the `make reference` script
====================================
Setup
$ export PATH=$TESTDIR/../repo-scripts/:${PATH}
$ mkdir some-dir
$ hg init some-dir/my-source-repo
$ hg -R some-dir/my-source-repo debugbuilddag --new-file '.+5:brancha$.+11:branchb$.+30:branchc<brancha+2<branchb+2'
Wrong call
----------
$ make-reference
usage: make-reference SOURCE ID
[64]
$ make-reference some-dir/my-source-repo
usage: make-reference SOURCE ID
[64]
$ make-reference my-id
usage: make-reference SOURCE ID
[64]
Call from scratch
-----------------
$ make-reference some-dir/my-source-repo my-reference
hg cloning repository from: some-dir/my-source-repo
building a reference tarball
result available at: my-reference-reference.tar
$ ls -1
my-reference-reference
my-reference-reference.tar
my-reference.yaml
some-dir
$ cat my-reference.yaml
reference-repo:
id: my-reference
source: some-dir/my-source-repo
hg-version: ?.* (glob)
number-revisions:
visible: 53
all: 53
number-heads:
visible: 3
all: 3
number-names-branch:
visible: 1
all: 1
Call with existing data
-----------------
$ rm -rf my-reference.yaml my-reference.tar
$ make-reference some-dir/my-source-repo my-reference
target repo already exists, skipping clone
(make sure this was clone with the right version)
building a reference tarball
result available at: my-reference-reference.tar
$ ls -1
my-reference-reference
my-reference-reference.tar
my-reference.yaml
some-dir
$ cat my-reference.yaml
reference-repo:
id: my-reference
source: some-dir/my-source-repo
hg-version: ?.* (glob)
number-revisions:
visible: 53
all: 53
number-heads:
visible: 3
all: 3
number-names-branch:
visible: 1
all: 1
$ tar tf my-reference-reference.tar
my-reference.yaml
my-reference-reference/
my-reference-reference/.hg/
my-reference-reference/.hg/requires
my-reference-reference/.hg/00changelog.i
my-reference-reference/.hg/store/
my-reference-reference/.hg/store/data/
my-reference-reference/.hg/store/data/nf0.i
my-reference-reference/.hg/store/data/nf1.i
my-reference-reference/.hg/store/data/nf2.i
my-reference-reference/.hg/store/data/nf3.i
my-reference-reference/.hg/store/data/nf4.i
my-reference-reference/.hg/store/data/nf5.i
my-reference-reference/.hg/store/data/nf6.i
my-reference-reference/.hg/store/data/nf7.i
my-reference-reference/.hg/store/data/nf8.i
my-reference-reference/.hg/store/data/nf9.i
my-reference-reference/.hg/store/data/nf10.i
my-reference-reference/.hg/store/data/nf11.i
my-reference-reference/.hg/store/data/nf12.i
my-reference-reference/.hg/store/data/nf13.i
my-reference-reference/.hg/store/data/nf14.i
my-reference-reference/.hg/store/data/nf15.i
my-reference-reference/.hg/store/data/nf16.i
my-reference-reference/.hg/store/data/nf17.i
my-reference-reference/.hg/store/data/nf18.i
my-reference-reference/.hg/store/data/nf19.i
my-reference-reference/.hg/store/data/nf20.i
my-reference-reference/.hg/store/data/nf21.i
my-reference-reference/.hg/store/data/nf22.i
my-reference-reference/.hg/store/data/nf23.i
my-reference-reference/.hg/store/data/nf24.i
my-reference-reference/.hg/store/data/nf25.i
my-reference-reference/.hg/store/data/nf26.i
my-reference-reference/.hg/store/data/nf27.i
my-reference-reference/.hg/store/data/nf28.i
my-reference-reference/.hg/store/data/nf29.i
my-reference-reference/.hg/store/data/nf30.i
my-reference-reference/.hg/store/data/nf31.i
my-reference-reference/.hg/store/data/nf32.i
my-reference-reference/.hg/store/data/nf33.i
my-reference-reference/.hg/store/data/nf34.i
my-reference-reference/.hg/store/data/nf35.i
my-reference-reference/.hg/store/data/nf36.i
my-reference-reference/.hg/store/data/nf37.i
my-reference-reference/.hg/store/data/nf38.i
my-reference-reference/.hg/store/data/nf39.i
my-reference-reference/.hg/store/data/nf40.i
my-reference-reference/.hg/store/data/nf41.i
my-reference-reference/.hg/store/data/nf42.i
my-reference-reference/.hg/store/data/nf43.i
my-reference-reference/.hg/store/data/nf44.i
my-reference-reference/.hg/store/data/nf45.i
my-reference-reference/.hg/store/data/nf46.i
my-reference-reference/.hg/store/data/nf47.i
my-reference-reference/.hg/store/data/nf48.i
my-reference-reference/.hg/store/data/nf49.i
my-reference-reference/.hg/store/data/nf50.i
my-reference-reference/.hg/store/data/nf51.i
my-reference-reference/.hg/store/data/nf52.i
my-reference-reference/.hg/store/fncache
my-reference-reference/.hg/store/00manifest.i
my-reference-reference/.hg/store/00changelog.i
my-reference-reference/.hg/cache/
my-reference-reference/.hg/cache/branch2-served
my-reference-reference/.hg/cache/rbc-names-v1
my-reference-reference/.hg/cache/rbc-revs-v1
my-reference-reference/.hg/hgrc
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment