Re: [PATCH] revision: add --except option
- From
Felipe Contreras <felipe.contreras@gmail.com>
- Date
- Sep 2, 2013, 06:48 UTC
- Message-ID
- <CAMP44s3eUmA9pVfZFbXHNvDiYwp9jttSTb6DBr8JrgTfhfD+_Q@mail.gmail.com>
- In-Reply-To
- <52242F61.3090404@viscovery.net>
On Mon, Sep 2, 2013 at 1:25 AM, Johannes Sixt <j.sixt@viscovery.net> wrote:
Show 52 quoted lines
> Am 8/31/2013 21:27, schrieb Felipe Contreras: >> On Fri, Aug 30, 2013 at 2:56 AM, Johannes Sixt <j.sixt@viscovery.net> wrote: >>> Am 8/30/2013 8:32, schrieb Junio C Hamano: >>>> If you have a history where >>>> >>>> - branches "master" and "maint" point at commit A; >>>> - branch "next" points at commit B that is a descendant of A; and >>>> - there are tags X and Y pointing at commits that are ahead of B >>>> or behind A >>>> >>>> i.e. >>>> >>>> ----X----A----B----Y >>>> >>>> what are the desired semantics for these? >>> >>> I think the simplest were that --except trumps everything and means >>> "whatever else I say, do as if I did not mention the following". >> >> Actually, my patch is almost there, I attach the necessary changed >> below to make everything work. I've added debug prints to show what >> it's actually doing: >> >>>> (1) --branches --except maint >>> >>> => master next >> >> => master next >> >>>> (2) --all --not --branches --except maint >>> >>> => X Y --not master next >> >> => ^master ^next X Y HEAD >> >>>> (3) ^master next --except maint >>> >>> => ^master next >> >> => ^master next >> >>> (4) Y next --except master next --not --branches >>> >>> this => Y --not maint >>> or this => Y --not maint master next >> >> => Y >> >> Remember that maint (or rather ^maint) is after --except. > > Sure, but why is it not in the result? maint is not even mentioned under > --except. Confused...
It is mentioned under --except, by --branches.
> Ah, are you treating the union of master, next, and --branches as --except > and ignore --not?
These are the same:
Y next --except master next --not --branches Y next --except master next --not master next maint
If you add more positive branches:
They get removed anyway by --except:
Y next master maint --except master next --not master next maint Y master maint --except master --not master maint Y maint --except --not maint Y
-- Felipe Contreras