{"thread":{"id":"44165","subject":"A couple of bugs / things TODO I encountered","startedAt":"2016-09-26T22:14:16Z","lastAt":"2016-09-26T22:14:16Z","messageCount":1,"participants":["Ævar Arnfjörð Bjarmason"],"isPatch":false,"patchVersion":null,"patchTotal":null},"messages":[{"id":"302645","messageId":"CACBZZX5wdnA-96e11edE7xRnAHo19RFTrZmqFQj-0ogLOJTncQ@mail.gmail.com","threadId":"44165","inReplyTo":null,"subject":"A couple of bugs / things TODO I encountered","fromName":"Ævar Arnfjörð Bjarmason","fromEmail":"avarab@gmail.com","sentAt":"2016-09-26T22:13:50Z","receivedAt":"2016-09-26T22:14:16Z","isPatch":false,"sender":{"key":"avarab@gmail.com","avatar":"https://avatars.githubusercontent.com/u/45301?v=4"},"body":"I have these on my TODO list to look at at some point, but who knows\nwhen, meanwhile I thought I'd send them to the list if anyone's\ninterested or wants to comment on them.\n\n= Inconsistent regexp usage:\n\nIf you supply --perl-regexp to git-log it only applies to --grep. The\ndocumentation says \"Consider the limiting patterns to be\nPerl-compatible regular expressions\". Which might lead you to think\nthat e.g. -G uses it too. It doesn't, only grep.c does PCRE, but -G is\nhandled by diffcore-pickaxe.c.\n\nLooking at \"git grep -l regexec -- '*.c'\" this whole thing is a mess.\nIdeally you should be able to say you want to use PCRE for everything,\nexcept maybe things that end up in your .gitconfig or e.g. the diff\ndriver. But we could really use a more generic regexp interface.\n\nIn general Git's regexp use is a huge mess, e.g. there's\n--regexp-ignore-case but no way to supply various other regexp options\nlike REG_NEWLINE or PCRE options consistently.\n\n= \"git describe\" really needs some overhaul\n\n$ git describe  6ebdac1\nv2.10.0\n$ git describe  --contains 6ebdac1\nv2.10.0^0\n\nAs far as I can tell for the former there's no options that'll give me\nv2.10.0-g6ebdac1, or v2.10.0-g6ebdac1 for the latter.\n\nThe reason I want that is that I like using \"git describe\" to give me\napproximately when a commit happened in a repo, but the tags may get\ndeleted. In that case the *g<commit> syntax makes sure we can still\nlook up the commit, but omitting the commit if it exactly corresponds\nto a tag, or the entire otherwise useful --contains option breaks\nthat.\n"}]}