Re: [PATCH 2/2] Add transport message for up-to-date references

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

 



Junio C Hamano writes:

> Christopher Lindee <christopher.lindee@xxxxxxxxxxx> writes:
> 
> > Subject: Re: [PATCH 2/2] Add transport message for up-to-date references
> 
> Same comment as [1/2].  Perhaps
> 
>     push: mark forced no-op pushes differently in the report
> 
> or something?

Thanks!  I will correct this.

> > If the `--send-up-to-date` option in the previous commit is used, the
> > "Everything up-to-date!" message will never appear, even if all of the
> > refs are up to date.  Moreover, the output `deadbeef..deadbeef` appears
> > suspicious, almost as if a collision occurred.  To clarify that the hash
> > is, in fact, identical & to allow grepping for the phrase "up-to-date",
> > add a message to the output when the ref is transmitted, but no change
> > occurred.
> >
> > Signed-off-by: Christopher Lindee <christopher.lindee@xxxxxxxxxxx>
> > ---
> >  transport.c | 2 ++
> >  1 file changed, 2 insertions(+)
> >
> > diff --git a/transport.c b/transport.c
> > index 84deadd2b6..89802452ea 100644
> > --- a/transport.c
> > +++ b/transport.c
> > @@ -670,6 +670,8 @@ static void print_ok_ref_status(struct ref *ref,
> >                       strbuf_addstr(&quickref, "..");
> >                       type = ' ';
> >                       msg = NULL;
> > +                     if (oideq(old_oid, new_oid))
> > +                             msg = "up-to-date";
> >               }
> >               strbuf_add_unique_abbrev(&quickref, new_oid,
> >                                        DEFAULT_ABBREV);
> 
> This code is in an if/else cascade of this shape:
> 
>         if we are deleting
>                 print [deleted]
>         else if they did not have any
>                 print [new]
>         else {
>                 if we forced
>                 then
>                         prepare to say forced
>                 else
>                         prepare to say an unforced update
>                 say "updated" in a certain way
>         }
> 
> The above addition looks somewhat out of place.  I would understand
> if the addition happened like so instead:
> 
> diff --git i/transport.c w/transport.c
> index df518ead70..bacef94b33 100644
> --- i/transport.c
> +++ w/transport.c
> @@ -666,6 +666,8 @@ static void print_ok_ref_status(struct ref *ref,
>                         strbuf_addstr(&quickref, "...");
>                         type = '+';
>                         msg = "forced update";
> +               } else if (oideq(old_oid, new_oid)) {
> +                       ... prepare to say "same but forced no-op" ...
>                 } else {
>                         strbuf_addstr(&quickref, "..");
>                         type = ' ';
> 
> 
> to make the new logic flow more like so:
> 
>                 if we forced
>                 then
>                         prepare to say forced
>                 else if we were forced to tell no-op push
>                         prepare to say we did no-op
>                 else
>                         prepare to say an unforced update
>                 say "updated" in a certain way

The shoehorned `if` was to avoid duplicating the `strbuf_addstr` and
`type` statements.  It sounds like code duplication is not a concern,
so I can make that change.  However, with this new logic flow, maybe
it would be better to have wholly unique values for the display, for
example:

   deadbeef...deadbeef  main -> main
  -deadbeef..deadbeef   main -> main
  =deadbeef..deadbeef   main -> main
  =deadbeef             main -> main
   deadbeef^!           main -> main
  ^deadbeef deadbeef    main -> main
   deadbeef==deadbeef   main -> main
   deadbeef..deadbeef   main == main

There's a fair amount of room for creativity here.  Of course, using
revisions is useful, but the existing output contains `+` for forced
updates, which is not valid in a revision, so there is clearly space
for novelty.

We may also want to consider what happens when both --force and this
new option are used at the same time.  When testing, the message was
always "up-to-date", but I realize now that a server might report it
as a forced update - it would be odd, but would it be impossible?  I
don't know enough about the push certificate records discussion from
the cover page to say that we wouldn't force an update on a noop.

Regards,
Chris.




[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