I have these on my TODO list to look at at some point, but who knows
when, meanwhile I thought I'd send them to the list if anyone's
interested or wants to comment on them.
= Inconsistent regexp usage:
If you supply --perl-regexp to git-log it only applies to --grep. The
documentation says "Consider the limiting patterns to be
Perl-compatible regular expressions". Which might lead you to think
that e.g. -G uses it too. It doesn't, only grep.c does PCRE, but -G is
handled by diffcore-pickaxe.c.
Looking at "git grep -l regexec -- '*.c'" this whole thing is a mess.
Ideally you should be able to say you want to use PCRE for everything,
except maybe things that end up in your .gitconfig or e.g. the diff
driver. But we could really use a more generic regexp interface.
In general Git's regexp use is a huge mess, e.g. there's
--regexp-ignore-case but no way to supply various other regexp options
like REG_NEWLINE or PCRE options consistently.
= "git describe" really needs some overhaul
$ git describe 6ebdac1
$ git describe --contains 6ebdac1
As far as I can tell for the former there's no options that'll give me
v2.10.0-g6ebdac1, or v2.10.0-g6ebdac1 for the latter.
The reason I want that is that I like using "git describe" to give me
approximately when a commit happened in a repo, but the tags may get
deleted. In that case the *g<commit> syntax makes sure we can still
look up the commit, but omitting the commit if it exactly corresponds
to a tag, or the entire otherwise useful --contains option breaks