rebase -i: skip unnecessary picks using the rebase--helper

In particular on Windows, where shell scripts are even more expensive
than on MacOSX or Linux, it makes sense to move a loop that forks
Git at least once for every line in the todo list into a builtin.

Note: The original code did not try to skip unnecessary picks of root
commits but punts instead (probably --root was not considered common
enough of a use case to bother optimizing). We do the same, for now.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Johannes Schindelin
2017-07-14 16:45:25 +02:00
committed by Junio C Hamano
parent 943999493f
commit cdac2b01ff
4 changed files with 116 additions and 39 deletions

View File

@ -50,6 +50,7 @@ int sequencer_make_script(int keep_empty, FILE *out,
int transform_todo_ids(int shorten_ids);
int check_todo_list(void);
int skip_unnecessary_picks(void);
extern const char sign_off_header[];