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 v2.10.0 $ git describe --contains 6ebdac1 v2.10.0^0 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 that.