sequencer: reschedule pick if index can't be locked
If the index cannot be locked in do_recursive_merge(), issue an error message and go on to the error recovery codepath, instead of dying. When the commit cannot be picked, it needs to be rescheduled when performing an interactive rebase, but just dying there won't allow that to happen, and when the user runs 'git rebase --continue' rather than 'git rebase --abort', the commit gets silently dropped. Signed-off-by: Phillip Wood <phillip.wood@dunelm.org.uk>
Phillip Wood committed
Nov 15, 2017 at 10:41 UTC
bd58886775de24ce3a330775a35c3c2e868967ee
1 file changed
+2
-1
sequencer.c
+2
-1
@@ -438,7 +438,8 @@ static int do_recursive_merge(struct commit *base, struct commit *next,
438
char **xopt;
439
static struct lock_file index_lock;
440
441
- hold_locked_index(&index_lock, LOCK_DIE_ON_ERROR);
441
+ if (hold_locked_index(&index_lock, LOCK_REPORT_ON_ERROR) < 0)
442
+ return -1;
443
444
read_cache();
445