On Mon, Oct 10 2022, Junio C Hamano wrote: > Junio C Hamano <gitster@xxxxxxxxx> writes: > >> Ævar Arnfjörð Bjarmason <avarab@xxxxxxxxx> writes: >> >>> Neither the "--invert-grep" option added in [1] nor the earlier >>> "--all-match" option added in [2] were intended to be used >>> stand-alone. >> >> Mostly yes, but with "to be used" -> "to take effect". >> >> "[alias] lga = log --all-match" would be equivalent to "log" >> unless the command line starts talking about "--grep", which is >> quite handy. >> >> So the real fix would be not to forbid the standalone passing of the >> option to the command, but to fix the over-eager freeing of an >> unallocated resource, introduced more recently, I would suspect. > > On the other hand, I do not think "--invert-grep" is useful in the > same way. The only usage I can think of is to omit merges by > looking for substring "^Merge", but then we already have a more > robust "--no-merges" option for that purpose. > > But both uses the same mechanism, I would say treating them the > same, i.e. silently ignoring these when --grep is not given, would > be the most sensible. The rationale for changing it this way is that the documentaion says: --all-match:: Limit the commits output to ones that match all given `--grep`, instead of ones that match at least one. --invert-grep:: Limit the commits output to ones with log message that do not match the pattern specified with `--grep=<pattern>`. Especially as we also say: --grep-reflog=<pattern>:: Limit the commits output to ones with reflog entries that match the specified pattern (regular expression) [...] I.e. pretty much the same wording, but there we'll die if the corresponding other option is omitted, as the context shows. Maybe we want to post-hoc say we'd like to support it, in which case some plasting over the issue (e.g. in the direction of Taylor's fix) would do it.