3 # Ensures that the working tree is clean, and Documentation/ is up to
4 # date, and then commits Documentation/*.1 to the man branch, and
5 # Documentation/*.html to the html branch.
11 # Must be full ref name, i.e. refs/heads/man, etc.
15 git diff-index --quiet HEAD -- # no uncommitted changes
16 git rev-parse --verify "$man_ref"
17 git rev-parse --verify "$html_ref"
18 echo "$man_ref" | grep -qE '^refs/heads'
19 echo "$html_ref" | grep -qE '^refs/heads'
24 tmpdir="$(mktemp -d "t/tmp/update-doc-branches-XXXXXX")"
25 trap "$(printf 'rm -rf %q' "$tmpdir")" EXIT
26 tmpidx="$tmpdir/git-index.tmp"
28 for fmt in man html; do
30 for f in $(git ls-files 'Documentation/*.md'); do
31 base="$(basename "$f" .md)"
32 if test "$fmt" = man; then
34 GIT_INDEX_FILE="$tmpidx" git add -f "Documentation/$base.1"
37 GIT_INDEX_FILE="$tmpidx" git add -f "Documentation/$base.html"
40 msg="Update $fmt pages for $(git describe --always)"
41 tree=$(GIT_INDEX_FILE="$tmpidx" git write-tree --prefix=Documentation)
42 commit=$(echo "$msg" | git commit-tree "$tree" -p refs/heads/"$fmt")
43 git update-ref "$ref" "$commit"