Rafael Ascensão <rafa.almas@xxxxxxxxx> writes: >>> The pattern follows similar rules as `--glob` except it doesn't assume a >>> trailing '/*' if glob characters are missing. >> >> Why should this be a special case that burdens users to remember one >> more rule? Wouldn't users find "--decorate-refs=refs/tags" useful >> and it woulld be shorter and nicer than having to say "refs/tags/*"? > > I wanted to allow exact patterns like: > "--decorate-refs=refs/heads/master" and for that I disabled the flag > that adds the trailing '/*' if no globs are found. As a side effect, I > lost the shortcut. > > Is adding a yet another flag that appends '/*' only if the pattern > equals "refs/{heads,remotes,tags}" a good idea? No. > Because changing the default behavior of that function has > implications on multiple commands which I think shouldn't change. But > at the same time, would be nice to have the logic that deals with > glob-ref patterns all in one place. > > What's the sane way to do this? Learn to type "--decorate-refs="refs/heads/[m]aster", and not twewak the code at all, perhaps. The users of existing "with no globbing, /* is appended" interface are already used to that way and they do not have to learn a new and inconsistent interface. After all, "I only want to see 'git log' output with 'master' decorated" (i.e. not specifying "this class of refs I can glob by using the naming convention I am using" and instead enumerating the ones you care about) does not sound like a sensible thing people often want to do, so making it follow the other codepath so that people can say "refs/tags" to get "refs/tags/*", while still allowing such a rare but specific and exact one possible, may not sound too bad to me.