[PATCH 0/5] work around "transport-take-over" hack
- From
Junio C Hamano <gitster@pobox.com>
- Date
- Aug 7, 2013, 23:30 UTC
- Message-ID
- <1375918242-4655-1-git-send-email-gitster@pobox.com>
"git fetch" sometimes needs to make a real request to the transport after a single "fetch_refs" request, in order to follow tags that the other end should have sent as part of the primary transfer with "follow-tags" request.
However, a transport that defines "connect" has a gross hack that destroys its internal state to render it unusable after processing a single request, breaking this.
This is my attempt to work it around. I am not too proud of it, but after trying two other approaches to fix it closer to the real cause (i.e. the implementation of Git-aware transport helper) and seeing that both of them ended up being even less appealing and not worth posting, I think this is probably the best fix to the issue.
Junio C Hamano (5): t5802: add test for connect helper fetch: rename file-scope global "transport" to "gtransport" fetch: refactor code that prepares a transport fetch: refactor code that fetches leftover tags fetch: work around "transport-take-over" hack
builtin/fetch.c | 85 ++++++++++++++++++++++++++++++----------------- t/t5802-connect-helper.sh | 72 +++++++++++++++++++++++++++++++++++++++ transport.c | 2 ++ transport.h | 6 ++++ 4 files changed, 134 insertions(+), 31 deletions(-) create mode 100755 t/t5802-connect-helper.sh
-- 1.8.4-rc1-210-gf6d87e2