clone: bsd shell portability fix
When using /bin/sh from FreeBSD 6.1, the value of $? is lost when calling a function inside the 'trap' action. This resulted in clone erroneously indicating success when it should have reported failure. As a workaround, we save the value of $? before calling any functions. Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>maint
parent
30684dfaf8
commit
6d9878cc60
|
@ -240,7 +240,6 @@ die "working tree '$GIT_WORK_TREE' already exists."
|
||||||
D=
|
D=
|
||||||
W=
|
W=
|
||||||
cleanup() {
|
cleanup() {
|
||||||
err=$?
|
|
||||||
test -z "$D" && rm -rf "$dir"
|
test -z "$D" && rm -rf "$dir"
|
||||||
test -z "$W" && test -n "$GIT_WORK_TREE" && rm -rf "$GIT_WORK_TREE"
|
test -z "$W" && test -n "$GIT_WORK_TREE" && rm -rf "$GIT_WORK_TREE"
|
||||||
cd ..
|
cd ..
|
||||||
|
@ -248,7 +247,7 @@ cleanup() {
|
||||||
test -n "$W" && rm -rf "$W"
|
test -n "$W" && rm -rf "$W"
|
||||||
exit $err
|
exit $err
|
||||||
}
|
}
|
||||||
trap cleanup 0
|
trap 'err=$?; cleanup' 0
|
||||||
mkdir -p "$dir" && D=$(cd "$dir" && pwd) || usage
|
mkdir -p "$dir" && D=$(cd "$dir" && pwd) || usage
|
||||||
test -n "$GIT_WORK_TREE" && mkdir -p "$GIT_WORK_TREE" &&
|
test -n "$GIT_WORK_TREE" && mkdir -p "$GIT_WORK_TREE" &&
|
||||||
W=$(cd "$GIT_WORK_TREE" && pwd) && GIT_WORK_TREE="$W" && export GIT_WORK_TREE
|
W=$(cd "$GIT_WORK_TREE" && pwd) && GIT_WORK_TREE="$W" && export GIT_WORK_TREE
|
||||||
|
|
Loading…
Reference in New Issue