272
|
1
|
#!/usr/bin/env bash |
|
2
|
# bundle a tar.zst archive of Mercurial repositories. |
|
3
|
# must be absolute |
|
4
|
BUNDLE="${1:-comp}" |
|
5
|
WD=$(realpath .stash) |
|
6
|
OUT=$WD |
|
7
|
SRC_PATH=$HOME/src/$BUNDLE |
|
8
|
|
|
9
|
echo "Bundling $BUNDLE_NAME in $OUT..." |
|
10
|
|
|
11
|
rm -rf $OUT/* |
|
12
|
mkdir -pv $OUT |
|
13
|
mkdir -pv $WD/vc/hg/{zst,stream} |
|
14
|
|
|
15
|
cd $SRC_PATH |
|
16
|
# Find all mercurial repositories, create bundles and dump them to $OUT dir. |
|
17
|
for i in $(find . -name ".hg" | cut -c 3-); do |
|
18
|
echo "" |
|
19
|
echo "found hg repo: $i" |
|
20
|
cd $i/.. |
|
21
|
echo "making zstd-v2 bundle..." |
|
22
|
hg bundle -a -t zstd-v2 $WD/vc/hg/zst/$(basename $(hg root)).hg.zst |
|
23
|
echo "making none-v2 bundle..." |
|
24
|
hg bundle -a -t none-v2 $WD/vc/hg/$(basename $(hg root)).hg |
|
25
|
echo "making stream bundle..." |
|
26
|
hg debugcreatestreamclonebundle $WD/vc/hg/stream/$(basename $(hg root)).hg.stream |
|
27
|
echo "... Done." |
|
28
|
cd $SRC_PATH |
|
29
|
done |
|
30
|
|
|
31
|
# archive all *.hg bundles, final compression with zst |
|
32
|
cd $WD/vc && tar -I 'zstd' -cf $OUT/$BUNDLE.tar.zst --exclude hg/hg.hg hg/*.hg |
|
33
|
# tar -cf $OUT/$BUNDLE.tar.stream vc/stream/*.hg.stream |
|
34
|
# tar -cf $OUT/$BUNDLE.tar vc/*.hg |
|
35
|
echo "Done." |