Re: [PATCH v5] format-patch: allow a non-integral version numbers

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

 



Eric Sunshine <sunshine@xxxxxxxxxxxxxx> 于2021年3月17日周三 上午7:36写道:
>
> On Tue, Mar 16, 2021 at 4:25 AM ZheNing Hu via GitGitGadget
> <gitgitgadget@xxxxxxxxx> wrote:
> > Usually we can only use `format-patch -v<n>` to generate integral
> > version numbers patches, but sometimes a same fixup should be
> > labeled as a non-integral version like `v1.1`, so teach `format-patch`
> > to allow a non-integral version which may be helpful to send those
> > patches.
> >
> > `<n>` can be any string, such as `-v1.1`.  In the case where it
> > is a non-integral value, the "Range-diff" and "Interdiff"
> > headers will not include the previous version.
> >
> > Signed-off-by: ZheNing Hu <adlternative@xxxxxxxxx>
> > ---
> > diff --git a/builtin/log.c b/builtin/log.c
> > @@ -1662,13 +1662,19 @@ static void print_bases(struct base_tree_info *bases, FILE *file)
> > +static const char *diff_title(struct strbuf *sb,
> > +                             const char *reroll_count,
> > +                             const char *generic,
> > +                             const char *rerolled)
> >  {
> > +       int reroll_count_int = -1;
> > +
> > +       if (reroll_count)
> > +               strtol_i(reroll_count, 10, &reroll_count_int);
> > +       if (reroll_count_int <= 0)
> >                 strbuf_addstr(sb, generic);
> >         else /* RFC may be v0, so allow -v1 to diff against v0 */
> > +               strbuf_addf(sb, rerolled, reroll_count_int - 1);
> >         return sb->buf;
> >  }
>
> Thanks. The logic of this version is much easier to understand now
> that the number parsing has been moved into diff_title().
>
> It may still be a bit confusing for someone reading this code to
> understand why you don't check the return value of strtol_i().
> Therefore, it might be a good idea to add an /* in-code comment */
> explaining why you don't check whether the parse succeeded or failed.
> However, if we rewrite the code like this:
>
>     int v;
>     if (reroll_count && !strtol_i(reroll_count, 10, &v))
>         strbuf_addf(sb, rerolled, v - 1);
>     else
>         strbuf_addstr(sb, generic);
>     return sb->buf;
>
> then the logic becomes obvious, and we don't even need a comment.
> (Notice that I also shortened the variable name since the code is just
> as clear with a short name as with a long spelled out name such as
> "reroll_count_int".)

Yes, It is better to handle the return value of `strtol_i` in an if judgment and
use `v` instead of `reroll_count_int`.

Thanks.




[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