generator for git.lucas.co
git clone https://git.lucas.co/gitsite.git
build.sh (1.2K)
1 #!/bin/sh
2 # Build git.lucas.co: sync repo mirrors, generate HTML, lay down dumb-http clones.
3 # Output goes to ~/.cache/gitsite/out (kept out of Dropbox on purpose).
4 set -e
5
6 BASE=$(dirname "$(readlink -f "$0")")
7 CACHE="$HOME/.cache/gitsite"
8 mkdir -p "$CACHE/mirrors"
9
10 grep -v '^#' "$BASE/repos.conf" | grep -v '^$' | while IFS='|' read -r name path desc mode; do
11 m="$CACHE/mirrors/$name.git"
12 if [ ! -d "$m" ]; then
13 echo "mirroring $name"
14 git clone --quiet --mirror "$path" "$m"
15 git -C "$m" config gc.auto 0
16 # small packfiles: Cloudflare Pages rejects files over 25MB
17 git -C "$m" repack -a -d -q --max-pack-size=20m
18 else
19 git -C "$m" fetch --quiet --prune origin
20 fi
21 done
22
23 python3 "$BASE/generate.py"
24
25 grep -v '^#' "$BASE/repos.conf" | grep -v '^$' | while IFS='|' read -r name path desc mode; do
26 if [ "$mode" = "clone" ]; then
27 m="$CACHE/mirrors/$name.git"
28 # no loose objects: Cloudflare mangles them in transit; packs survive
29 git -C "$m" repack -a -d -q --max-pack-size=20m
30 git -C "$m" update-server-info
31 cp -al "$m" "$CACHE/out/$name.git"
32 fi
33 done
34
35 echo "site built at $CACHE/out"