This is the first step of turning any of these scripts into C. We can see now what variables are exchanged between git-rebase.sh and the subscript (but we don't see all in this patch, variables may have been exported earlier in git-rebase.sh) Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@xxxxxxxxx> --- Makefile | 6 +++--- git-rebase--am.sh (mode +x) | 23 ++++++++++++++--------- git-rebase--interactive.sh (mode +x) | 15 +++++++++++++++ git-rebase--merge.sh (mode +x) | 14 ++++++++++++++ git-rebase.sh | 23 ++++++++++++++++------- 5 files changed, 62 insertions(+), 19 deletions(-) mode change 100644 => 100755 git-rebase--am.sh mode change 100644 => 100755 git-rebase--interactive.sh mode change 100644 => 100755 git-rebase--merge.sh diff --git a/Makefile b/Makefile index 1ee0ed3..ea636e6 100644 --- a/Makefile +++ b/Makefile @@ -486,6 +486,9 @@ SCRIPT_SH += git-mergetool.sh SCRIPT_SH += git-quiltimport.sh SCRIPT_SH += git-rebase.sh SCRIPT_SH += git-remote-testgit.sh +SCRIPT_SH += git-rebase--am.sh +SCRIPT_SH += git-rebase--interactive.sh +SCRIPT_SH += git-rebase--merge.sh SCRIPT_SH += git-request-pull.sh SCRIPT_SH += git-stash.sh SCRIPT_SH += git-submodule.sh @@ -493,9 +496,6 @@ SCRIPT_SH += git-web--browse.sh SCRIPT_LIB += git-mergetool--lib SCRIPT_LIB += git-parse-remote -SCRIPT_LIB += git-rebase--am -SCRIPT_LIB += git-rebase--interactive -SCRIPT_LIB += git-rebase--merge SCRIPT_LIB += git-rebase--lib SCRIPT_LIB += git-sh-setup SCRIPT_LIB += git-sh-i18n diff --git a/git-rebase--am.sh b/git-rebase--am.sh old mode 100644 new mode 100755 index 9ae898b..3837f53 --- a/git-rebase--am.sh +++ b/git-rebase--am.sh @@ -4,15 +4,19 @@ # 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-sh-setup +. git-sh-i18n +. git-rebase--lib +require_work_tree_exists + +GIT_QUIET=$git_quiet +GIT_REFLOG_ACTION=$git_reflog_action +resolvemsg=" +$(gettext 'When you have resolved this problem, run "git rebase --continue". +If you prefer to skip this patch, run "git rebase --skip" instead. +To check out the original branch and stop rebasing, run "git rebase --abort".') +" + git_rebase__am () { case "$action" in @@ -99,3 +103,4 @@ move_to_original_branch } # ... and then we call the whole thing. git_rebase__am +exit_rebase $? diff --git a/git-rebase--interactive.sh b/git-rebase--interactive.sh old mode 100644 new mode 100755 index c0cfe88..1169920 --- a/git-rebase--interactive.sh +++ b/git-rebase--interactive.sh @@ -7,6 +7,20 @@ # The original idea comes from Eric W. Biederman, in # http://article.gmane.org/gmane.comp.version-control.git/22407 # + +. git-sh-setup +. git-sh-i18n +. git-rebase--lib +require_work_tree_exists + +GIT_QUIET=$git_quiet +GIT_REFLOG_ACTION=$git_reflog_action +resolvemsg=" +$(gettext 'When you have resolved this problem, run "git rebase --continue". +If you prefer to skip this patch, run "git rebase --skip" instead. +To check out the original branch and stop rebasing, run "git rebase --abort".') +" + # The file containing rebase commands, comments, and empty lines. # This file is created by "git rebase -i" then edited by the user. As # the lines are processed, they are removed from the front of this @@ -1294,3 +1308,4 @@ do_rest } # ... and then we call the whole thing. git_rebase__interactive +exit_rebase $? diff --git a/git-rebase--merge.sh b/git-rebase--merge.sh old mode 100644 new mode 100755 index 2cc2a6d..f453d15 --- a/git-rebase--merge.sh +++ b/git-rebase--merge.sh @@ -5,6 +5,19 @@ # Copyright (c) 2010 Junio C Hamano. # +. git-sh-setup +. git-sh-i18n +. git-rebase--lib +require_work_tree_exists + +GIT_QUIET=$git_quiet +GIT_REFLOG_ACTION=$git_reflog_action +resolvemsg=" +$(gettext 'When you have resolved this problem, run "git rebase --continue". +If you prefer to skip this patch, run "git rebase --skip" instead. +To check out the original branch and stop rebasing, run "git rebase --abort".') +" + prec=4 read_state () { @@ -165,3 +178,4 @@ finish_rb_merge } # ... and then we call the whole thing. git_rebase__merge +exit_rebase $? diff --git a/git-rebase.sh b/git-rebase.sh index 0c70381..67b847f 100755 --- a/git-rebase.sh +++ b/git-rebase.sh @@ -54,11 +54,6 @@ cd_to_toplevel LF=' ' ok_to_skip_pre_rebase= -resolvemsg=" -$(gettext 'When you have resolved this problem, run "git rebase --continue". -If you prefer to skip this patch, run "git rebase --skip" instead. -To check out the original branch and stop rebasing, run "git rebase --abort".') -" unset onto unset restrict_revision cmd= @@ -121,8 +116,22 @@ run_specific_rebase () { export GIT_EDITOR autosquash= fi - . git-rebase--$type - exit_rebase $? + git_quiet=$GIT_QUIET + git_reflog_action=$GIT_REFLOG_ACTION + export GIT_PAGER + # these are for write_basic_state() + export allow_rerere_autoupdate gpg_sign_opt head_name onto + export orig_head state_dir strategy strategy_opts verbose + # common variables + export action git_reflog_action git_quiet keep_empty + export rebase_root restrict_revision revisions upstream + # git-rebase--am specific + export git_am_opt + # git-rebase--interactive specific + export autosquash cmd force_rebase onto_name preserve_merges + export squash_onto switch_to + + exec git-rebase--$type } run_pre_rebase_hook () { -- 2.7.0.377.g4cd97dd -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html