On Thu, Mar 22, 2018 at 11:27 AM, Junio C Hamano <gitster@xxxxxxxxx> wrote: > Wink Saville <wink@xxxxxxxxxxx> writes: > >> Instead of indirectly invoking git_rebase__interactive this invokes >> it directly after sourcing. >> >> Signed-off-by: Wink Saville <wink@xxxxxxxxxxx> >> --- >> git-rebase--interactive.sh | 11 ----------- >> git-rebase.sh | 11 +++++++++-- >> 2 files changed, 9 insertions(+), 13 deletions(-) >> >> diff --git a/git-rebase--interactive.sh b/git-rebase--interactive.sh >> index 561e2660e..213d75f43 100644 >> --- a/git-rebase--interactive.sh >> +++ b/git-rebase--interactive.sh >> @@ -740,15 +740,6 @@ get_missing_commit_check_level () { >> printf '%s' "$check_level" | tr 'A-Z' 'a-z' >> } >> >> -# The whole contents of this file is run by dot-sourcing it from >> -# inside a shell function. It used to be that "return"s we see >> -# below were not inside any function, and expected to return >> -# to the function that dot-sourced us. >> -# >> -# However, older (9.x) versions of FreeBSD /bin/sh misbehave on such a >> -# construct and continue to run the statements that follow such a "return". >> -# As a work-around, we introduce an extra layer of a function >> -# here, and immediately call it after defining it. > > We still enclose the whole thing (including the returns that are > problematic for older FreeBSD shells) in a shell function, so it's > not like we are dropping the workaround for these systems. It's > just the caller of the function moved. > > I think the removal of this large comment is justifiable, but the > structure still needs a bit of explanation, especially given that > the caller in git-rebase.sh needs to treat this scriptlet a bit > differently from others. > > If we were not in the (longer term) process of getting rid of > git-rebase.sh, it might even make sense to port the same > "dot-sourced scriptlet defines a shell function to be called, and > the caller calls it after dot-sourcing it" pattern to other rebase > backends, so that the calling side can be unified again to become > something like: > > . git-rebase--$type > git_rebase__$type > ret=$? I've gone with the above suggestion and added back some of the header.