pick and reword are atomic to-do list commands in the sense that they
open a new task which is closed after the respective command is
completed. squash and fixup are not atomic. They create a new task
which is not completed until the last squash or fixup is processed.

Lift the general unknown option blockade for the pick and reword
commands. If `do_cmd` comes across one of the options `--signoff` and
`--reset-author` while parsing a to-do entry and the scheduled
command is either `pick` or `reword`, relay the option to `do_pick`.

The `do_pick` options `--gpg-sign` and `--file` are not yet supported
because `do_cmd` cannot handle option arguments and options with
spaces at the moment. It is true that edit is one of the atomic
commands but it displays hash information when the rebase is stopped
and some options rewrite the picked commit which alters that
information. squash and fixup still do not accept user options as the
interplay of `--reset-author` and the author script are yet to be
determined.

Signed-off-by: Fabian Ruch <baf...@gmail.com>
---
 git-rebase--interactive.sh | 19 ++++++++++++++++---
 1 file changed, 16 insertions(+), 3 deletions(-)

diff --git a/git-rebase--interactive.sh b/git-rebase--interactive.sh
index bb258bb..c34a9a7 100644
--- a/git-rebase--interactive.sh
+++ b/git-rebase--interactive.sh
@@ -624,6 +624,16 @@ do_replay () {
        while test $# -gt 0
        do
                case "$1" in
+               --signoff|--reset-author)
+                       case "$command" in
+                       pick|reword)
+                               ;;
+                       *)
+                               warn "Unsupported option: $1"
+                               command=unknown
+                               ;;
+                       esac
+                       ;;
                -*)
                        warn "Unknown option: $1"
                        command=unknown
@@ -644,21 +654,24 @@ do_replay () {
                comment_for_reflog pick
 
                mark_action_done
-               do_pick $sha1 || die_with_patch $sha1 "Could not apply $sha1... 
$rest"
+               eval do_pick $opts $sha1 \
+                       || die_with_patch $sha1 "Could not apply $sha1... $rest"
                record_in_rewritten $sha1
                ;;
        reword|r)
                comment_for_reflog reword
 
                mark_action_done
-               do_pick --edit $sha1 || die_with_patch $sha1 "Could not apply 
$sha1... $rest"
+               eval do_pick --edit $opts $sha1 \
+                       || die_with_patch $sha1 "Could not apply $sha1... $rest"
                record_in_rewritten $sha1
                ;;
        edit|e)
                comment_for_reflog edit
 
                mark_action_done
-               do_pick $sha1 || die_with_patch $sha1 "Could not apply $sha1... 
$rest"
+               eval do_pick $opts $sha1 \
+                       || die_with_patch $sha1 "Could not apply $sha1... $rest"
                warn "Stopped at $sha1... $rest"
                exit_with_patch $sha1 0
                ;;
-- 
2.0.0

--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to