Re: [PATCH v1 2/2] log: add option to choose which refs to decorate
- From
Junio C Hamano <gitster@pobox.com>
- Date
- Nov 5, 2017, 06:17 UTC
- Message-ID
- <xmqqshdtl057.fsf@gitster.mtv.corp.google.com>
- In-Reply-To
- <xmqq1sldmqms.fsf@gitster.mtv.corp.google.com>
Junio C Hamano <gitster@pobox.com> writes:
Show 22 quoted lines
> Rafael Ascensão <rafa.almas@gmail.com> writes: > ... >> 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.
Having said all that, I can imagine another way out might be to change the behaviour of this "normalize" thing to add two patterns, the original pattern in addition to the original pattern plus "/*", when it sees a pattern without any glob. Many users who relied on the current behaviour fed "refs/tags" knowing that it will match everything under "refs/tags" i.e. "refs/tags/*", and they cannot have a ref that is exactly "refs/tags", so adding the original pattern without an extra trailing "/*" would not hurt them. And this will allow you to say "refs/heads/master" when you know you want that exact ref, and in such a repository where that original pattern without trailing "/*" would be useful, because you cannot have "refs/heads/master/one" at the same time, having an extra pattern that is the original plus "/*" would not hurt you, either.
This however needs a bit of thought to see if there are corner cases that may result in unexpected and unwanted fallout, and something I am reluctant to declare unilaterally that it is a better way to go.
Thoughts?