Update http-push functionality
PATCH 1/1 Update http-push functionality
This brings http-push functionality more in line with the ssh/git version, by borrowing bits from send-pack and rev-list to process refspecs and revision history in more standard ways. Also, the status of remote objects is determined using PROPFIND requests for the object directory rather than HEAD requests for each object - while it may be less efficient for small numbers of objects, this approach is able to get the status of all remote loose objects in a maximum of 256 requests.
---
I've tested this by running "git push --all --tags remote" into a newly initialized repo, and by rewinding one or multiple overlapping heads and pushing combinations of them.
This also lays a bit of groundwork for updating remote info/refs.
Getting my head around the underlying object/refspec/revision stuff made it hurt, and I've got to say that you guys rule.
Makefile | 2 http-push.c | 1060 ++++++++++++++++++++++++++++++++++++++++------------------- 2 files changed, 727 insertions(+), 335 deletions(-)
9d2903e7bf846eeefd3f108207d7c212139ff97c
Makefile +1 -1
@@ -526,7 +526,7 @@ git-http-fetch$X: fetch.o http.o http-fe $(CC) $(ALL_CFLAGS) -o $@ $(ALL_LDFLAGS) $(filter %.o,$^) \ $(LIBS) $(CURL_LIBCURL) -git-http-push$X: http.o http-push.o $(LIB_FILE) +git-http-push$X: revision.o http.o http-push.o $(LIB_FILE) $(CC) $(ALL_CFLAGS) -o $@ $(ALL_LDFLAGS) $(filter %.o,$^) \ $(LIBS) $(CURL_LIBCURL) $(EXPAT_LIBEXPAT)
http-push.c +726 -334
1,395 lines not on this page · raw message
Signature · 1 line
1.2.4.gb477-dirty