Re: [PATCH 08/15] [GSOC] ref-filter: add cat_file_mode in struct ref_format

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thu, Jul 01 2021, ZheNing Hu via GitGitGadget wrote:

> From: ZheNing Hu <adlternative@xxxxxxxxx>
>
> Add `cat_file_mode` member in struct `ref_format`, when
> `cat-file --batch` use ref-filter logic later, it can help
> us reject atoms in verify_ref_format() which cat-file cannot
> use, e.g. `%(refname)`, `%(push)`, `%(upstream)`...
>
> Mentored-by: Christian Couder <christian.couder@xxxxxxxxx>
> Mentored-by: Hariom Verma <hariom18599@xxxxxxxxx>
> Signed-off-by: ZheNing Hu <adlternative@xxxxxxxxx>
> ---
>  ref-filter.c | 11 +++++++++--
>  ref-filter.h |  1 +
>  2 files changed, 10 insertions(+), 2 deletions(-)
>
> diff --git a/ref-filter.c b/ref-filter.c
> index 731e596eaa6..45122959eef 100644
> --- a/ref-filter.c
> +++ b/ref-filter.c
> @@ -1021,8 +1021,15 @@ int verify_ref_format(struct ref_format *format)
>  		if (at < 0)
>  			die("%s", err.buf);
>  
> -		if (used_atom[at].atom_type == ATOM_REST)
> -			die("this command reject atom %%(%.*s)", (int)(ep - sp - 2), sp + 2);
> +		if ((!format->cat_file_mode && used_atom[at].atom_type == ATOM_REST) ||
> +		    (format->cat_file_mode && (used_atom[at].atom_type == ATOM_FLAG ||
> +					       used_atom[at].atom_type == ATOM_HEAD ||
> +					       used_atom[at].atom_type == ATOM_PUSH ||
> +					       used_atom[at].atom_type == ATOM_REFNAME ||
> +					       used_atom[at].atom_type == ATOM_SYMREF ||
> +					       used_atom[at].atom_type == ATOM_UPSTREAM ||
> +					       used_atom[at].atom_type == ATOM_WORKTREEPATH)))
> +			die(_("this command reject atom %%(%.*s)"), (int)(ep - sp - 2), sp + 2);

Maybe it was brought up already, but those ATOM_* are mostly continuous
where they're declared, Maybe worth making it so having a comment like:

    /* These need to be in order, used in verify_ref_format */

And then just doing:

    used_atom[at].atom_type >= FIRST_OF_THOSE &&
    used_atom[at].atom_type >= LAST_OF_THOSE

Maybe it's too magical and peeking under the hood of an enum...



[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]

  Powered by Linux