rebase: fix run_specific_rebase's use of "return" on FreeBSD
Since a1549e10
, git-rebase--am.sh uses the shell's "return" statement, to
mean "return from the current file inclusion", which is POSIXly correct,
but badly interpreted on FreeBSD, which returns from the current
function, hence skips the finish_rebase statement that follows the file
inclusion.
Make the use of "return" portable by using the file inclusion as the last
statement of a function.
Reported-by: Christoph Mallon <christoph.mallon@gmx.de>
Signed-off-by: Matthieu Moy <Matthieu.Moy@imag.fr>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
15d4bf2e1e
commit
99855ddf4b
@ -143,13 +143,22 @@ move_to_original_branch () {
|
||||
esac
|
||||
}
|
||||
|
||||
run_specific_rebase () {
|
||||
run_specific_rebase_internal () {
|
||||
if [ "$interactive_rebase" = implied ]; then
|
||||
GIT_EDITOR=:
|
||||
export GIT_EDITOR
|
||||
autosquash=
|
||||
fi
|
||||
# On FreeBSD, the shell's "return" returns from the current
|
||||
# function, not from the current file inclusion.
|
||||
# run_specific_rebase_internal has the file inclusion as a
|
||||
# last statement, so POSIX and FreeBSD's return will do the
|
||||
# same thing.
|
||||
. git-rebase--$type
|
||||
}
|
||||
|
||||
run_specific_rebase () {
|
||||
run_specific_rebase_internal
|
||||
ret=$?
|
||||
if test $ret -eq 0
|
||||
then
|
||||
|
Loading…
Reference in New Issue
Block a user