[PATCH v2 0/9] built-in add -p: add support for the same config settings as the Perl version
- From
Johannes Schindelin via GitGitGadget <gitgitgadget@gmail.com>
- Date
- Dec 25, 2019, 11:56 UTC
- Message-ID
- <pull.175.v2.git.1577275020.gitgitgadget@gmail.com>
- In-Reply-To
- <pull.175.git.1576968120.gitgitgadget@gmail.com>
This is the final leg of the journey to a fully built-in git add: the git add -i and git add -p modes were re-implemented in C, but they lacked support for a couple of config settings.
The one that sticks out most is the interactive.singleKey setting: it was particularly hard to get to work, especially on Windows.
It also seems to be the setting that is incomplete already in the Perl version of the interactive add command: while the name of the config setting suggests that it applies to all of the interactive add, including the main loop of git add --interactive and to the file selections in that command, it does not. Only the git add --patch mode respects that setting.
As it is outside the purpose of the conversion of git-add--interactive.perl to C, we will leave that loose end for some future date.
Changes since v1:
* Fixed the commit message where a copy/paste fail made it talk about another GIT_TEST_* variable than the GIT_TEST_ADD_I_USE_BUILTIN one.
Johannes Schindelin (9): built-in add -p: support interactive.diffFilter built-in add -p: handle diff.algorithm terminal: make the code of disable_echo() reusable terminal: accommodate Git for Windows' default terminal terminal: add a new function to read a single keystroke built-in add -p: respect the `interactive.singlekey` config setting built-in add -p: handle Escape sequences in interactive.singlekey mode built-in add -p: handle Escape sequences more efficiently ci: include the built-in `git add -i` in the `linux-gcc` job
add-interactive.c | 19 +++ add-interactive.h | 4 + add-patch.c | 57 ++++++++- ci/run-build-and-tests.sh | 1 + compat/terminal.c | 249 +++++++++++++++++++++++++++++++++++++- compat/terminal.h | 3 + 6 files changed, 325 insertions(+), 8 deletions(-)
base-commit: c480eeb574e649a19f27dc09a994e45f9b2c2622 Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-175%2Fdscho%2Fadd-p-in-c-config-settings-v2 Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-175/dscho/add-p-in-c-config-settings-v2 Pull-Request: https://github.com/gitgitgadget/git/pull/175
Range-diff vs v1:
1: a7355776d6 = 1: f45ff08bd0 built-in add -p: support interactive.diffFilter
2: 74958419f6 ! 2: e9c4a13cbf built-in add -p: handle diff.algorithm
@@ -62,7 +62,7 @@
@@
int res;
- argv_array_pushv(&args, s->mode->diff);
+ argv_array_pushv(&args, s->mode->diff_cmd);
+ if (diff_algorithm)
+ argv_array_pushf(&args, "--diff-algorithm=%s", diff_algorithm);
if (s->revision) {
3: 7631c1ea8c = 3: e643554dba terminal: make the code of disable_echo() reusable
4: a77fa914da = 4: bd2306c5d5 terminal: accommodate Git for Windows' default terminal
5: 3996d7997a = 5: 190fb4f5e9 terminal: add a new function to read a single keystroke
6: 6d6794089d ! 6: 167dfa37dd built-in add -p: respect the `interactive.singlekey` config setting
@@ -54,7 +54,7 @@
+#include "compat/terminal.h"
enum prompt_mode_type {
- PROMPT_MODE_CHANGE = 0, PROMPT_DELETION, PROMPT_HUNK
+ PROMPT_MODE_CHANGE = 0, PROMPT_DELETION, PROMPT_HUNK,
@@
return 0;
}
7: fd5a129776 = 7: 32067bebe8 built-in add -p: handle Escape sequences in interactive.singlekey mode
8: af9b598738 = 8: 703719ffce built-in add -p: handle Escape sequences more efficiently
9: 9719604a1f ! 9: 23a3a47b01 ci: include the built-in `git add -i` in the `linux-gcc` job
@@ -6,8 +6,8 @@
a whole slew of `GIT_TEST_*` variables set.
Now that the built-in version of `git add --interactive` is
- feature-complete, let's also throw `GIT_TEST_MULTI_PACK_INDEX` into that
- fray.
+ feature-complete, let's also throw `GIT_TEST_ADD_I_USE_BUILTIN` into
+ that fray.
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
-- gitgitgadget