upload-pack: rewrite functions to take object_id arguments
Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu> Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>maint
parent
e45a4949a2
commit
363e98bfc2
|
@ -681,9 +681,9 @@ static void receive_needs(void)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* return non-zero if the ref is hidden, otherwise 0 */
|
/* return non-zero if the ref is hidden, otherwise 0 */
|
||||||
static int mark_our_ref(const char *refname, const unsigned char *sha1)
|
static int mark_our_ref(const char *refname, const struct object_id *oid)
|
||||||
{
|
{
|
||||||
struct object *o = lookup_unknown_object(sha1);
|
struct object *o = lookup_unknown_object(oid->hash);
|
||||||
|
|
||||||
if (ref_is_hidden(refname)) {
|
if (ref_is_hidden(refname)) {
|
||||||
o->flags |= HIDDEN_REF;
|
o->flags |= HIDDEN_REF;
|
||||||
|
@ -693,9 +693,10 @@ static int mark_our_ref(const char *refname, const unsigned char *sha1)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int check_ref(const char *refname, const unsigned char *sha1, int flag, void *cb_data)
|
static int check_ref(const char *refname, const struct object_id *oid,
|
||||||
|
int flag, void *cb_data)
|
||||||
{
|
{
|
||||||
mark_our_ref(refname, sha1);
|
mark_our_ref(refname, oid);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -709,7 +710,8 @@ static void format_symref_info(struct strbuf *buf, struct string_list *symref)
|
||||||
strbuf_addf(buf, " symref=%s:%s", item->string, (char *)item->util);
|
strbuf_addf(buf, " symref=%s:%s", item->string, (char *)item->util);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int send_ref(const char *refname, const unsigned char *sha1, int flag, void *cb_data)
|
static int send_ref(const char *refname, const struct object_id *oid,
|
||||||
|
int flag, void *cb_data)
|
||||||
{
|
{
|
||||||
static const char *capabilities = "multi_ack thin-pack side-band"
|
static const char *capabilities = "multi_ack thin-pack side-band"
|
||||||
" side-band-64k ofs-delta shallow no-progress"
|
" side-band-64k ofs-delta shallow no-progress"
|
||||||
|
@ -717,7 +719,7 @@ static int send_ref(const char *refname, const unsigned char *sha1, int flag, vo
|
||||||
const char *refname_nons = strip_namespace(refname);
|
const char *refname_nons = strip_namespace(refname);
|
||||||
unsigned char peeled[20];
|
unsigned char peeled[20];
|
||||||
|
|
||||||
if (mark_our_ref(refname, sha1))
|
if (mark_our_ref(refname, oid))
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
if (capabilities) {
|
if (capabilities) {
|
||||||
|
@ -725,7 +727,7 @@ static int send_ref(const char *refname, const unsigned char *sha1, int flag, vo
|
||||||
|
|
||||||
format_symref_info(&symref_info, cb_data);
|
format_symref_info(&symref_info, cb_data);
|
||||||
packet_write(1, "%s %s%c%s%s%s%s agent=%s\n",
|
packet_write(1, "%s %s%c%s%s%s%s agent=%s\n",
|
||||||
sha1_to_hex(sha1), refname_nons,
|
oid_to_hex(oid), refname_nons,
|
||||||
0, capabilities,
|
0, capabilities,
|
||||||
allow_tip_sha1_in_want ? " allow-tip-sha1-in-want" : "",
|
allow_tip_sha1_in_want ? " allow-tip-sha1-in-want" : "",
|
||||||
stateless_rpc ? " no-done" : "",
|
stateless_rpc ? " no-done" : "",
|
||||||
|
@ -733,7 +735,7 @@ static int send_ref(const char *refname, const unsigned char *sha1, int flag, vo
|
||||||
git_user_agent_sanitized());
|
git_user_agent_sanitized());
|
||||||
strbuf_release(&symref_info);
|
strbuf_release(&symref_info);
|
||||||
} else {
|
} else {
|
||||||
packet_write(1, "%s %s\n", sha1_to_hex(sha1), refname_nons);
|
packet_write(1, "%s %s\n", oid_to_hex(oid), refname_nons);
|
||||||
}
|
}
|
||||||
capabilities = NULL;
|
capabilities = NULL;
|
||||||
if (!peel_ref(refname, peeled))
|
if (!peel_ref(refname, peeled))
|
||||||
|
@ -765,20 +767,14 @@ static void upload_pack(void)
|
||||||
head_ref_namespaced(find_symref, &symref);
|
head_ref_namespaced(find_symref, &symref);
|
||||||
|
|
||||||
if (advertise_refs || !stateless_rpc) {
|
if (advertise_refs || !stateless_rpc) {
|
||||||
struct each_ref_fn_sha1_adapter wrapped_send_ref =
|
|
||||||
{send_ref, &symref};
|
|
||||||
|
|
||||||
reset_timeout();
|
reset_timeout();
|
||||||
head_ref_namespaced(each_ref_fn_adapter, &wrapped_send_ref);
|
head_ref_namespaced(send_ref, &symref);
|
||||||
for_each_namespaced_ref(each_ref_fn_adapter, &wrapped_send_ref);
|
for_each_namespaced_ref(send_ref, &symref);
|
||||||
advertise_shallow_grafts(1);
|
advertise_shallow_grafts(1);
|
||||||
packet_flush(1);
|
packet_flush(1);
|
||||||
} else {
|
} else {
|
||||||
struct each_ref_fn_sha1_adapter wrapped_check_ref =
|
head_ref_namespaced(check_ref, NULL);
|
||||||
{check_ref, NULL};
|
for_each_namespaced_ref(check_ref, NULL);
|
||||||
|
|
||||||
head_ref_namespaced(each_ref_fn_adapter, &wrapped_check_ref);
|
|
||||||
for_each_namespaced_ref(each_ref_fn_adapter, &wrapped_check_ref);
|
|
||||||
}
|
}
|
||||||
string_list_clear(&symref, 1);
|
string_list_clear(&symref, 1);
|
||||||
if (advertise_refs)
|
if (advertise_refs)
|
||||||
|
|
Loading…
Reference in New Issue