Re: [PATCH 5/6] checkout-index: disallow "--no-stage" option
- From
Junio C Hamano <gitster@pobox.com>
- Date
- Feb 1, 2016, 02:18 UTC
- Message-ID
- <xmqqvb69w4u8.fsf@gitster.mtv.corp.google.com>
- In-Reply-To
- <20160131113029.GE5116@sigill.intra.peff.net>
Jeff King <peff@peff.net> writes:
Show 15 quoted lines
> We do not really expect people to use "--no-stage", but if > they do, git currently segfaults. We could instead have it > undo the effects of a previous "--stage", but this gets > tricky around the "to_tempfile" flag. We cannot simply reset > it to 0, because we don't know if it was set by a previous > "--stage=all" or an explicit "--temp" option. > > We could solve this by setting a flag and resolving > to_tempfile later, but it's not worth the effort. Nobody > actually wants to use "--no-stage"; we are just trying to > fix a potential segfault here. > > While we're in the area adding a translated string, let's > mark the other possible error message in this function as > translatable.
Thanks. That's worth fixing and I agree with the decision that it is the best way to go to not support '--no-stage'.
Show 16 quoted lines
>
> Signed-off-by: Jeff King <peff@peff.net>
> ---
> builtin/checkout-index.c | 4 +++-
> 1 file changed, 3 insertions(+), 1 deletion(-)
>
> diff --git a/builtin/checkout-index.c b/builtin/checkout-index.c
> index f8179a7..7a9b561 100644
> --- a/builtin/checkout-index.c
> +++ b/builtin/checkout-index.c
> @@ -133,6 +133,8 @@ static struct lock_file lock_file;
> static int option_parse_stage(const struct option *opt,
> const char *arg, int unset)
> {
> + if (unset)
> + return error(_("--stage cannot be negated"));Hmm, it is surprising that there is no parse-options flag that says "this cannot be negated".
Show 12 quoted lines
> if (!strcmp(arg, "all")) {
> to_tempfile = 1;
> checkout_stage = CHECKOUT_ALL;
> @@ -141,7 +143,7 @@ static int option_parse_stage(const struct option *opt,
> if ('1' <= ch && ch <= '3')
> checkout_stage = arg[0] - '0';
> else
> - die("stage should be between 1 and 3 or all");
> + die(_("stage should be between 1 and 3 or all"));
> }
> return 0;
> }