зеркало из https://github.com/microsoft/git.git
refs: convert each_reflog_ent_fn to struct object_id
Make each_reflog_ent_fn take two struct object_id pointers instead of two pointers to unsigned char. Convert the various callbacks to use struct object_id as well. Also, rename fsck_handle_reflog_sha1 to fsck_handle_reflog_oid. Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Родитель
8ebc3fd01b
Коммит
9461d27240
|
@ -396,13 +396,13 @@ static int fsck_obj_buffer(const unsigned char *sha1, enum object_type type,
|
|||
|
||||
static int default_refs;
|
||||
|
||||
static void fsck_handle_reflog_sha1(const char *refname, unsigned char *sha1,
|
||||
static void fsck_handle_reflog_oid(const char *refname, struct object_id *oid,
|
||||
unsigned long timestamp)
|
||||
{
|
||||
struct object *obj;
|
||||
|
||||
if (!is_null_sha1(sha1)) {
|
||||
obj = lookup_object(sha1);
|
||||
if (!is_null_oid(oid)) {
|
||||
obj = lookup_object(oid->hash);
|
||||
if (obj && (obj->flags & HAS_OBJ)) {
|
||||
if (timestamp && name_objects)
|
||||
add_decoration(fsck_walk_options.object_names,
|
||||
|
@ -411,13 +411,13 @@ static void fsck_handle_reflog_sha1(const char *refname, unsigned char *sha1,
|
|||
obj->used = 1;
|
||||
mark_object_reachable(obj);
|
||||
} else {
|
||||
error("%s: invalid reflog entry %s", refname, sha1_to_hex(sha1));
|
||||
error("%s: invalid reflog entry %s", refname, oid_to_hex(oid));
|
||||
errors_found |= ERROR_REACHABLE;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static int fsck_handle_reflog_ent(unsigned char *osha1, unsigned char *nsha1,
|
||||
static int fsck_handle_reflog_ent(struct object_id *ooid, struct object_id *noid,
|
||||
const char *email, unsigned long timestamp, int tz,
|
||||
const char *message, void *cb_data)
|
||||
{
|
||||
|
@ -425,10 +425,10 @@ static int fsck_handle_reflog_ent(unsigned char *osha1, unsigned char *nsha1,
|
|||
|
||||
if (verbose)
|
||||
fprintf(stderr, "Checking reflog %s->%s\n",
|
||||
sha1_to_hex(osha1), sha1_to_hex(nsha1));
|
||||
oid_to_hex(ooid), oid_to_hex(noid));
|
||||
|
||||
fsck_handle_reflog_sha1(refname, osha1, 0);
|
||||
fsck_handle_reflog_sha1(refname, nsha1, timestamp);
|
||||
fsck_handle_reflog_oid(refname, ooid, 0);
|
||||
fsck_handle_reflog_oid(refname, noid, timestamp);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
@ -131,7 +131,7 @@ static void add_one_commit(unsigned char *sha1, struct rev_collect *revs)
|
|||
commit->object.flags |= TMP_MARK;
|
||||
}
|
||||
|
||||
static int collect_one_reflog_ent(unsigned char *osha1, unsigned char *nsha1,
|
||||
static int collect_one_reflog_ent(struct object_id *ooid, struct object_id *noid,
|
||||
const char *ident, unsigned long timestamp,
|
||||
int tz, const char *message, void *cbdata)
|
||||
{
|
||||
|
@ -139,9 +139,9 @@ static int collect_one_reflog_ent(unsigned char *osha1, unsigned char *nsha1,
|
|||
|
||||
if (revs->initial) {
|
||||
revs->initial = 0;
|
||||
add_one_commit(osha1, revs);
|
||||
add_one_commit(ooid->hash, revs);
|
||||
}
|
||||
add_one_commit(nsha1, revs);
|
||||
add_one_commit(noid->hash, revs);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
@ -615,7 +615,7 @@ static int cmd_reflog_expire(int argc, const char **argv, const char *prefix)
|
|||
return status;
|
||||
}
|
||||
|
||||
static int count_reflog_ent(unsigned char *osha1, unsigned char *nsha1,
|
||||
static int count_reflog_ent(struct object_id *ooid, struct object_id *noid,
|
||||
const char *email, unsigned long timestamp, int tz,
|
||||
const char *message, void *cb_data)
|
||||
{
|
||||
|
|
|
@ -19,7 +19,7 @@ struct complete_reflogs {
|
|||
int nr, alloc;
|
||||
};
|
||||
|
||||
static int read_one_reflog(unsigned char *osha1, unsigned char *nsha1,
|
||||
static int read_one_reflog(struct object_id *ooid, struct object_id *noid,
|
||||
const char *email, unsigned long timestamp, int tz,
|
||||
const char *message, void *cb_data)
|
||||
{
|
||||
|
@ -28,8 +28,8 @@ static int read_one_reflog(unsigned char *osha1, unsigned char *nsha1,
|
|||
|
||||
ALLOC_GROW(array->items, array->nr + 1, array->alloc);
|
||||
item = array->items + array->nr;
|
||||
hashcpy(item->ooid.hash, osha1);
|
||||
hashcpy(item->noid.hash, nsha1);
|
||||
oidcpy(&item->ooid, ooid);
|
||||
oidcpy(&item->noid, noid);
|
||||
item->email = xstrdup(email);
|
||||
item->timestamp = timestamp;
|
||||
item->tz = tz;
|
||||
|
|
24
refs.c
24
refs.c
|
@ -674,7 +674,7 @@ struct read_ref_at_cb {
|
|||
int *cutoff_cnt;
|
||||
};
|
||||
|
||||
static int read_ref_at_ent(unsigned char *osha1, unsigned char *nsha1,
|
||||
static int read_ref_at_ent(struct object_id *ooid, struct object_id *noid,
|
||||
const char *email, unsigned long timestamp, int tz,
|
||||
const char *message, void *cb_data)
|
||||
{
|
||||
|
@ -698,30 +698,30 @@ static int read_ref_at_ent(unsigned char *osha1, unsigned char *nsha1,
|
|||
* hold the values for the previous record.
|
||||
*/
|
||||
if (!is_null_sha1(cb->osha1)) {
|
||||
hashcpy(cb->sha1, nsha1);
|
||||
if (hashcmp(cb->osha1, nsha1))
|
||||
hashcpy(cb->sha1, noid->hash);
|
||||
if (hashcmp(cb->osha1, noid->hash))
|
||||
warning("Log for ref %s has gap after %s.",
|
||||
cb->refname, show_date(cb->date, cb->tz, DATE_MODE(RFC2822)));
|
||||
}
|
||||
else if (cb->date == cb->at_time)
|
||||
hashcpy(cb->sha1, nsha1);
|
||||
else if (hashcmp(nsha1, cb->sha1))
|
||||
hashcpy(cb->sha1, noid->hash);
|
||||
else if (hashcmp(noid->hash, cb->sha1))
|
||||
warning("Log for ref %s unexpectedly ended on %s.",
|
||||
cb->refname, show_date(cb->date, cb->tz,
|
||||
DATE_MODE(RFC2822)));
|
||||
hashcpy(cb->osha1, osha1);
|
||||
hashcpy(cb->nsha1, nsha1);
|
||||
hashcpy(cb->osha1, ooid->hash);
|
||||
hashcpy(cb->nsha1, noid->hash);
|
||||
cb->found_it = 1;
|
||||
return 1;
|
||||
}
|
||||
hashcpy(cb->osha1, osha1);
|
||||
hashcpy(cb->nsha1, nsha1);
|
||||
hashcpy(cb->osha1, ooid->hash);
|
||||
hashcpy(cb->nsha1, noid->hash);
|
||||
if (cb->cnt > 0)
|
||||
cb->cnt--;
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int read_ref_at_ent_oldest(unsigned char *osha1, unsigned char *nsha1,
|
||||
static int read_ref_at_ent_oldest(struct object_id *ooid, struct object_id *noid,
|
||||
const char *email, unsigned long timestamp,
|
||||
int tz, const char *message, void *cb_data)
|
||||
{
|
||||
|
@ -735,9 +735,9 @@ static int read_ref_at_ent_oldest(unsigned char *osha1, unsigned char *nsha1,
|
|||
*cb->cutoff_tz = tz;
|
||||
if (cb->cutoff_cnt)
|
||||
*cb->cutoff_cnt = cb->reccnt;
|
||||
hashcpy(cb->sha1, osha1);
|
||||
hashcpy(cb->sha1, ooid->hash);
|
||||
if (is_null_sha1(cb->sha1))
|
||||
hashcpy(cb->sha1, nsha1);
|
||||
hashcpy(cb->sha1, noid->hash);
|
||||
/* We just want the first entry */
|
||||
return 1;
|
||||
}
|
||||
|
|
2
refs.h
2
refs.h
|
@ -292,7 +292,7 @@ int delete_reflog(const char *refname);
|
|||
|
||||
/* iterate over reflog entries */
|
||||
typedef int each_reflog_ent_fn(
|
||||
unsigned char *old_sha1, unsigned char *new_sha1,
|
||||
struct object_id *old_oid, struct object_id *new_oid,
|
||||
const char *committer, unsigned long timestamp,
|
||||
int tz, const char *msg, void *cb_data);
|
||||
|
||||
|
|
|
@ -3113,15 +3113,15 @@ static int files_delete_reflog(struct ref_store *ref_store,
|
|||
|
||||
static int show_one_reflog_ent(struct strbuf *sb, each_reflog_ent_fn fn, void *cb_data)
|
||||
{
|
||||
unsigned char osha1[20], nsha1[20];
|
||||
struct object_id ooid, noid;
|
||||
char *email_end, *message;
|
||||
unsigned long timestamp;
|
||||
int tz;
|
||||
|
||||
/* old SP new SP name <email> SP time TAB msg LF */
|
||||
if (sb->len < 83 || sb->buf[sb->len - 1] != '\n' ||
|
||||
get_sha1_hex(sb->buf, osha1) || sb->buf[40] != ' ' ||
|
||||
get_sha1_hex(sb->buf + 41, nsha1) || sb->buf[81] != ' ' ||
|
||||
get_oid_hex(sb->buf, &ooid) || sb->buf[40] != ' ' ||
|
||||
get_oid_hex(sb->buf + 41, &noid) || sb->buf[81] != ' ' ||
|
||||
!(email_end = strchr(sb->buf + 82, '>')) ||
|
||||
email_end[1] != ' ' ||
|
||||
!(timestamp = strtoul(email_end + 2, &message, 10)) ||
|
||||
|
@ -3136,7 +3136,7 @@ static int show_one_reflog_ent(struct strbuf *sb, each_reflog_ent_fn fn, void *c
|
|||
message += 6;
|
||||
else
|
||||
message += 7;
|
||||
return fn(osha1, nsha1, sb->buf + 82, timestamp, tz, message, cb_data);
|
||||
return fn(&ooid, &noid, sb->buf + 82, timestamp, tz, message, cb_data);
|
||||
}
|
||||
|
||||
static char *find_beginning_of_line(char *bob, char *scan)
|
||||
|
@ -3936,10 +3936,10 @@ struct expire_reflog_cb {
|
|||
reflog_expiry_should_prune_fn *should_prune_fn;
|
||||
void *policy_cb;
|
||||
FILE *newlog;
|
||||
unsigned char last_kept_sha1[20];
|
||||
struct object_id last_kept_oid;
|
||||
};
|
||||
|
||||
static int expire_reflog_ent(unsigned char *osha1, unsigned char *nsha1,
|
||||
static int expire_reflog_ent(struct object_id *ooid, struct object_id *noid,
|
||||
const char *email, unsigned long timestamp, int tz,
|
||||
const char *message, void *cb_data)
|
||||
{
|
||||
|
@ -3947,9 +3947,9 @@ static int expire_reflog_ent(unsigned char *osha1, unsigned char *nsha1,
|
|||
struct expire_reflog_policy_cb *policy_cb = cb->policy_cb;
|
||||
|
||||
if (cb->flags & EXPIRE_REFLOGS_REWRITE)
|
||||
osha1 = cb->last_kept_sha1;
|
||||
ooid = &cb->last_kept_oid;
|
||||
|
||||
if ((*cb->should_prune_fn)(osha1, nsha1, email, timestamp, tz,
|
||||
if ((*cb->should_prune_fn)(ooid->hash, noid->hash, email, timestamp, tz,
|
||||
message, policy_cb)) {
|
||||
if (!cb->newlog)
|
||||
printf("would prune %s", message);
|
||||
|
@ -3958,9 +3958,9 @@ static int expire_reflog_ent(unsigned char *osha1, unsigned char *nsha1,
|
|||
} else {
|
||||
if (cb->newlog) {
|
||||
fprintf(cb->newlog, "%s %s %s %lu %+05d\t%s",
|
||||
sha1_to_hex(osha1), sha1_to_hex(nsha1),
|
||||
oid_to_hex(ooid), oid_to_hex(noid),
|
||||
email, timestamp, tz, message);
|
||||
hashcpy(cb->last_kept_sha1, nsha1);
|
||||
oidcpy(&cb->last_kept_oid, noid);
|
||||
}
|
||||
if (cb->flags & EXPIRE_REFLOGS_VERBOSE)
|
||||
printf("keep %s", message);
|
||||
|
@ -4047,14 +4047,14 @@ static int files_reflog_expire(struct ref_store *ref_store,
|
|||
*/
|
||||
int update = (flags & EXPIRE_REFLOGS_UPDATE_REF) &&
|
||||
!(type & REF_ISSYMREF) &&
|
||||
!is_null_sha1(cb.last_kept_sha1);
|
||||
!is_null_oid(&cb.last_kept_oid);
|
||||
|
||||
if (close_lock_file(&reflog_lock)) {
|
||||
status |= error("couldn't write %s: %s", log_file,
|
||||
strerror(errno));
|
||||
} else if (update &&
|
||||
(write_in_full(get_lock_file_fd(lock->lk),
|
||||
sha1_to_hex(cb.last_kept_sha1), 40) != 40 ||
|
||||
oid_to_hex(&cb.last_kept_oid), GIT_SHA1_HEXSZ) != GIT_SHA1_HEXSZ ||
|
||||
write_str_in_full(get_lock_file_fd(lock->lk), "\n") != 1 ||
|
||||
close_ref(lock) < 0)) {
|
||||
status |= error("couldn't write %s",
|
||||
|
|
12
revision.c
12
revision.c
|
@ -1196,11 +1196,11 @@ static void handle_refs(const char *submodule, struct rev_info *revs, unsigned f
|
|||
for_each(submodule, handle_one_ref, &cb);
|
||||
}
|
||||
|
||||
static void handle_one_reflog_commit(unsigned char *sha1, void *cb_data)
|
||||
static void handle_one_reflog_commit(struct object_id *oid, void *cb_data)
|
||||
{
|
||||
struct all_refs_cb *cb = cb_data;
|
||||
if (!is_null_sha1(sha1)) {
|
||||
struct object *o = parse_object(sha1);
|
||||
if (!is_null_oid(oid)) {
|
||||
struct object *o = parse_object(oid->hash);
|
||||
if (o) {
|
||||
o->flags |= cb->all_flags;
|
||||
/* ??? CMDLINEFLAGS ??? */
|
||||
|
@ -1214,12 +1214,12 @@ static void handle_one_reflog_commit(unsigned char *sha1, void *cb_data)
|
|||
}
|
||||
}
|
||||
|
||||
static int handle_one_reflog_ent(unsigned char *osha1, unsigned char *nsha1,
|
||||
static int handle_one_reflog_ent(struct object_id *ooid, struct object_id *noid,
|
||||
const char *email, unsigned long timestamp, int tz,
|
||||
const char *message, void *cb_data)
|
||||
{
|
||||
handle_one_reflog_commit(osha1, cb_data);
|
||||
handle_one_reflog_commit(nsha1, cb_data);
|
||||
handle_one_reflog_commit(ooid, cb_data);
|
||||
handle_one_reflog_commit(noid, cb_data);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
@ -1051,7 +1051,7 @@ struct grab_nth_branch_switch_cbdata {
|
|||
struct strbuf buf;
|
||||
};
|
||||
|
||||
static int grab_nth_branch_switch(unsigned char *osha1, unsigned char *nsha1,
|
||||
static int grab_nth_branch_switch(struct object_id *ooid, struct object_id *noid,
|
||||
const char *email, unsigned long timestamp, int tz,
|
||||
const char *message, void *cb_data)
|
||||
{
|
||||
|
|
|
@ -1373,7 +1373,7 @@ struct grab_1st_switch_cbdata {
|
|||
unsigned char nsha1[20];
|
||||
};
|
||||
|
||||
static int grab_1st_switch(unsigned char *osha1, unsigned char *nsha1,
|
||||
static int grab_1st_switch(struct object_id *ooid, struct object_id *noid,
|
||||
const char *email, unsigned long timestamp, int tz,
|
||||
const char *message, void *cb_data)
|
||||
{
|
||||
|
@ -1387,13 +1387,13 @@ static int grab_1st_switch(unsigned char *osha1, unsigned char *nsha1,
|
|||
return 0;
|
||||
target += strlen(" to ");
|
||||
strbuf_reset(&cb->buf);
|
||||
hashcpy(cb->nsha1, nsha1);
|
||||
hashcpy(cb->nsha1, noid->hash);
|
||||
end = strchrnul(target, '\n');
|
||||
strbuf_add(&cb->buf, target, end - target);
|
||||
if (!strcmp(cb->buf.buf, "HEAD")) {
|
||||
/* HEAD is relative. Resolve it to the right reflog entry. */
|
||||
strbuf_reset(&cb->buf);
|
||||
strbuf_add_unique_abbrev(&cb->buf, nsha1, DEFAULT_ABBREV);
|
||||
strbuf_add_unique_abbrev(&cb->buf, noid->hash, DEFAULT_ABBREV);
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
|
Загрузка…
Ссылка в новой задаче