rebase: fix run_specific_rebase's use of "return" on FreeBSD
[gitweb.git] / git-rebase.sh
index f8b533d18352c86b16b4507870517b8fe57b26ee..7ab6434a4ff9e95d639bdf7914e50fb327abe8af 100755 (executable)
@@ -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