Andriy Gapon <> writes:

> This looks like bug in FreeBSD shell indeed.

Yes: the testsuite would have caught it otherwise.

> If a script is sourced within a function scope, then 'return' in the script
> causes the function to return.  But it should cause the sourced script to 
> return.

OK, so this is FreeBSD's fault. But that should not prevent us from
fixing Git to make it work with FreeBSD.

Does the patch below fix the testsuite for you?

--- a/
+++ b/
@@ -167,13 +167,22 @@ You can run "git stash pop" or "git stash drop" at any 
        rm -rf "$state_dir"
-run_specific_rebase () {
+run_specific_rebase_internal () {
        if [ "$interactive_rebase" = implied ]; then
                export GIT_EDITOR
+       # 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
        if test $ret -eq 0

Matthieu Moy
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to
More majordomo info at

Reply via email to