187 lines
4.5 KiB
Bash
Executable File
187 lines
4.5 KiB
Bash
Executable File
#!/bin/sh
|
|
#
|
|
# Build two documentation trees and diff the resulting formatted output.
|
|
# Compared to a source diff, this can reveal mistakes in the formatting.
|
|
# For example:
|
|
#
|
|
# ./doc-diff origin/master HEAD
|
|
#
|
|
# would show the differences introduced by a branch based on master.
|
|
|
|
OPTIONS_SPEC="\
|
|
doc-diff [options] <from> <to> [-- <diff-options>]
|
|
doc-diff (-c|--clean)
|
|
--
|
|
j=n parallel argument to pass to make
|
|
f force rebuild; do not rely on cached results
|
|
c,clean cleanup temporary working files
|
|
from-asciidoc use asciidoc with the 'from'-commit
|
|
from-asciidoctor use asciidoctor with the 'from'-commit
|
|
asciidoc use asciidoc with both commits
|
|
to-asciidoc use asciidoc with the 'to'-commit
|
|
to-asciidoctor use asciidoctor with the 'to'-commit
|
|
asciidoctor use asciidoctor with both commits
|
|
cut-footer cut away footer
|
|
"
|
|
SUBDIRECTORY_OK=1
|
|
. "$(git --exec-path)/git-sh-setup"
|
|
|
|
parallel=
|
|
force=
|
|
clean=
|
|
from_program=
|
|
to_program=
|
|
cut_footer=
|
|
while test $# -gt 0
|
|
do
|
|
case "$1" in
|
|
-j)
|
|
parallel=$2; shift ;;
|
|
-c|--clean)
|
|
clean=t ;;
|
|
-f)
|
|
force=t ;;
|
|
--from-asciidoctor)
|
|
from_program=-asciidoctor ;;
|
|
--to-asciidoctor)
|
|
to_program=-asciidoctor ;;
|
|
--asciidoctor)
|
|
from_program=-asciidoctor
|
|
to_program=-asciidoctor ;;
|
|
--from-asciidoc)
|
|
from_program=-asciidoc ;;
|
|
--to-asciidoc)
|
|
to_program=-asciidoc ;;
|
|
--asciidoc)
|
|
from_program=-asciidoc
|
|
to_program=-asciidoc ;;
|
|
--cut-footer)
|
|
cut_footer=-cut-footer ;;
|
|
--)
|
|
shift; break ;;
|
|
*)
|
|
usage ;;
|
|
esac
|
|
shift
|
|
done
|
|
|
|
tmp="$(git rev-parse --show-toplevel)/Documentation/tmp-doc-diff" || exit 1
|
|
|
|
if test -n "$clean"
|
|
then
|
|
test $# -eq 0 || usage
|
|
git worktree remove --force "$tmp/worktree" 2>/dev/null
|
|
rm -rf "$tmp"
|
|
exit 0
|
|
fi
|
|
|
|
if test -z "$parallel"
|
|
then
|
|
parallel=$(getconf _NPROCESSORS_ONLN 2>/dev/null)
|
|
if test $? != 0 || test -z "$parallel"
|
|
then
|
|
parallel=1
|
|
fi
|
|
fi
|
|
|
|
test $# -gt 1 || usage
|
|
from=$1; shift
|
|
to=$1; shift
|
|
|
|
from_oid=$(git rev-parse --verify "$from") || exit 1
|
|
to_oid=$(git rev-parse --verify "$to") || exit 1
|
|
|
|
if test -n "$force"
|
|
then
|
|
rm -rf "$tmp"
|
|
fi
|
|
|
|
# We'll do both builds in a single worktree, which lets "make" reuse
|
|
# results that don't differ between the two trees.
|
|
if ! test -d "$tmp/worktree"
|
|
then
|
|
git worktree add -f --detach "$tmp/worktree" "$from" &&
|
|
dots=$(echo "$tmp/worktree" | sed 's#[^/]*#..#g') &&
|
|
ln -s "$dots/config.mak" " |