Skip to content

Commit 2f5f469

Browse files
winksavillegitster
authored andcommitted
rebase: update invocation of rebase dot-sourced scripts
Due to historical reasons, the backend scriptlets for "git rebase" are structured a bit unusually. As originally designed, dot-sourcing them from "git rebase" was sufficient to invoke the specific backend. However, it was later discovered that some shell implementations (e.g. FreeBSD 9.x) misbehaved by continuing to execute statements following a top-level "return" rather than returning control to the next statement in "git rebase" after dot-sourcing the scriptlet. To work around this shortcoming, the whole body of git-rebase--$backend.sh was made into a shell function git_rebase__$backend, and then the very last line of the scriptlet called that function. A more normal architecture is for a dot-sourced scriptlet merely to define functions (thus acting as a function library), and for those functions to be called by the script doing the dot-sourcing. Migrate to this arrangement by moving the git_rebase__$backend call from the end of a scriptlet into "git rebase" itself. While at it, remove the large comment block from each scriptlet explaining this historic anomaly since it serves no purpose under the new normalized architecture in which a scriptlet is merely a function library. Signed-off-by: Wink Saville <[email protected]> Helped-by: Junio C Hamano <[email protected]> Helped-by: Eric Sunshine <[email protected]> Signed-off-by: Junio C Hamano <[email protected]>
1 parent 0c4030c commit 2f5f469

File tree

4 files changed

+1
-33
lines changed

4 files changed

+1
-33
lines changed

git-rebase--am.sh

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,6 @@
44
# Copyright (c) 2010 Junio C Hamano.
55
#
66

7-
# The whole contents of this file is run by dot-sourcing it from
8-
# inside a shell function. It used to be that "return"s we see
9-
# below were not inside any function, and expected to return
10-
# to the function that dot-sourced us.
11-
#
12-
# However, older (9.x) versions of FreeBSD /bin/sh misbehave on such a
13-
# construct and continue to run the statements that follow such a "return".
14-
# As a work-around, we introduce an extra layer of a function
15-
# here, and immediately call it after defining it.
167
git_rebase__am () {
178

189
case "$action" in
@@ -105,5 +96,3 @@ fi
10596
move_to_original_branch
10697

10798
}
108-
# ... and then we call the whole thing.
109-
git_rebase__am

git-rebase--interactive.sh

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -740,15 +740,6 @@ get_missing_commit_check_level () {
740740
printf '%s' "$check_level" | tr 'A-Z' 'a-z'
741741
}
742742

743-
# The whole contents of this file is run by dot-sourcing it from
744-
# inside a shell function. It used to be that "return"s we see
745-
# below were not inside any function, and expected to return
746-
# to the function that dot-sourced us.
747-
#
748-
# However, older (9.x) versions of FreeBSD /bin/sh misbehave on such a
749-
# construct and continue to run the statements that follow such a "return".
750-
# As a work-around, we introduce an extra layer of a function
751-
# here, and immediately call it after defining it.
752743
git_rebase__interactive () {
753744

754745
case "$action" in
@@ -1029,5 +1020,3 @@ fi
10291020
do_rest
10301021

10311022
}
1032-
# ... and then we call the whole thing.
1033-
git_rebase__interactive

git-rebase--merge.sh

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -104,15 +104,6 @@ finish_rb_merge () {
104104
say All done.
105105
}
106106

107-
# The whole contents of this file is run by dot-sourcing it from
108-
# inside a shell function. It used to be that "return"s we see
109-
# below were not inside any function, and expected to return
110-
# to the function that dot-sourced us.
111-
#
112-
# However, older (9.x) versions of FreeBSD /bin/sh misbehave on such a
113-
# construct and continue to run the statements that follow such a "return".
114-
# As a work-around, we introduce an extra layer of a function
115-
# here, and immediately call it after defining it.
116107
git_rebase__merge () {
117108

118109
case "$action" in
@@ -171,5 +162,3 @@ done
171162
finish_rb_merge
172163

173164
}
174-
# ... and then we call the whole thing.
175-
git_rebase__merge

git-rebase.sh

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -197,6 +197,7 @@ run_specific_rebase () {
197197
autosquash=
198198
fi
199199
. git-rebase--$type
200+
git_rebase__$type
200201
ret=$?
201202
if test $ret -eq 0
202203
then

0 commit comments

Comments
 (0)