On Wed, Aug 01, 2018 at 01:13:20PM -0700, Jonathan Tan wrote: > When a user fetches: > - at least one up-to-date ref and at least one non-up-to-date ref, > - using HTTP with protocol v0 (or something else that uses the fetch > command of a remote helper) > some refs might not be updated after the fetch. > > This bug was introduced in commit 989b8c4452 ("fetch-pack: put shallow > info in output parameter", 2018-06-28) which allowed transports to > report the refs that they have fetched in a new out-parameter > "fetched_refs". If they do so, transport_fetch_refs() makes this > information available to its caller. > > Users of "fetched_refs" rely on the following 3 properties: > (1) it is the complete list of refs that was passed to > transport_fetch_refs(), > (2) it has shallow information (REF_STATUS_REJECT_SHALLOW set if > relevant), and > (3) it has updated OIDs if ref-in-want was used (introduced after > 989b8c4452). > [...] Thanks, this is a very clear and well-organized commit message. It answers my questions, and I agree with the general notion of "we can figure out the right API for ref patterns later" approach. > builtin/clone.c | 4 ++-- > builtin/fetch.c | 28 ++++------------------------ > fetch-object.c | 2 +- > fetch-pack.c | 30 +++++++++++++++--------------- > t/t5551-http-fetch-smart.sh | 18 ++++++++++++++++++ > transport-helper.c | 6 ++---- > transport-internal.h | 9 +-------- > transport.c | 34 ++++++---------------------------- > transport.h | 3 +-- The patch itself looks sane to me, and obviously fixes the problem. I cannot offhand think of any reason that munging the existing list would be a problem (though it has been a while since I have dealt with this code, so take that with the appropriate grain of salt). -Peff