Re: [PATCH v2 2/2] remote.c: fix handling of %(push:remoteref)
- From
Junio C Hamano <gitster@pobox.com>
- Date
- Mar 3, 2020, 22:48 UTC
- Message-ID
- <xmqq5zfl6omm.fsf@gitster-ct.c.googlers.com>
- In-Reply-To
- <20200303222423.wfbjuuwp3263qesv@doriath>
Damien Robert <damien.olivier.robert@gmail.com> writes:
Show 27 quoted lines
>> By the way, I have a bit higher-level question. >> >> All of the above logic that decides what should happen in "git push" >> MUST have existing code we already use to implement "git push", no? > > Yes. > >> Why do we need to reinvent it here, instead of reusing the existing >> code? Is it because the interface into the functions that implement >> the existing logic is very different from what this function wants? > > Mostly yes. The logic of git push is to massage the refspecs directly, for > instance: > case PUSH_DEFAULT_MATCHING: > refspec_append(&rs, ":"); > case PUSH_DEFAULT_CURRENT: > ... > strbuf_addf(&refspec, "%s:%s", branch->refname, branch->refname); > case PUSH_DEFAULT_UPSTREAM: > ... > strbuf_addf(&refspec, "%s:%s", branch->refname, branch->merge[0]->src); > > And the error messages are also not the same, and to give a good error > message we need to parse the different cases. > > It may be possible to refactorize all this, but not in an obvious way and > it would be a lot more work than this patch series.
Yeah, in light of the analysis I agree it makes sense to take the approach of these two patches, at least for now.
Thanks.