Skip to contentSkip to conversation

Update http-push functionality

PATCH New Nick Hengeveld 1 participant 1 message Jun 15, 2016 Kbuild

lore
Share & tools
lore
#0 lore raw

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
index b6d8804..1c555da 100644
@@ -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