Re: [PATCH] [GSOC] ref-filter: solve bugs caused by enumeration
- From
ZheNing Hu <adlternative@gmail.com>
- Date
- May 7, 2021, 05:09 UTC
- Message-ID
- <CAOLTT8RhVZQJX8z1gY5UM1jv0imZ4K9UnD14MgJFfvqBBiAZQg@mail.gmail.com>
- In-Reply-To
- <xmqq5yzvw3kk.fsf@gitster.g>
Show 10 quoted lines
> If that is truly the concern (I do not know without measuring), > perhaps we should add a member next to the union to say which one of > the union members is valid, so that you can say > > if (atom->atom_type == ATOM_TYPE_REMOTE_REF && > atom->u.remote_ref.push) > > (introduce an enum and define ATOM_TYPE_* after the member in the > union). >
Yes, I think so. Since the content of this part needs to be modified for the parsing of all atoms, I will put it in a separate topic to complete.
> That would help futureproofing the code even further, as a new > synonym of "push" introduced laster [*] would not invalidate the check you are > adding there. >
Yes, this enhances its generalization ability.
Show 10 quoted lines
> > [Footnote] > > * remote_ref_atom_parser() in the future may begin like so: > > - if (!strcmp(atom->name, "push") || starts_with(atom->name, "push:")) > + if (!strcmp(atom->name, "push") || starts_with(atom->name, "push:") || > + !strcmp(atom->name, "a-synonym-for-push")) > atom->u.remote_ref.push = 1; >
-- ZheNing Hu