From: "Johannes Schindelin via GitGitGadget" <gitgitgadget@gmail.com> To: git@vger.kernel.org Cc: Johannes Schindelin <johannes.schindelin@gmx.de> Subject: [PATCH v4 00/10] built-in add -p: add support for the same config settings as the Perl version Date: Tue, 14 Jan 2020 18:43:43 +0000 [thread overview] Message-ID: <pull.175.v4.git.1579027433.gitgitgadget@gmail.com> (raw) In-Reply-To: <pull.175.v3.git.1578904171.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 v3: * Reverted that heavy-handed SIGPIPE handling. * Instead, changed the diffFilter test case to process the standard input instead of ignoring it. (The range diff between v2 and v4 actually only shows the new patch 1/10 "t3701: adjust difffilter test".) Changes since v2: * Fixed the SIGPIPE issue pointed out by Gábor Szeder. 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 (10): t3701: adjust difffilter test 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 + t/t3701-add-interactive.sh | 2 +- 7 files changed, 326 insertions(+), 9 deletions(-) base-commit: c480eeb574e649a19f27dc09a994e45f9b2c2622 Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-175%2Fdscho%2Fadd-p-in-c-config-settings-v4 Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-175/dscho/add-p-in-c-config-settings-v4 Pull-Request: https://github.com/gitgitgadget/git/pull/175 Range-diff vs v3: 1: 5e258a8d2b < -: ---------- built-in add -i/-p: treat SIGPIPE as EOF -: ---------- > 1: e12df77e8a t3701: adjust difffilter test 2: 2a5951ecfe ! 2: 413a87bd79 built-in add -p: support interactive.diffFilter @@ -35,9 +35,9 @@ strbuf_release(&header); prefix_item_list_clear(&commands); + clear_add_i_state(&s); - sigchain_pop(SIGPIPE); return res; + } diff --git a/add-interactive.h b/add-interactive.h --- a/add-interactive.h @@ -123,14 +123,13 @@ strbuf_release(&s.plain); strbuf_release(&s.colored); + clear_add_i_state(&s.s); - sigchain_pop(SIGPIPE); return -1; } + @@ strbuf_release(&s.buf); strbuf_release(&s.plain); strbuf_release(&s.colored); + clear_add_i_state(&s.s); - sigchain_pop(SIGPIPE); return 0; } 3: a2bce01818 = 3: 062c624547 built-in add -p: handle diff.algorithm 4: be40a37c0c = 4: 09a8946303 terminal: make the code of disable_echo() reusable 5: 233f23791c = 5: a81304cb76 terminal: accommodate Git for Windows' default terminal 6: 74593b5115 = 6: 8d9c703f3b terminal: add a new function to read a single keystroke 7: 197fe1e14a ! 7: 8ed4487ae4 built-in add -p: respect the `interactive.singlekey` config setting @@ -48,9 +48,9 @@ --- a/add-patch.c +++ b/add-patch.c @@ + #include "pathspec.h" #include "color.h" #include "diff.h" - #include "sigchain.h" +#include "compat/terminal.h" enum prompt_mode_type { 8: 9ab381d539 = 8: cdc609f8fa built-in add -p: handle Escape sequences in interactive.singlekey mode 9: bdb6268b8b = 9: 80b0f2528d built-in add -p: handle Escape sequences more efficiently 10: c4195969a6 = 10: 7ab7ec62d0 ci: include the built-in `git add -i` in the `linux-gcc` job -- gitgitgadget
next prev parent reply other threads:[~2020-01-14 18:43 UTC|newest] Thread overview: 63+ messages / expand[flat|nested] mbox.gz Atom feed top 2019-12-21 22:41 [PATCH 0/9] " Johannes Schindelin via GitGitGadget 2019-12-21 22:41 ` [PATCH 1/9] built-in add -p: support interactive.diffFilter Johannes Schindelin via GitGitGadget 2019-12-21 22:41 ` [PATCH 2/9] built-in add -p: handle diff.algorithm Johannes Schindelin via GitGitGadget 2019-12-21 22:41 ` [PATCH 3/9] terminal: make the code of disable_echo() reusable Johannes Schindelin via GitGitGadget 2019-12-21 22:41 ` [PATCH 4/9] terminal: accommodate Git for Windows' default terminal Johannes Schindelin via GitGitGadget 2019-12-21 22:41 ` [PATCH 5/9] terminal: add a new function to read a single keystroke Johannes Schindelin via GitGitGadget 2019-12-21 22:41 ` [PATCH 6/9] built-in add -p: respect the `interactive.singlekey` config setting Johannes Schindelin via GitGitGadget 2019-12-21 22:41 ` [PATCH 7/9] built-in add -p: handle Escape sequences in interactive.singlekey mode Johannes Schindelin via GitGitGadget 2019-12-21 22:41 ` [PATCH 8/9] built-in add -p: handle Escape sequences more efficiently Johannes Schindelin via GitGitGadget 2019-12-21 22:42 ` [PATCH 9/9] ci: include the built-in `git add -i` in the `linux-gcc` job Johannes Schindelin via GitGitGadget 2019-12-21 22:53 ` SZEDER Gábor 2019-12-25 11:56 ` Johannes Schindelin 2019-12-22 0:11 ` Junio C Hamano 2019-12-25 11:57 ` Johannes Schindelin 2019-12-24 18:23 ` [PATCH 0/9] built-in add -p: add support for the same config settings as the Perl version Junio C Hamano 2019-12-24 18:39 ` Junio C Hamano 2019-12-25 8:46 ` Simon Ruderich 2019-12-25 12:09 ` Johannes Schindelin 2019-12-25 12:02 ` Johannes Schindelin 2019-12-25 11:56 ` [PATCH v2 " Johannes Schindelin via GitGitGadget 2019-12-25 11:56 ` [PATCH v2 1/9] built-in add -p: support interactive.diffFilter Johannes Schindelin via GitGitGadget 2020-01-07 22:57 ` SZEDER Gábor 2020-01-13 6:47 ` Johannes Schindelin 2019-12-25 11:56 ` [PATCH v2 2/9] built-in add -p: handle diff.algorithm Johannes Schindelin via GitGitGadget 2019-12-25 11:56 ` [PATCH v2 3/9] terminal: make the code of disable_echo() reusable Johannes Schindelin via GitGitGadget 2019-12-25 11:56 ` [PATCH v2 4/9] terminal: accommodate Git for Windows' default terminal Johannes Schindelin via GitGitGadget 2019-12-25 11:56 ` [PATCH v2 5/9] terminal: add a new function to read a single keystroke Johannes Schindelin via GitGitGadget 2019-12-25 11:56 ` [PATCH v2 6/9] built-in add -p: respect the `interactive.singlekey` config setting Johannes Schindelin via GitGitGadget 2019-12-25 11:56 ` [PATCH v2 7/9] built-in add -p: handle Escape sequences in interactive.singlekey mode Johannes Schindelin via GitGitGadget 2019-12-25 11:56 ` [PATCH v2 8/9] built-in add -p: handle Escape sequences more efficiently Johannes Schindelin via GitGitGadget 2019-12-25 11:57 ` [PATCH v2 9/9] ci: include the built-in `git add -i` in the `linux-gcc` job Johannes Schindelin via GitGitGadget 2019-12-26 20:48 ` Derrick Stolee 2020-01-01 22:10 ` Johannes Schindelin 2019-12-26 20:45 ` [PATCH v2 0/9] built-in add -p: add support for the same config settings as the Perl version Junio C Hamano 2020-01-13 8:29 ` [PATCH v3 00/10] " Johannes Schindelin via GitGitGadget 2020-01-13 8:29 ` [PATCH v3 01/10] built-in add -i/-p: treat SIGPIPE as EOF Johannes Schindelin via GitGitGadget 2020-01-13 17:04 ` SZEDER Gábor 2020-01-13 18:33 ` Jeff King 2020-01-15 18:32 ` Junio C Hamano 2020-01-15 19:03 ` Jeff King 2020-01-14 12:47 ` Johannes Schindelin 2020-01-17 14:32 ` SZEDER Gábor 2020-01-17 18:58 ` Jeff King 2020-01-13 8:29 ` [PATCH v3 02/10] built-in add -p: support interactive.diffFilter Johannes Schindelin via GitGitGadget 2020-01-13 8:29 ` [PATCH v3 03/10] built-in add -p: handle diff.algorithm Johannes Schindelin via GitGitGadget 2020-01-13 8:29 ` [PATCH v3 04/10] terminal: make the code of disable_echo() reusable Johannes Schindelin via GitGitGadget 2020-01-13 8:29 ` [PATCH v3 05/10] terminal: accommodate Git for Windows' default terminal Johannes Schindelin via GitGitGadget 2020-01-13 8:29 ` [PATCH v3 06/10] terminal: add a new function to read a single keystroke Johannes Schindelin via GitGitGadget 2020-01-13 8:29 ` [PATCH v3 07/10] built-in add -p: respect the `interactive.singlekey` config setting Johannes Schindelin via GitGitGadget 2020-01-13 8:29 ` [PATCH v3 08/10] built-in add -p: handle Escape sequences in interactive.singlekey mode Johannes Schindelin via GitGitGadget 2020-01-13 8:29 ` [PATCH v3 09/10] built-in add -p: handle Escape sequences more efficiently Johannes Schindelin via GitGitGadget 2020-01-13 8:29 ` [PATCH v3 10/10] ci: include the built-in `git add -i` in the `linux-gcc` job Johannes Schindelin via GitGitGadget 2020-01-14 18:43 ` Johannes Schindelin via GitGitGadget [this message] 2020-01-14 18:43 ` [PATCH v4 01/10] t3701: adjust difffilter test Johannes Schindelin via GitGitGadget 2020-01-14 18:43 ` [PATCH v4 02/10] built-in add -p: support interactive.diffFilter Johannes Schindelin via GitGitGadget 2020-01-14 18:43 ` [PATCH v4 03/10] built-in add -p: handle diff.algorithm Johannes Schindelin via GitGitGadget 2020-01-14 18:43 ` [PATCH v4 04/10] terminal: make the code of disable_echo() reusable Johannes Schindelin via GitGitGadget 2020-01-14 18:43 ` [PATCH v4 05/10] terminal: accommodate Git for Windows' default terminal Johannes Schindelin via GitGitGadget 2020-01-14 18:43 ` [PATCH v4 06/10] terminal: add a new function to read a single keystroke Johannes Schindelin via GitGitGadget 2020-01-14 18:43 ` [PATCH v4 07/10] built-in add -p: respect the `interactive.singlekey` config setting Johannes Schindelin via GitGitGadget 2020-01-14 18:43 ` [PATCH v4 08/10] built-in add -p: handle Escape sequences in interactive.singlekey mode Johannes Schindelin via GitGitGadget 2020-01-14 18:43 ` [PATCH v4 09/10] built-in add -p: handle Escape sequences more efficiently Johannes Schindelin via GitGitGadget 2020-01-14 18:43 ` [PATCH v4 10/10] ci: include the built-in `git add -i` in the `linux-gcc` job Johannes Schindelin via GitGitGadget
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style List information: http://vger.kernel.org/majordomo-info.html * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=pull.175.v4.git.1579027433.gitgitgadget@gmail.com \ --to=gitgitgadget@gmail.com \ --cc=git@vger.kernel.org \ --cc=johannes.schindelin@gmx.de \ --subject='Re: [PATCH v4 00/10] built-in add -p: add support for the same config settings as the Perl version' \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: link
Code repositories for project(s) associated with this inbox: https://80x24.org/mirrors/git.git This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).