http-push: convert process_ls_object and descendants to object_id
Rename one function to reflect that it now uses struct object_id. This conversion is a prerequisite for converting parse_object. Note that while the use of a buffer that is exactly forty bytes long looks questionable, get_oid_hex reads exactly the right number of bytes and does not require the data to be NUL-terminated. Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:

committed by
Junio C Hamano

parent
4417df8c49
commit
1aa40df6b1
22
http-push.c
22
http-push.c
@ -718,13 +718,13 @@ static int fetch_indices(void)
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void one_remote_object(const unsigned char *sha1)
|
static void one_remote_object(const struct object_id *oid)
|
||||||
{
|
{
|
||||||
struct object *obj;
|
struct object *obj;
|
||||||
|
|
||||||
obj = lookup_object(sha1);
|
obj = lookup_object(oid->hash);
|
||||||
if (!obj)
|
if (!obj)
|
||||||
obj = parse_object(sha1);
|
obj = parse_object(oid->hash);
|
||||||
|
|
||||||
/* Ignore remote objects that don't exist locally */
|
/* Ignore remote objects that don't exist locally */
|
||||||
if (!obj)
|
if (!obj)
|
||||||
@ -1013,26 +1013,26 @@ static void remote_ls(const char *path, int flags,
|
|||||||
void *userData);
|
void *userData);
|
||||||
|
|
||||||
/* extract hex from sharded "xx/x{40}" filename */
|
/* extract hex from sharded "xx/x{40}" filename */
|
||||||
static int get_sha1_hex_from_objpath(const char *path, unsigned char *sha1)
|
static int get_oid_hex_from_objpath(const char *path, struct object_id *oid)
|
||||||
{
|
{
|
||||||
char hex[40];
|
char hex[GIT_MAX_HEXSZ];
|
||||||
|
|
||||||
if (strlen(path) != 41)
|
if (strlen(path) != GIT_SHA1_HEXSZ + 1)
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
memcpy(hex, path, 2);
|
memcpy(hex, path, 2);
|
||||||
path += 2;
|
path += 2;
|
||||||
path++; /* skip '/' */
|
path++; /* skip '/' */
|
||||||
memcpy(hex, path, 38);
|
memcpy(hex, path, GIT_SHA1_HEXSZ - 2);
|
||||||
|
|
||||||
return get_sha1_hex(hex, sha1);
|
return get_oid_hex(hex, oid);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void process_ls_object(struct remote_ls_ctx *ls)
|
static void process_ls_object(struct remote_ls_ctx *ls)
|
||||||
{
|
{
|
||||||
unsigned int *parent = (unsigned int *)ls->userData;
|
unsigned int *parent = (unsigned int *)ls->userData;
|
||||||
const char *path = ls->dentry_name;
|
const char *path = ls->dentry_name;
|
||||||
unsigned char sha1[20];
|
struct object_id oid;
|
||||||
|
|
||||||
if (!strcmp(ls->path, ls->dentry_name) && (ls->flags & IS_DIR)) {
|
if (!strcmp(ls->path, ls->dentry_name) && (ls->flags & IS_DIR)) {
|
||||||
remote_dir_exists[*parent] = 1;
|
remote_dir_exists[*parent] = 1;
|
||||||
@ -1040,10 +1040,10 @@ static void process_ls_object(struct remote_ls_ctx *ls)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (!skip_prefix(path, "objects/", &path) ||
|
if (!skip_prefix(path, "objects/", &path) ||
|
||||||
get_sha1_hex_from_objpath(path, sha1))
|
get_oid_hex_from_objpath(path, &oid))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
one_remote_object(sha1);
|
one_remote_object(&oid);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void process_ls_ref(struct remote_ls_ctx *ls)
|
static void process_ls_ref(struct remote_ls_ctx *ls)
|
||||||
|
Reference in New Issue
Block a user