Merge branch 'km/avoid-non-function-return-in-rebase' into maint
"git rebase" used a POSIX shell construct FreeBSD /bin/sh does not work well with. * km/avoid-non-function-return-in-rebase: Revert "rebase: fix run_specific_rebase's use of "return" on FreeBSD" rebase: avoid non-function use of "return" on FreeBSD
This commit is contained in:
commit
e79fcfcd3f
@ -4,6 +4,17 @@
|
||||
# Copyright (c) 2010 Junio C Hamano.
|
||||
#
|
||||
|
||||
# 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, FreeBSD /bin/sh misbehaves on such a construct and
|
||||
# continues 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.
|
||||
git_rebase__am () {
|
||||
|
||||
case "$action" in
|
||||
continue)
|
||||
git am --resolved --resolvemsg="$resolvemsg" &&
|
||||
@ -73,3 +84,7 @@ then
|
||||
fi
|
||||
|
||||
move_to_original_branch
|
||||
|
||||
}
|
||||
# ... and then we call the whole thing.
|
||||
git_rebase__am
|
||||
|
@ -810,6 +810,17 @@ add_exec_commands () {
|
||||
mv "$1.new" "$1"
|
||||
}
|
||||
|
||||
# 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, FreeBSD /bin/sh misbehaves on such a construct and
|
||||
# continues 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.
|
||||
git_rebase__interactive () {
|
||||
|
||||
case "$action" in
|
||||
continue)
|
||||
# do we have anything to commit?
|
||||
@ -1042,3 +1053,7 @@ GIT_REFLOG_ACTION="$GIT_REFLOG_ACTION: checkout $onto_name"
|
||||
output git checkout $onto || die_abort "could not detach HEAD"
|
||||
git update-ref ORIG_HEAD $orig_head
|
||||
do_rest
|
||||
|
||||
}
|
||||
# ... and then we call the whole thing.
|
||||
git_rebase__interactive
|
||||
|
@ -101,6 +101,17 @@ finish_rb_merge () {
|
||||
say All done.
|
||||
}
|
||||
|
||||
# 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, FreeBSD /bin/sh misbehaves on such a construct and
|
||||
# continues 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.
|
||||
git_rebase__merge () {
|
||||
|
||||
case "$action" in
|
||||
continue)
|
||||
read_state
|
||||
@ -151,3 +162,7 @@ do
|
||||
done
|
||||
|
||||
finish_rb_merge
|
||||
|
||||
}
|
||||
# ... and then we call the whole thing.
|
||||
git_rebase__merge
|
||||
|
@ -169,22 +169,13 @@ You can run "git stash pop" or "git stash drop" at any time.
|
||||
rm -rf "$state_dir"
|
||||
}
|
||||
|
||||
run_specific_rebase_internal () {
|
||||
run_specific_rebase () {
|
||||
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
|
||||
|
Loading…
Reference in New Issue
Block a user