{"thread":{"id":"3629","subject":"[PATCH 6/6] http-push: cleanup","startedAt":"2006-03-11T04:18:33Z","lastAt":"2006-03-11T04:18:33Z","messageCount":1,"participants":["Nick Hengeveld"],"isPatch":true,"patchVersion":1,"patchTotal":6},"messages":[{"id":"17450","messageId":"20060311041833.GH3997@reactrix.com","threadId":"3629","inReplyTo":null,"subject":"[PATCH 6/6] http-push: cleanup","fromName":"Nick Hengeveld","fromEmail":"nickh@reactrix.com","sentAt":"2006-03-11T04:18:33Z","receivedAt":"2006-03-11T04:18:33Z","isPatch":true,"sender":{"key":"nickh@reactrix.com","avatar":null},"body":"More consistent usage string, condense push output, remove extra slashes\nin URLs, fix unused variables, include HTTP method name in failure\nmessages.\n\n---\n\n http-push.c |   51 ++++++++++++++++++++++++++++++---------------------\n 1 files changed, 30 insertions(+), 21 deletions(-)\n\n84bd077e6aa433485124d9dd433ef3d7b674e5ea\ndiff --git a/http-push.c b/http-push.c\nindex 65c6664..181a0d4 100644\n--- a/http-push.c\n+++ b/http-push.c\n@@ -11,7 +11,7 @@\n #include <expat.h>\n \n static const char http_push_usage[] =\n-\"git-http-push [--complete] [--force] [--verbose] <url> <ref> [<ref>...]\\n\";\n+\"git-http-push [--all] [--force] [--verbose] <remote> [<head>...]\\n\";\n \n #ifndef XML_STATUS_OK\n enum XML_Status {\n@@ -707,8 +707,9 @@ static void finish_request(struct transf\n \t\t}\n \t} else if (request->state == RUN_MOVE) {\n \t\tif (request->curl_result == CURLE_OK) {\n-\t\t\tfprintf(stderr, \"    sent %s\\n\",\n-\t\t\t\tsha1_to_hex(request->obj->sha1));\n+\t\t\tif (push_verbosely)\n+\t\t\t\tfprintf(stderr, \"    sent %s\\n\",\n+\t\t\t\t\tsha1_to_hex(request->obj->sha1));\n \t\t\trequest->obj->flags |= REMOTE;\n \t\t\trelease_request(request);\n \t\t} else {\n@@ -848,7 +849,7 @@ static void add_fetch_request(struct obj\n \tstep_active_slots();\n }\n \n-static void add_send_request(struct object *obj, struct remote_lock *lock)\n+static int add_send_request(struct object *obj, struct remote_lock *lock)\n {\n \tstruct transfer_request *request = request_queue_head;\n \tstruct packed_git *target;\n@@ -863,11 +864,11 @@ static void add_send_request(struct obje\n \tif (remote_dir_exists[obj->sha1[0]] == -1)\n \t\tget_remote_object_list(obj->sha1[0]);\n \tif (obj->flags & (REMOTE | PUSHING))\n-\t\treturn;\n+\t\treturn 0;\n \ttarget = find_sha1_pack(obj->sha1, remote->packs);\n \tif (target) {\n \t\tobj->flags |= REMOTE;\n-\t\treturn;\n+\t\treturn 0;\n \t}\n \n \tobj->flags |= PUSHING;\n@@ -884,6 +885,8 @@ static void add_send_request(struct obje\n \n \tfill_active_slots();\n \tstep_active_slots();\n+\n+\treturn 1;\n }\n \n static int fetch_index(unsigned char *sha1)\n@@ -901,8 +904,8 @@ static int fetch_index(unsigned char *sh\n \tstruct slot_results results;\n \n \t/* Don't use the index if the pack isn't there */\n-\turl = xmalloc(strlen(remote->url) + 65);\n-\tsprintf(url, \"%s/objects/pack/pack-%s.pack\", remote->url, hex);\n+\turl = xmalloc(strlen(remote->url) + 64);\n+\tsprintf(url, \"%sobjects/pack/pack-%s.pack\", remote->url, hex);\n \tslot = get_active_slot();\n \tslot->results = &results;\n \tcurl_easy_setopt(slot->curl, CURLOPT_URL, url);\n@@ -924,7 +927,7 @@ static int fetch_index(unsigned char *sh\n \tif (push_verbosely)\n \t\tfprintf(stderr, \"Getting index for pack %s\\n\", hex);\n \t\n-\tsprintf(url, \"%s/objects/pack/pack-%s.idx\", remote->url, hex);\n+\tsprintf(url, \"%sobjects/pack/pack-%s.idx\", remote->url, hex);\n \t\n \tfilename = sha1_pack_index_name(sha1);\n \tsnprintf(tmpfile, sizeof(tmpfile), \"%s.temp\", filename);\n@@ -1009,8 +1012,8 @@ static int fetch_indices(void)\n \tif (push_verbosely)\n \t\tfprintf(stderr, \"Getting pack list\\n\");\n \t\n-\turl = xmalloc(strlen(remote->url) + 21);\n-\tsprintf(url, \"%s/objects/info/packs\", remote->url);\n+\turl = xmalloc(strlen(remote->url) + 20);\n+\tsprintf(url, \"%sobjects/info/packs\", remote->url);\n \n \tslot = get_active_slot();\n \tslot->results = &results;\n@@ -1298,7 +1301,7 @@ static struct remote_lock *lock_remote(c\n \t\t\t\treturn NULL;\n \t\t\t}\n \t\t} else {\n-\t\t\tfprintf(stderr, \"Unable to start request\\n\");\n+\t\t\tfprintf(stderr, \"Unable to start MKCOL request\\n\");\n \t\t\tfree(url);\n \t\t\treturn NULL;\n \t\t}\n@@ -1359,7 +1362,7 @@ static struct remote_lock *lock_remote(c\n \t\t\t}\n \t\t}\n \t} else {\n-\t\tfprintf(stderr, \"Unable to start request\\n\");\n+\t\tfprintf(stderr, \"Unable to start LOCK request\\n\");\n \t}\n \n \tcurl_slist_free_all(dav_headers);\n@@ -1673,7 +1676,7 @@ static int locking_available(void)\n \t\t\t}\n \t\t}\n \t} else {\n-\t\tfprintf(stderr, \"Unable to start request\\n\");\n+\t\tfprintf(stderr, \"Unable to start PROPFIND request\\n\");\n \t}\n \n \tfree(out_data);\n@@ -1734,16 +1737,17 @@ static struct object_list **process_tree\n \treturn p;\n }\n \n-static void get_delta(struct rev_info *revs, struct remote_lock *lock)\n+static int get_delta(struct rev_info *revs, struct remote_lock *lock)\n {\n \tstruct commit *commit;\n \tstruct object_list **p = &objects, *pending;\n+\tint count = 0;\n \n \twhile ((commit = get_revision(revs)) != NULL) {\n \t\tp = process_tree(commit->tree, p, NULL, \"\");\n \t\tcommit->object.flags |= LOCAL;\n \t\tif (!(commit->object.flags & UNINTERESTING))\n-\t\t\tadd_send_request(&commit->object, lock);\n+\t\t\tcount += add_send_request(&commit->object, lock);\n \t}\n \n \tfor (pending = revs->pending_objects; pending; pending = pending->next) {\n@@ -1770,9 +1774,11 @@ static void get_delta(struct rev_info *r\n \n \twhile (objects) {\n \t\tif (!(objects->item->flags & UNINTERESTING))\n-\t\t\tadd_send_request(objects->item, lock);\n+\t\t\tcount += add_send_request(objects->item, lock);\n \t\tobjects = objects->next;\n \t}\n+\n+\treturn count;\n }\n \n static int update_remote(unsigned char *sha1, struct remote_lock *lock)\n@@ -2106,6 +2112,7 @@ int main(int argc, char **argv)\n \tstruct remote_lock *ref_lock = NULL;\n \tstruct remote_lock *info_ref_lock = NULL;\n \tstruct rev_info revs;\n+\tint objects_to_send;\n \tint rc = 0;\n \tint i;\n \n@@ -2197,7 +2204,6 @@ int main(int argc, char **argv)\n \t\treturn 0;\n \t}\n \n-\tint ret = 0;\n \tint new_refs = 0;\n \tstruct ref *ref;\n \tfor (ref = remote_refs; ref; ref = ref->next) {\n@@ -2229,14 +2235,14 @@ int main(int argc, char **argv)\n \t\t\t\t      \"need to pull first?\",\n \t\t\t\t      ref->name,\n \t\t\t\t      ref->peer_ref->name);\n-\t\t\t\tret = -2;\n+\t\t\t\trc = -2;\n \t\t\t\tcontinue;\n \t\t\t}\n \t\t}\n \t\tmemcpy(ref->new_sha1, ref->peer_ref->new_sha1, 20);\n \t\tif (is_zero_sha1(ref->new_sha1)) {\n \t\t\terror(\"cannot happen anymore\");\n-\t\t\tret = -3;\n+\t\t\trc = -3;\n \t\t\tcontinue;\n \t\t}\n \t\tnew_refs++;\n@@ -2283,12 +2289,15 @@ int main(int argc, char **argv)\n \t\tpushing = 0;\n \t\tprepare_revision_walk(&revs);\n \t\tmark_edges_uninteresting(revs.commits);\n-\t\tget_delta(&revs, ref_lock);\n+\t\tobjects_to_send = get_delta(&revs, ref_lock);\n \t\tfinish_all_active_slots();\n \n \t\t/* Push missing objects to remote, this would be a\n \t\t   convenient time to pack them first if appropriate. */\n \t\tpushing = 1;\n+\t\tif (objects_to_send)\n+\t\t\tfprintf(stderr, \"    sending %d objects\\n\",\n+\t\t\t\tobjects_to_send);\n \t\tfill_active_slots();\n \t\tfinish_all_active_slots();\n \n-- \n1.2.4.g8e81-dirty\n"}]}