Skip to content

Commit

Permalink
rebase: fix run_specific_rebase's use of "return" on FreeBSD
Browse files Browse the repository at this point in the history
Since a1549e1, 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>
  • Loading branch information
Matthieu Moy authored and Junio C Hamano committed Sep 9, 2013
1 parent 15d4bf2 commit 99855dd
Showing 1 changed file with 10 additions and 1 deletion.
11 changes: 10 additions & 1 deletion git-rebase.sh
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down

0 comments on commit 99855dd

Please sign in to comment.