This config setting is pretty useful, but it unfortunately stops all
non-interactive rebases with a bogus error message. This patch fixes that.

Reported via a commit comment on GitHub
[https://github.com/git/git/commit/969de3ff0e0#commitcomment-33257187].

Changes since v1:

 * Based on Junio's advice, the commit message was improved considerably.
 * The error message now also mentions --exec, so that users do not have to
   know that --exec implies the interactive backend.

Johannes Schindelin (1):
  rebase --am: ignore rebase.reschedulefailedexec

 builtin/rebase.c           | 10 +++++++---
 t/t3418-rebase-continue.sh |  8 ++++++++
 2 files changed, 15 insertions(+), 3 deletions(-)


base-commit: e11ff8975bedc0aae82632c3cb72578c3d7fc0b2
Published-As: 
https://github.com/gitgitgadget/git/releases/tag/pr-253%2Fdscho%2Freschedule-failed-exec-gently-v2
Fetch-It-Via: git fetch https://github.com/gitgitgadget/git 
pr-253/dscho/reschedule-failed-exec-gently-v2
Pull-Request: https://github.com/gitgitgadget/git/pull/253

Range-diff vs v1:

 1:  fab124da41 ! 1:  beaeb24bc0 Let rebase.reschedulefailedexec only affect 
interactive rebases
     @@ -1,9 +1,13 @@
      Author: Johannes Schindelin <johannes.schinde...@gmx.de>
      
     -    Let rebase.reschedulefailedexec only affect interactive rebases
     +    rebase --am: ignore rebase.reschedulefailedexec
      
     -    It does not make sense to stop non-interactive rebases when that 
config
     -    setting is set to `true`.
     +    The `exec` command is specific to the interactive backend, therefore 
it
     +    does not make sense for non-interactive rebases to heed that config
     +    setting.
     +
     +    We still want to error out if a non-interactive rebase is started with
     +    `--reschedule-failed-exec`, of course.
      
          Reported by Vas Sudanagunta via:
          https://github.com/git/git/commit/969de3ff0e0#commitcomment-33257187
     @@ -35,8 +39,10 @@
        }
       
      - if (options.reschedule_failed_exec && !is_interactive(&options))
     +-         die(_("--reschedule-failed-exec requires an interactive 
rebase"));
      + if (reschedule_failed_exec > 0 && !is_interactive(&options))
     -          die(_("--reschedule-failed-exec requires an interactive 
rebase"));
     ++         die(_("--reschedule-failed-exec requires "
     ++               "--exec or --interactive"));
      + if (reschedule_failed_exec >= 0)
      +         options.reschedule_failed_exec = reschedule_failed_exec;
       

-- 
gitgitgadget

Reply via email to