static void upload_pack(void) { struct string_list symref = STRING_LIST_INIT_DUP; head_ref_namespaced(find_symref, &symref); if (advertise_refs || !stateless_rpc) { reset_timeout(); head_ref_namespaced(send_ref, &symref); for_each_namespaced_ref(send_ref, &symref); advertise_shallow_grafts(1); packet_flush(1); } else { head_ref_namespaced(mark_our_ref, NULL); for_each_namespaced_ref(mark_our_ref, NULL); } string_list_clear(&symref, 1); if (advertise_refs) return; receive_needs(); if (want_obj.nr) { get_common_commits(); create_pack_file(); } }
void upload_pack(struct upload_pack_options *options) { struct string_list symref = STRING_LIST_INIT_DUP; stateless_rpc = options->stateless_rpc; timeout = options->timeout; daemon_mode = options->daemon_mode; git_config(upload_pack_config, NULL); head_ref_namespaced(find_symref, &symref); if (options->advertise_refs || !stateless_rpc) { reset_timeout(); head_ref_namespaced(send_ref, &symref); for_each_namespaced_ref(send_ref, &symref); advertise_shallow_grafts(1); packet_flush(1); } else { head_ref_namespaced(check_ref, NULL); for_each_namespaced_ref(check_ref, NULL); } string_list_clear(&symref, 1); if (options->advertise_refs) return; receive_needs(); if (want_obj.nr) { get_common_commits(); create_pack_file(); } }
int upload_pack_v2(struct repository *r, struct argv_array *keys, struct packet_reader *request) { enum fetch_state state = FETCH_PROCESS_ARGS; struct upload_pack_data data; git_config(upload_pack_config, NULL); upload_pack_data_init(&data); use_sideband = LARGE_PACKET_MAX; while (state != FETCH_DONE) { switch (state) { case FETCH_PROCESS_ARGS: process_args(request, &data); if (!want_obj.nr) { /* * Request didn't contain any 'want' lines, * guess they didn't want anything. */ state = FETCH_DONE; } else if (data.haves.nr) { /* * Request had 'have' lines, so lets ACK them. */ state = FETCH_SEND_ACKS; } else { /* * Request had 'want's but no 'have's so we can * immedietly go to construct and send a pack. */ state = FETCH_SEND_PACK; } break; case FETCH_SEND_ACKS: if (process_haves_and_send_acks(&data)) state = FETCH_SEND_PACK; else state = FETCH_DONE; break; case FETCH_SEND_PACK: send_shallow_info(&data); packet_write_fmt(1, "packfile\n"); create_pack_file(); state = FETCH_DONE; break; case FETCH_DONE: continue; } } upload_pack_data_clear(&data); return 0; }
static void upload_pack(void) { reset_timeout(); head_ref(send_ref, NULL); for_each_ref(send_ref, NULL); packet_flush(1); receive_needs(); if (want_obj.nr) { get_common_commits(); create_pack_file(); } }
static void upload_pack(void) { if (advertise_refs || !stateless_rpc) { reset_timeout(); head_ref(send_ref, NULL); for_each_ref(send_ref, NULL); packet_flush(1); } else { head_ref(mark_our_ref, NULL); for_each_ref(mark_our_ref, NULL); } if (advertise_refs) return; receive_needs(); if (want_obj.nr) { get_common_commits(); create_pack_file(); } }