doc-diff: let render_tree()
take an explicit directory name
In `render_tree()`, `$1` is documented to be the commit-ish/oid and we use it as that with `git checkout`, but we mostly use it to form the name of various directories. To separate these concerns, and because we are about to construct the directory names a bit differently, take two distinct arguments instead. Signed-off-by: Martin Ågren <martin.agren@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
9a71722b4d
commit
bc71dc3fa1
@ -79,6 +79,9 @@ then
|
|||||||
ln -s "$dots/config.mak" "$tmp/worktree/config.mak"
|
ln -s "$dots/config.mak" "$tmp/worktree/config.mak"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
from_dir=$from_oid &&
|
||||||
|
to_dir=$to_oid &&
|
||||||
|
|
||||||
# generate_render_makefile <srcdir> <dstdir>
|
# generate_render_makefile <srcdir> <dstdir>
|
||||||
generate_render_makefile () {
|
generate_render_makefile () {
|
||||||
find "$1" -type f |
|
find "$1" -type f |
|
||||||
@ -94,7 +97,7 @@ generate_render_makefile () {
|
|||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
# render_tree <committish_oid>
|
# render_tree <committish_oid> <directory_name>
|
||||||
render_tree () {
|
render_tree () {
|
||||||
# Skip install-man entirely if we already have an installed directory.
|
# Skip install-man entirely if we already have an installed directory.
|
||||||
# We can't rely on make here, since "install-man" unconditionally
|
# We can't rely on make here, since "install-man" unconditionally
|
||||||
@ -102,28 +105,31 @@ render_tree () {
|
|||||||
# we then can't rely on during the render step). We use "mv" to make
|
# we then can't rely on during the render step). We use "mv" to make
|
||||||
# sure we don't get confused by a previous run that failed partway
|
# sure we don't get confused by a previous run that failed partway
|
||||||
# through.
|
# through.
|
||||||
if ! test -d "$tmp/installed/$1"
|
oid=$1 &&
|
||||||
|
dname=$2 &&
|
||||||
|
if ! test -d "$tmp/installed/$dname"
|
||||||
then
|
then
|
||||||
git -C "$tmp/worktree" checkout --detach "$1" &&
|
git -C "$tmp/worktree" checkout --detach "$oid" &&
|
||||||
make -j$parallel -C "$tmp/worktree" \
|
make -j$parallel -C "$tmp/worktree" \
|
||||||
GIT_VERSION=omitted \
|
GIT_VERSION=omitted \
|
||||||
SOURCE_DATE_EPOCH=0 \
|
SOURCE_DATE_EPOCH=0 \
|
||||||
DESTDIR="$tmp/installed/$1+" \
|
DESTDIR="$tmp/installed/$dname+" \
|
||||||
install-man &&
|
install-man &&
|
||||||
mv "$tmp/installed/$1+" "$tmp/installed/$1"
|
mv "$tmp/installed/$dname+" "$tmp/installed/$dname"
|
||||||
fi &&
|
fi &&
|
||||||
|
|
||||||
# As with "installed" above, we skip the render if it's already been
|
# As with "installed" above, we skip the render if it's already been
|
||||||
# done. So using make here is primarily just about running in
|
# done. So using make here is primarily just about running in
|
||||||
# parallel.
|
# parallel.
|
||||||
if ! test -d "$tmp/rendered/$1"
|
if ! test -d "$tmp/rendered/$dname"
|
||||||
then
|
then
|
||||||
generate_render_makefile "$tmp/installed/$1" "$tmp/rendered/$1+" |
|
generate_render_makefile "$tmp/installed/$dname" \
|
||||||
|
"$tmp/rendered/$dname+" |
|
||||||
make -j$parallel -f - &&
|
make -j$parallel -f - &&
|
||||||
mv "$tmp/rendered/$1+" "$tmp/rendered/$1"
|
mv "$tmp/rendered/$dname+" "$tmp/rendered/$dname"
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
render_tree $from_oid &&
|
render_tree $from_oid $from_dir &&
|
||||||
render_tree $to_oid &&
|
render_tree $to_oid $to_dir &&
|
||||||
git -C $tmp/rendered diff --no-index "$@" $from_oid $to_oid
|
git -C $tmp/rendered diff --no-index "$@" $from_dir $to_dir
|
||||||
|
Loading…
x
Reference in New Issue
Block a user