static int process_commit(struct walker *walker, struct commit *commit) { if (parse_commit(commit)) return -1; while (complete && complete->item->date >= commit->date) { pop_most_recent_commit(&complete, COMPLETE); } if (commit->object.flags & COMPLETE) return 0; hashcpy(current_commit_sha1, commit->object.sha1); walker_say(walker, "walk %s\n", sha1_to_hex(commit->object.sha1)); if (walker->get_tree) { if (process(walker, &commit->tree->object)) return -1; if (!walker->get_all) walker->get_tree = 0; } if (walker->get_history) { struct commit_list *parents = commit->parents; for (; parents; parents = parents->next) { if (process(walker, &parents->item->object)) return -1; } } return 0; }
static void finish_object_request(struct object_request *obj_req) { struct stat st; fchmod(obj_req->local, 0444); close(obj_req->local); obj_req->local = -1; if (obj_req->http_code == 416) { fprintf(stderr, "Warning: requested range invalid; we may already have all the data.\n"); } else if (obj_req->curl_result != CURLE_OK) { if (stat(obj_req->tmpfile, &st) == 0) if (st.st_size == 0) unlink(obj_req->tmpfile); return; } inflateEnd(&obj_req->stream); SHA1_Final(obj_req->real_sha1, &obj_req->c); if (obj_req->zret != Z_STREAM_END) { unlink(obj_req->tmpfile); return; } if (hashcmp(obj_req->sha1, obj_req->real_sha1)) { unlink(obj_req->tmpfile); return; } obj_req->rename = move_temp_to_file(obj_req->tmpfile, obj_req->filename); if (obj_req->rename == 0) walker_say(obj_req->walker, "got %s\n", sha1_to_hex(obj_req->sha1)); }
static void finish_object_request(struct object_request *obj_req) { if (finish_http_object_request(obj_req->req)) return; if (obj_req->req->rename == 0) walker_say(obj_req->walker, "got %s\n", oid_to_hex(&obj_req->oid)); }