shift
 done
 
-cd_to_toplevel
-tmp=Documentation/tmp-doc-diff
+tmp="$(git rev-parse --show-toplevel)/Documentation/tmp-doc-diff" || exit 1
 
 if test -n "$clean"
 then
 # results that don't differ between the two trees.
 if ! test -d "$tmp/worktree"
 then
-       git worktree add --detach "$tmp/worktree" "$from" &&
+       git worktree add -f --detach "$tmp/worktree" "$from" &&
        dots=$(echo "$tmp/worktree" | sed 's#[^/]*#..#g') &&
        ln -s "$dots/config.mak" "$tmp/worktree/config.mak"
 fi
                make -j$parallel -C "$tmp/worktree" \
                        GIT_VERSION=omitted \
                        SOURCE_DATE_EPOCH=0 \
-                       DESTDIR="$PWD/$tmp/installed/$1+" \
+                       DESTDIR="$tmp/installed/$1+" \
                        install-man &&
                mv "$tmp/installed/$1+" "$tmp/installed/$1"
        fi &&