Re: git commit file completion recently broke
- Date: Wed, 6 Dec 2017 16:38:29 -0800
- From: Jacob Keller <jacob.keller@xxxxxxxxx>
- Subject: Re: git commit file completion recently broke
On Wed, Dec 6, 2017 at 4:24 PM, Jeff King <peff@xxxxxxxx> wrote:
> On Wed, Dec 06, 2017 at 07:22:35PM -0500, Jeff King wrote:
>> On Wed, Dec 06, 2017 at 04:01:51PM -0800, Jacob Keller wrote:
>> > I think I narrowed this down to "git diff-index --name-only --relative
>> > HEAD" producing a list of files *not* relative to the current
>> > directory.
>> Hmm, my guess would have been something funny in the setup code
>> forgetting our original prefix.
>> But nope, it looks like the culprit is f7923a5ece (diff: use
>> skip_to_optional_val(), 2017-12-04), which switched over parsing of
> Oh, actually, I guess I was half-right. It feeds &options->prefix as the
> "default", meaning that we overwrite it with the empty string. I don't
> think "--relative" works for the semantics of skip_to_optional_value,
> since it needs:
> --relative=foo: set prefix to "foo"
> --relative: leave prefix untouched
Yep, and apparently our test suite completely lacked any tests of
--relative on its own.
I've sent a patch to add some tests.
I don't know the exact best way to fix this, I guess we could just
revert it the changes to relative... but maybe we could add or modify
the semantics of skip_to_optional_val()?? What if it was changed so
that it left the value alone if no value was provided? This would
require callers to pre-set the value they want as default, but that
would solve relative's problem.
I'll look into that.