Merge branch 'bc/object-id'
Conversion from unsigned char [40] to struct object_id continues. * bc/object-id: Documentation: update and rename api-sha1-array.txt Rename sha1_array to oid_array Convert sha1_array_for_each_unique and for_each_abbrev to object_id Convert sha1_array_lookup to take struct object_id Convert remaining callers of sha1_array_lookup to object_id Make sha1_array_append take a struct object_id * sha1-array: convert internal storage for struct sha1_array to object_id builtin/pull: convert to struct object_id submodule: convert check_for_new_submodule_commits to object_id sha1_name: convert disambiguate_hint_fn to take object_id sha1_name: convert struct disambiguate_state to object_id test-sha1-array: convert most code to struct object_id parse-options-cb: convert sha1_array_append caller to struct object_id fsck: convert init_skiplist to struct object_id builtin/receive-pack: convert portions to struct object_id builtin/pull: convert portions to struct object_id builtin/diff: convert to struct object_id Convert GIT_SHA1_RAWSZ used for allocation to GIT_MAX_RAWSZ Convert GIT_SHA1_HEXSZ used for allocation to GIT_MAX_HEXSZ Define new hash-size constants for allocating memory
This commit is contained in:
@ -225,10 +225,10 @@ static int receive_pack_config(const char *var, const char *value, void *cb)
|
||||
return git_default_config(var, value, cb);
|
||||
}
|
||||
|
||||
static void show_ref(const char *path, const unsigned char *sha1)
|
||||
static void show_ref(const char *path, const struct object_id *oid)
|
||||
{
|
||||
if (sent_capabilities) {
|
||||
packet_write_fmt(1, "%s %s\n", sha1_to_hex(sha1), path);
|
||||
packet_write_fmt(1, "%s %s\n", oid_to_hex(oid), path);
|
||||
} else {
|
||||
struct strbuf cap = STRBUF_INIT;
|
||||
|
||||
@ -244,7 +244,7 @@ static void show_ref(const char *path, const unsigned char *sha1)
|
||||
strbuf_addstr(&cap, " push-options");
|
||||
strbuf_addf(&cap, " agent=%s", git_user_agent_sanitized());
|
||||
packet_write_fmt(1, "%s %s%c%s\n",
|
||||
sha1_to_hex(sha1), path, 0, cap.buf);
|
||||
oid_to_hex(oid), path, 0, cap.buf);
|
||||
strbuf_release(&cap);
|
||||
sent_capabilities = 1;
|
||||
}
|
||||
@ -271,7 +271,7 @@ static int show_ref_cb(const char *path_full, const struct object_id *oid,
|
||||
} else {
|
||||
oidset_insert(seen, oid);
|
||||
}
|
||||
show_ref(path, oid->hash);
|
||||
show_ref(path, oid);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -284,7 +284,7 @@ static void show_one_alternate_ref(const char *refname,
|
||||
if (oidset_insert(seen, oid))
|
||||
return;
|
||||
|
||||
show_ref(".have", oid->hash);
|
||||
show_ref(".have", oid);
|
||||
}
|
||||
|
||||
static void write_head_info(void)
|
||||
@ -295,7 +295,7 @@ static void write_head_info(void)
|
||||
for_each_alternate_ref(show_one_alternate_ref, &seen);
|
||||
oidset_clear(&seen);
|
||||
if (!sent_capabilities)
|
||||
show_ref("capabilities^{}", null_sha1);
|
||||
show_ref("capabilities^{}", &null_oid);
|
||||
|
||||
advertise_shallow_grafts(1);
|
||||
|
||||
@ -309,8 +309,8 @@ struct command {
|
||||
unsigned int skip_update:1,
|
||||
did_not_exist:1;
|
||||
int index;
|
||||
unsigned char old_sha1[20];
|
||||
unsigned char new_sha1[20];
|
||||
struct object_id old_oid;
|
||||
struct object_id new_oid;
|
||||
char ref_name[FLEX_ARRAY]; /* more */
|
||||
};
|
||||
|
||||
@ -723,7 +723,7 @@ static int feed_receive_hook(void *state_, const char **bufp, size_t *sizep)
|
||||
return -1; /* EOF */
|
||||
strbuf_reset(&state->buf);
|
||||
strbuf_addf(&state->buf, "%s %s %s\n",
|
||||
sha1_to_hex(cmd->old_sha1), sha1_to_hex(cmd->new_sha1),
|
||||
oid_to_hex(&cmd->old_oid), oid_to_hex(&cmd->new_oid),
|
||||
cmd->ref_name);
|
||||
state->cmd = cmd->next;
|
||||
if (bufp) {
|
||||
@ -764,8 +764,8 @@ static int run_update_hook(struct command *cmd)
|
||||
return 0;
|
||||
|
||||
argv[1] = cmd->ref_name;
|
||||
argv[2] = sha1_to_hex(cmd->old_sha1);
|
||||
argv[3] = sha1_to_hex(cmd->new_sha1);
|
||||
argv[2] = oid_to_hex(&cmd->old_oid);
|
||||
argv[3] = oid_to_hex(&cmd->new_oid);
|
||||
argv[4] = NULL;
|
||||
|
||||
proc.no_stdin = 1;
|
||||
@ -831,7 +831,7 @@ static int command_singleton_iterator(void *cb_data, unsigned char sha1[20]);
|
||||
static int update_shallow_ref(struct command *cmd, struct shallow_info *si)
|
||||
{
|
||||
static struct lock_file shallow_lock;
|
||||
struct sha1_array extra = SHA1_ARRAY_INIT;
|
||||
struct oid_array extra = OID_ARRAY_INIT;
|
||||
struct check_connected_options opt = CHECK_CONNECTED_INIT;
|
||||
uint32_t mask = 1 << (cmd->index % 32);
|
||||
int i;
|
||||
@ -842,13 +842,13 @@ static int update_shallow_ref(struct command *cmd, struct shallow_info *si)
|
||||
if (si->used_shallow[i] &&
|
||||
(si->used_shallow[i][cmd->index / 32] & mask) &&
|
||||
!delayed_reachability_test(si, i))
|
||||
sha1_array_append(&extra, si->shallow->sha1[i]);
|
||||
oid_array_append(&extra, &si->shallow->oid[i]);
|
||||
|
||||
opt.env = tmp_objdir_env(tmp_objdir);
|
||||
setup_alternate_shallow(&shallow_lock, &opt.shallow_file, &extra);
|
||||
if (check_connected(command_singleton_iterator, cmd, &opt)) {
|
||||
rollback_lock_file(&shallow_lock);
|
||||
sha1_array_clear(&extra);
|
||||
oid_array_clear(&extra);
|
||||
return -1;
|
||||
}
|
||||
|
||||
@ -859,10 +859,10 @@ static int update_shallow_ref(struct command *cmd, struct shallow_info *si)
|
||||
* not lose these new roots..
|
||||
*/
|
||||
for (i = 0; i < extra.nr; i++)
|
||||
register_shallow(extra.sha1[i]);
|
||||
register_shallow(extra.oid[i].hash);
|
||||
|
||||
si->shallow_ref[cmd->index] = 0;
|
||||
sha1_array_clear(&extra);
|
||||
oid_array_clear(&extra);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -988,8 +988,8 @@ static const char *update(struct command *cmd, struct shallow_info *si)
|
||||
const char *name = cmd->ref_name;
|
||||
struct strbuf namespaced_name_buf = STRBUF_INIT;
|
||||
const char *namespaced_name, *ret;
|
||||
unsigned char *old_sha1 = cmd->old_sha1;
|
||||
unsigned char *new_sha1 = cmd->new_sha1;
|
||||
struct object_id *old_oid = &cmd->old_oid;
|
||||
struct object_id *new_oid = &cmd->new_oid;
|
||||
|
||||
/* only refs/... are allowed */
|
||||
if (!starts_with(name, "refs/") || check_refname_format(name + 5, 0)) {
|
||||
@ -1014,20 +1014,20 @@ static const char *update(struct command *cmd, struct shallow_info *si)
|
||||
refuse_unconfigured_deny();
|
||||
return "branch is currently checked out";
|
||||
case DENY_UPDATE_INSTEAD:
|
||||
ret = update_worktree(new_sha1);
|
||||
ret = update_worktree(new_oid->hash);
|
||||
if (ret)
|
||||
return ret;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (!is_null_sha1(new_sha1) && !has_sha1_file(new_sha1)) {
|
||||
if (!is_null_oid(new_oid) && !has_object_file(new_oid)) {
|
||||
error("unpack should have generated %s, "
|
||||
"but I can't find it!", sha1_to_hex(new_sha1));
|
||||
"but I can't find it!", oid_to_hex(new_oid));
|
||||
return "bad pack";
|
||||
}
|
||||
|
||||
if (!is_null_sha1(old_sha1) && is_null_sha1(new_sha1)) {
|
||||
if (!is_null_oid(old_oid) && is_null_oid(new_oid)) {
|
||||
if (deny_deletes && starts_with(name, "refs/heads/")) {
|
||||
rp_error("denying ref deletion for %s", name);
|
||||
return "deletion prohibited";
|
||||
@ -1053,14 +1053,14 @@ static const char *update(struct command *cmd, struct shallow_info *si)
|
||||
}
|
||||
}
|
||||
|
||||
if (deny_non_fast_forwards && !is_null_sha1(new_sha1) &&
|
||||
!is_null_sha1(old_sha1) &&
|
||||
if (deny_non_fast_forwards && !is_null_oid(new_oid) &&
|
||||
!is_null_oid(old_oid) &&
|
||||
starts_with(name, "refs/heads/")) {
|
||||
struct object *old_object, *new_object;
|
||||
struct commit *old_commit, *new_commit;
|
||||
|
||||
old_object = parse_object(old_sha1);
|
||||
new_object = parse_object(new_sha1);
|
||||
old_object = parse_object(old_oid->hash);
|
||||
new_object = parse_object(new_oid->hash);
|
||||
|
||||
if (!old_object || !new_object ||
|
||||
old_object->type != OBJ_COMMIT ||
|
||||
@ -1081,10 +1081,10 @@ static const char *update(struct command *cmd, struct shallow_info *si)
|
||||
return "hook declined";
|
||||
}
|
||||
|
||||
if (is_null_sha1(new_sha1)) {
|
||||
if (is_null_oid(new_oid)) {
|
||||
struct strbuf err = STRBUF_INIT;
|
||||
if (!parse_object(old_sha1)) {
|
||||
old_sha1 = NULL;
|
||||
if (!parse_object(old_oid->hash)) {
|
||||
old_oid = NULL;
|
||||
if (ref_exists(name)) {
|
||||
rp_warning("Allowing deletion of corrupt ref.");
|
||||
} else {
|
||||
@ -1094,7 +1094,7 @@ static const char *update(struct command *cmd, struct shallow_info *si)
|
||||
}
|
||||
if (ref_transaction_delete(transaction,
|
||||
namespaced_name,
|
||||
old_sha1,
|
||||
old_oid->hash,
|
||||
0, "push", &err)) {
|
||||
rp_error("%s", err.buf);
|
||||
strbuf_release(&err);
|
||||
@ -1111,7 +1111,7 @@ static const char *update(struct command *cmd, struct shallow_info *si)
|
||||
|
||||
if (ref_transaction_update(transaction,
|
||||
namespaced_name,
|
||||
new_sha1, old_sha1,
|
||||
new_oid->hash, old_oid->hash,
|
||||
0, "push",
|
||||
&err)) {
|
||||
rp_error("%s", err.buf);
|
||||
@ -1162,7 +1162,7 @@ static void check_aliased_update(struct command *cmd, struct string_list *list)
|
||||
const char *dst_name;
|
||||
struct string_list_item *item;
|
||||
struct command *dst_cmd;
|
||||
unsigned char sha1[GIT_SHA1_RAWSZ];
|
||||
unsigned char sha1[GIT_MAX_RAWSZ];
|
||||
int flag;
|
||||
|
||||
strbuf_addf(&buf, "%s%s", get_git_namespace(), cmd->ref_name);
|
||||
@ -1187,8 +1187,8 @@ static void check_aliased_update(struct command *cmd, struct string_list *list)
|
||||
|
||||
dst_cmd = (struct command *) item->util;
|
||||
|
||||
if (!hashcmp(cmd->old_sha1, dst_cmd->old_sha1) &&
|
||||
!hashcmp(cmd->new_sha1, dst_cmd->new_sha1))
|
||||
if (!oidcmp(&cmd->old_oid, &dst_cmd->old_oid) &&
|
||||
!oidcmp(&cmd->new_oid, &dst_cmd->new_oid))
|
||||
return;
|
||||
|
||||
dst_cmd->skip_update = 1;
|
||||
@ -1196,11 +1196,11 @@ static void check_aliased_update(struct command *cmd, struct string_list *list)
|
||||
rp_error("refusing inconsistent update between symref '%s' (%s..%s) and"
|
||||
" its target '%s' (%s..%s)",
|
||||
cmd->ref_name,
|
||||
find_unique_abbrev(cmd->old_sha1, DEFAULT_ABBREV),
|
||||
find_unique_abbrev(cmd->new_sha1, DEFAULT_ABBREV),
|
||||
find_unique_abbrev(cmd->old_oid.hash, DEFAULT_ABBREV),
|
||||
find_unique_abbrev(cmd->new_oid.hash, DEFAULT_ABBREV),
|
||||
dst_cmd->ref_name,
|
||||
find_unique_abbrev(dst_cmd->old_sha1, DEFAULT_ABBREV),
|
||||
find_unique_abbrev(dst_cmd->new_sha1, DEFAULT_ABBREV));
|
||||
find_unique_abbrev(dst_cmd->old_oid.hash, DEFAULT_ABBREV),
|
||||
find_unique_abbrev(dst_cmd->new_oid.hash, DEFAULT_ABBREV));
|
||||
|
||||
cmd->error_string = dst_cmd->error_string =
|
||||
"inconsistent aliased update";
|
||||
@ -1231,10 +1231,10 @@ static int command_singleton_iterator(void *cb_data, unsigned char sha1[20])
|
||||
struct command **cmd_list = cb_data;
|
||||
struct command *cmd = *cmd_list;
|
||||
|
||||
if (!cmd || is_null_sha1(cmd->new_sha1))
|
||||
if (!cmd || is_null_oid(&cmd->new_oid))
|
||||
return -1; /* end of list */
|
||||
*cmd_list = NULL; /* this returns only one */
|
||||
hashcpy(sha1, cmd->new_sha1);
|
||||
hashcpy(sha1, cmd->new_oid.hash);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -1275,8 +1275,8 @@ static int iterate_receive_command_list(void *cb_data, unsigned char sha1[20])
|
||||
if (shallow_update && data->si->shallow_ref[cmd->index])
|
||||
/* to be checked in update_shallow_ref() */
|
||||
continue;
|
||||
if (!is_null_sha1(cmd->new_sha1) && !cmd->skip_update) {
|
||||
hashcpy(sha1, cmd->new_sha1);
|
||||
if (!is_null_oid(&cmd->new_oid) && !cmd->skip_update) {
|
||||
hashcpy(sha1, cmd->new_oid.hash);
|
||||
*cmd_list = cmd->next;
|
||||
return 0;
|
||||
}
|
||||
@ -1303,7 +1303,7 @@ static void reject_updates_to_hidden(struct command *commands)
|
||||
|
||||
if (!ref_is_hidden(cmd->ref_name, refname_full.buf))
|
||||
continue;
|
||||
if (is_null_sha1(cmd->new_sha1))
|
||||
if (is_null_oid(&cmd->new_oid))
|
||||
cmd->error_string = "deny deleting a hidden ref";
|
||||
else
|
||||
cmd->error_string = "deny updating a hidden ref";
|
||||
@ -1486,23 +1486,23 @@ static struct command **queue_command(struct command **tail,
|
||||
const char *line,
|
||||
int linelen)
|
||||
{
|
||||
unsigned char old_sha1[20], new_sha1[20];
|
||||
struct object_id old_oid, new_oid;
|
||||
struct command *cmd;
|
||||
const char *refname;
|
||||
int reflen;
|
||||
const char *p;
|
||||
|
||||
if (linelen < 83 ||
|
||||
line[40] != ' ' ||
|
||||
line[81] != ' ' ||
|
||||
get_sha1_hex(line, old_sha1) ||
|
||||
get_sha1_hex(line + 41, new_sha1))
|
||||
if (parse_oid_hex(line, &old_oid, &p) ||
|
||||
*p++ != ' ' ||
|
||||
parse_oid_hex(p, &new_oid, &p) ||
|
||||
*p++ != ' ')
|
||||
die("protocol error: expected old/new/ref, got '%s'", line);
|
||||
|
||||
refname = line + 82;
|
||||
reflen = linelen - 82;
|
||||
refname = p;
|
||||
reflen = linelen - (p - line);
|
||||
FLEX_ALLOC_MEM(cmd, ref_name, refname, reflen);
|
||||
hashcpy(cmd->old_sha1, old_sha1);
|
||||
hashcpy(cmd->new_sha1, new_sha1);
|
||||
oidcpy(&cmd->old_oid, &old_oid);
|
||||
oidcpy(&cmd->new_oid, &new_oid);
|
||||
*tail = cmd;
|
||||
return &cmd->next;
|
||||
}
|
||||
@ -1529,7 +1529,7 @@ static void queue_commands_from_cert(struct command **tail,
|
||||
}
|
||||
}
|
||||
|
||||
static struct command *read_head_info(struct sha1_array *shallow)
|
||||
static struct command *read_head_info(struct oid_array *shallow)
|
||||
{
|
||||
struct command *commands = NULL;
|
||||
struct command **p = &commands;
|
||||
@ -1541,12 +1541,12 @@ static struct command *read_head_info(struct sha1_array *shallow)
|
||||
if (!line)
|
||||
break;
|
||||
|
||||
if (len == 48 && starts_with(line, "shallow ")) {
|
||||
unsigned char sha1[20];
|
||||
if (get_sha1_hex(line + 8, sha1))
|
||||
if (len > 8 && starts_with(line, "shallow ")) {
|
||||
struct object_id oid;
|
||||
if (get_oid_hex(line + 8, &oid))
|
||||
die("protocol error: expected shallow sha, got '%s'",
|
||||
line + 8);
|
||||
sha1_array_append(shallow, sha1);
|
||||
oid_array_append(shallow, &oid);
|
||||
continue;
|
||||
}
|
||||
|
||||
@ -1807,7 +1807,7 @@ static void prepare_shallow_update(struct command *commands,
|
||||
|
||||
static void update_shallow_info(struct command *commands,
|
||||
struct shallow_info *si,
|
||||
struct sha1_array *ref)
|
||||
struct oid_array *ref)
|
||||
{
|
||||
struct command *cmd;
|
||||
int *ref_status;
|
||||
@ -1818,9 +1818,9 @@ static void update_shallow_info(struct command *commands,
|
||||
}
|
||||
|
||||
for (cmd = commands; cmd; cmd = cmd->next) {
|
||||
if (is_null_sha1(cmd->new_sha1))
|
||||
if (is_null_oid(&cmd->new_oid))
|
||||
continue;
|
||||
sha1_array_append(ref, cmd->new_sha1);
|
||||
oid_array_append(ref, &cmd->new_oid);
|
||||
cmd->index = ref->nr - 1;
|
||||
}
|
||||
si->ref = ref;
|
||||
@ -1833,7 +1833,7 @@ static void update_shallow_info(struct command *commands,
|
||||
ALLOC_ARRAY(ref_status, ref->nr);
|
||||
assign_shallow_commits_to_refs(si, NULL, ref_status);
|
||||
for (cmd = commands; cmd; cmd = cmd->next) {
|
||||
if (is_null_sha1(cmd->new_sha1))
|
||||
if (is_null_oid(&cmd->new_oid))
|
||||
continue;
|
||||
if (ref_status[cmd->index]) {
|
||||
cmd->error_string = "shallow update not allowed";
|
||||
@ -1871,7 +1871,7 @@ static int delete_only(struct command *commands)
|
||||
{
|
||||
struct command *cmd;
|
||||
for (cmd = commands; cmd; cmd = cmd->next) {
|
||||
if (!is_null_sha1(cmd->new_sha1))
|
||||
if (!is_null_oid(&cmd->new_oid))
|
||||
return 0;
|
||||
}
|
||||
return 1;
|
||||
@ -1881,8 +1881,8 @@ int cmd_receive_pack(int argc, const char **argv, const char *prefix)
|
||||
{
|
||||
int advertise_refs = 0;
|
||||
struct command *commands;
|
||||
struct sha1_array shallow = SHA1_ARRAY_INIT;
|
||||
struct sha1_array ref = SHA1_ARRAY_INIT;
|
||||
struct oid_array shallow = OID_ARRAY_INIT;
|
||||
struct oid_array ref = OID_ARRAY_INIT;
|
||||
struct shallow_info si;
|
||||
|
||||
struct option options[] = {
|
||||
@ -1974,8 +1974,8 @@ int cmd_receive_pack(int argc, const char **argv, const char *prefix)
|
||||
}
|
||||
if (use_sideband)
|
||||
packet_flush(1);
|
||||
sha1_array_clear(&shallow);
|
||||
sha1_array_clear(&ref);
|
||||
oid_array_clear(&shallow);
|
||||
oid_array_clear(&ref);
|
||||
free((void *)push_cert_nonce);
|
||||
return 0;
|
||||
}
|
||||
|
Reference in New Issue
Block a user