зеркало из https://github.com/microsoft/git.git
tree-walk: convert tree_entry_extract() to use struct object_id
Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Родитель
7d924c9139
Коммит
ce6663a9da
6
fsck.c
6
fsck.c
|
@ -450,11 +450,11 @@ static int fsck_tree(struct tree *item, struct fsck_options *options)
|
|||
while (desc.size) {
|
||||
unsigned mode;
|
||||
const char *name;
|
||||
const unsigned char *sha1;
|
||||
const struct object_id *oid;
|
||||
|
||||
sha1 = tree_entry_extract(&desc, &name, &mode);
|
||||
oid = tree_entry_extract(&desc, &name, &mode);
|
||||
|
||||
has_null_sha1 |= is_null_sha1(sha1);
|
||||
has_null_sha1 |= is_null_oid(oid);
|
||||
has_full_path |= !!strchr(name, '/');
|
||||
has_empty_name |= !*name;
|
||||
has_dot |= !strcmp(name, ".");
|
||||
|
|
|
@ -131,14 +131,14 @@ static void match_trees(const unsigned char *hash1,
|
|||
|
||||
while (one.size) {
|
||||
const char *path;
|
||||
const unsigned char *elem;
|
||||
const struct object_id *elem;
|
||||
unsigned mode;
|
||||
int score;
|
||||
|
||||
elem = tree_entry_extract(&one, &path, &mode);
|
||||
if (!S_ISDIR(mode))
|
||||
goto next;
|
||||
score = score_trees(elem, hash2);
|
||||
score = score_trees(elem->hash, hash2);
|
||||
if (*best_score < score) {
|
||||
free(*best_match);
|
||||
*best_match = xstrfmt("%s%s", base, path);
|
||||
|
@ -146,7 +146,7 @@ static void match_trees(const unsigned char *hash1,
|
|||
}
|
||||
if (recurse_limit) {
|
||||
char *newbase = xstrfmt("%s%s/", base, path);
|
||||
match_trees(elem, hash2, best_score, best_match,
|
||||
match_trees(elem->hash, hash2, best_score, best_match,
|
||||
newbase, recurse_limit - 1);
|
||||
free(newbase);
|
||||
}
|
||||
|
@ -191,15 +191,15 @@ static int splice_tree(const unsigned char *hash1,
|
|||
while (desc.size) {
|
||||
const char *name;
|
||||
unsigned mode;
|
||||
const unsigned char *sha1;
|
||||
const struct object_id *oid;
|
||||
|
||||
sha1 = tree_entry_extract(&desc, &name, &mode);
|
||||
oid = tree_entry_extract(&desc, &name, &mode);
|
||||
if (strlen(name) == toplen &&
|
||||
!memcmp(name, prefix, toplen)) {
|
||||
if (!S_ISDIR(mode))
|
||||
die("entry %s in tree %s is not a tree",
|
||||
name, sha1_to_hex(hash1));
|
||||
rewrite_here = (unsigned char *) sha1;
|
||||
rewrite_here = (unsigned char *) oid->hash;
|
||||
break;
|
||||
}
|
||||
update_tree_entry(&desc);
|
||||
|
|
|
@ -183,7 +183,7 @@ static struct combine_diff_path *emit_path(struct combine_diff_path *p,
|
|||
|
||||
if (t) {
|
||||
/* path present in resulting tree */
|
||||
sha1 = tree_entry_extract(t, &path, &mode);
|
||||
sha1 = tree_entry_extract(t, &path, &mode)->hash;
|
||||
pathlen = tree_entry_len(&t->entry);
|
||||
isdir = S_ISDIR(mode);
|
||||
} else {
|
||||
|
|
10
tree-walk.c
10
tree-walk.c
|
@ -433,10 +433,10 @@ static int find_tree_entry(struct tree_desc *t, const char *name, unsigned char
|
|||
int namelen = strlen(name);
|
||||
while (t->size) {
|
||||
const char *entry;
|
||||
const unsigned char *sha1;
|
||||
const struct object_id *oid;
|
||||
int entrylen, cmp;
|
||||
|
||||
sha1 = tree_entry_extract(t, &entry, mode);
|
||||
oid = tree_entry_extract(t, &entry, mode);
|
||||
entrylen = tree_entry_len(&t->entry);
|
||||
update_tree_entry(t);
|
||||
if (entrylen > namelen)
|
||||
|
@ -447,7 +447,7 @@ static int find_tree_entry(struct tree_desc *t, const char *name, unsigned char
|
|||
if (cmp < 0)
|
||||
break;
|
||||
if (entrylen == namelen) {
|
||||
hashcpy(result, sha1);
|
||||
hashcpy(result, oid->hash);
|
||||
return 0;
|
||||
}
|
||||
if (name[entrylen] != '/')
|
||||
|
@ -455,10 +455,10 @@ static int find_tree_entry(struct tree_desc *t, const char *name, unsigned char
|
|||
if (!S_ISDIR(*mode))
|
||||
break;
|
||||
if (++entrylen == namelen) {
|
||||
hashcpy(result, sha1);
|
||||
hashcpy(result, oid->hash);
|
||||
return 0;
|
||||
}
|
||||
return get_tree_entry(sha1, name + entrylen, result, mode);
|
||||
return get_tree_entry(oid->hash, name + entrylen, result, mode);
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
|
|
@ -13,11 +13,11 @@ struct tree_desc {
|
|||
unsigned int size;
|
||||
};
|
||||
|
||||
static inline const unsigned char *tree_entry_extract(struct tree_desc *desc, const char **pathp, unsigned int *modep)
|
||||
static inline const struct object_id *tree_entry_extract(struct tree_desc *desc, const char **pathp, unsigned int *modep)
|
||||
{
|
||||
*pathp = desc->entry.path;
|
||||
*modep = desc->entry.mode;
|
||||
return desc->entry.oid->hash;
|
||||
return desc->entry.oid;
|
||||
}
|
||||
|
||||
static inline int tree_entry_len(const struct name_entry *ne)
|
||||
|
|
Загрузка…
Ссылка в новой задаче