Re: [PATCH 1/1] reset: support the --stdin option
- From
Junio C Hamano <gitster@pobox.com>
- Date
- Sep 4, 2019, 23:23 UTC
- Message-ID
- <xmqqblvzsl2i.fsf@gitster-ct.c.googlers.com>
- In-Reply-To
- <CAPig+cSw=qt6-b6xoyTGmtKRUdZnb=khy4eNV0_LSSNGu7x2tg@mail.gmail.com>
Eric Sunshine <sunshine@sunshineco.com> writes:
Show 23 quoted lines
> On Wed, Sep 4, 2019 at 5:38 PM Johannes Schindelin via GitGitGadget
> <gitgitgadget@gmail.com> wrote:
>> Just like with other Git commands, this option makes it read the paths
>> from the standard input. It comes in handy when resetting many, many
>> paths at once and wildcards are not an option (e.g. when the paths are
>> generated by a tool).
>> [...]
>> Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
>> ---
>> diff --git a/builtin/reset.c b/builtin/reset.c
>> @@ -316,6 +325,38 @@ int cmd_reset(int argc, const char **argv, const char *prefix)
>> + if (read_from_stdin) {
>> + [...]
>> + while (getline_fn(&buf, stdin) != EOF) {
>> + if (!nul_term_line && buf.buf[0] == '"') {
>> + strbuf_reset(&unquoted);
>> + if (unquote_c_style(&unquoted, buf.buf, NULL))
>> + die(_("line is badly quoted"));
>
> Perhaps include the offending line in the error message to make it
> easier for the user to understand what went wrong:
>
> die(_("line is badly quoted: %s"), buf.buf);I think the patch is solving the right problem by adding a feature that is useful to work around the command line limit, but I doubt the wisdom of limiting the input to "paths" by default.
It would be perfect if the command gets taught to take pathspec, with "git --[no-]literal-pathspec reset --stdin" as an escape hatch.