summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthieu Moy <Matthieu.Moy@imag.fr>2013-09-09 10:53:15 +0200
committerJunio C Hamano <gitster@pobox.com>2013-09-09 08:46:16 -0700
commit99855ddf4bd319cd06a0524e755ab1c1b7d39f3b (patch)
tree0b5b8b669f0edf45d57b7c166b5af7907313c980
parent15d4bf2e1e4f9853a17a86eb923b55d41da22d54 (diff)
downloadgit-mm/rebase-continue-freebsd-WB.tar.gz
rebase: fix run_specific_rebase's use of "return" on FreeBSDmm/rebase-continue-freebsd-WB
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>
-rwxr-xr-xgit-rebase.sh11
1 files changed, 10 insertions, 1 deletions
diff --git a/git-rebase.sh b/git-rebase.sh
index f8b533d183..7ab6434a4f 100755
--- a/git-rebase.sh
+++ b/git-rebase.sh
@@ -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