зеркало из https://github.com/microsoft/git.git
revision.c: reduce implicit dependency the_repository
Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Родитель
2abf350385
Коммит
b3c7eef9b0
|
@ -196,7 +196,7 @@ static void mark_edge_parents_uninteresting(struct commit *commit,
|
|||
struct commit *parent = parents->item;
|
||||
if (!(parent->object.flags & UNINTERESTING))
|
||||
continue;
|
||||
mark_tree_uninteresting(get_commit_tree(parent));
|
||||
mark_tree_uninteresting(revs->repo, get_commit_tree(parent));
|
||||
if (revs->edge_hint && !(parent->object.flags & SHOWN)) {
|
||||
parent->object.flags |= SHOWN;
|
||||
show_edge(parent);
|
||||
|
@ -213,7 +213,8 @@ void mark_edges_uninteresting(struct rev_info *revs, show_edge_fn show_edge)
|
|||
struct commit *commit = list->item;
|
||||
|
||||
if (commit->object.flags & UNINTERESTING) {
|
||||
mark_tree_uninteresting(get_commit_tree(commit));
|
||||
mark_tree_uninteresting(revs->repo,
|
||||
get_commit_tree(commit));
|
||||
if (revs->edge_hint_aggressive && !(commit->object.flags & SHOWN)) {
|
||||
commit->object.flags |= SHOWN;
|
||||
show_edge(commit);
|
||||
|
@ -228,7 +229,8 @@ void mark_edges_uninteresting(struct rev_info *revs, show_edge_fn show_edge)
|
|||
struct commit *commit = (struct commit *)obj;
|
||||
if (obj->type != OBJ_COMMIT || !(obj->flags & UNINTERESTING))
|
||||
continue;
|
||||
mark_tree_uninteresting(get_commit_tree(commit));
|
||||
mark_tree_uninteresting(revs->repo,
|
||||
get_commit_tree(commit));
|
||||
if (!(obj->flags & SHOWN)) {
|
||||
obj->flags |= SHOWN;
|
||||
show_edge(commit);
|
||||
|
|
44
revision.c
44
revision.c
|
@ -51,7 +51,8 @@ static void mark_blob_uninteresting(struct blob *blob)
|
|||
blob->object.flags |= UNINTERESTING;
|
||||
}
|
||||
|
||||
static void mark_tree_contents_uninteresting(struct tree *tree)
|
||||
static void mark_tree_contents_uninteresting(struct repository *r,
|
||||
struct tree *tree)
|
||||
{
|
||||
struct tree_desc desc;
|
||||
struct name_entry entry;
|
||||
|
@ -63,10 +64,10 @@ static void mark_tree_contents_uninteresting(struct tree *tree)
|
|||
while (tree_entry(&desc, &entry)) {
|
||||
switch (object_type(entry.mode)) {
|
||||
case OBJ_TREE:
|
||||
mark_tree_uninteresting(lookup_tree(the_repository, entry.oid));
|
||||
mark_tree_uninteresting(r, lookup_tree(r, entry.oid));
|
||||
break;
|
||||
case OBJ_BLOB:
|
||||
mark_blob_uninteresting(lookup_blob(the_repository, entry.oid));
|
||||
mark_blob_uninteresting(lookup_blob(r, entry.oid));
|
||||
break;
|
||||
default:
|
||||
/* Subproject commit - not in this repository */
|
||||
|
@ -81,7 +82,7 @@ static void mark_tree_contents_uninteresting(struct tree *tree)
|
|||
free_tree_buffer(tree);
|
||||
}
|
||||
|
||||
void mark_tree_uninteresting(struct tree *tree)
|
||||
void mark_tree_uninteresting(struct repository *r, struct tree *tree)
|
||||
{
|
||||
struct object *obj;
|
||||
|
||||
|
@ -92,7 +93,7 @@ void mark_tree_uninteresting(struct tree *tree)
|
|||
if (obj->flags & UNINTERESTING)
|
||||
return;
|
||||
obj->flags |= UNINTERESTING;
|
||||
mark_tree_contents_uninteresting(tree);
|
||||
mark_tree_contents_uninteresting(r, tree);
|
||||
}
|
||||
|
||||
struct commit_stack {
|
||||
|
@ -198,7 +199,7 @@ void add_head_to_pending(struct rev_info *revs)
|
|||
struct object *obj;
|
||||
if (get_oid("HEAD", &oid))
|
||||
return;
|
||||
obj = parse_object(the_repository, &oid);
|
||||
obj = parse_object(revs->repo, &oid);
|
||||
if (!obj)
|
||||
return;
|
||||
add_pending_object(revs, obj, "HEAD");
|
||||
|
@ -210,7 +211,7 @@ static struct object *get_reference(struct rev_info *revs, const char *name,
|
|||
{
|
||||
struct object *object;
|
||||
|
||||
object = parse_object(the_repository, oid);
|
||||
object = parse_object(revs->repo, oid);
|
||||
if (!object) {
|
||||
if (revs->ignore_missing)
|
||||
return object;
|
||||
|
@ -247,7 +248,7 @@ static struct commit *handle_commit(struct rev_info *revs,
|
|||
add_pending_object(revs, object, tag->tag);
|
||||
if (!tag->tagged)
|
||||
die("bad tag");
|
||||
object = parse_object(the_repository, &tag->tagged->oid);
|
||||
object = parse_object(revs->repo, &tag->tagged->oid);
|
||||
if (!object) {
|
||||
if (revs->ignore_missing_links || (flags & UNINTERESTING))
|
||||
return NULL;
|
||||
|
@ -297,7 +298,7 @@ static struct commit *handle_commit(struct rev_info *revs,
|
|||
if (!revs->tree_objects)
|
||||
return NULL;
|
||||
if (flags & UNINTERESTING) {
|
||||
mark_tree_contents_uninteresting(tree);
|
||||
mark_tree_contents_uninteresting(revs->repo, tree);
|
||||
return NULL;
|
||||
}
|
||||
add_pending_object_with_path(revs, object, name, mode, path);
|
||||
|
@ -1253,7 +1254,7 @@ static void handle_one_reflog_commit(struct object_id *oid, void *cb_data)
|
|||
{
|
||||
struct all_refs_cb *cb = cb_data;
|
||||
if (!is_null_oid(oid)) {
|
||||
struct object *o = parse_object(the_repository, oid);
|
||||
struct object *o = parse_object(cb->all_revs->repo, oid);
|
||||
if (o) {
|
||||
o->flags |= cb->all_flags;
|
||||
/* ??? CMDLINEFLAGS ??? */
|
||||
|
@ -1312,7 +1313,7 @@ void add_reflogs_to_pending(struct rev_info *revs, unsigned flags)
|
|||
|
||||
cb.all_revs = revs;
|
||||
cb.all_flags = flags;
|
||||
cb.refs = get_main_ref_store(the_repository);
|
||||
cb.refs = get_main_ref_store(revs->repo);
|
||||
for_each_reflog(handle_one_reflog, &cb);
|
||||
|
||||
if (!revs->single_worktree)
|
||||
|
@ -1326,7 +1327,7 @@ static void add_cache_tree(struct cache_tree *it, struct rev_info *revs,
|
|||
int i;
|
||||
|
||||
if (it->entry_count >= 0) {
|
||||
struct tree *tree = lookup_tree(the_repository, &it->oid);
|
||||
struct tree *tree = lookup_tree(revs->repo, &it->oid);
|
||||
add_pending_object_with_path(revs, &tree->object, "",
|
||||
040000, path->buf);
|
||||
}
|
||||
|
@ -1352,7 +1353,7 @@ static void do_add_index_objects_to_pending(struct rev_info *revs,
|
|||
if (S_ISGITLINK(ce->ce_mode))
|
||||
continue;
|
||||
|
||||
blob = lookup_blob(the_repository, &ce->oid);
|
||||
blob = lookup_blob(revs->repo, &ce->oid);
|
||||
if (!blob)
|
||||
die("unable to add index blob to traversal");
|
||||
add_pending_object_with_path(revs, &blob->object, "",
|
||||
|
@ -1585,8 +1586,8 @@ static int handle_dotdot_1(const char *arg, char *dotdot,
|
|||
*dotdot = '\0';
|
||||
}
|
||||
|
||||
a_obj = parse_object(the_repository, &a_oid);
|
||||
b_obj = parse_object(the_repository, &b_oid);
|
||||
a_obj = parse_object(revs->repo, &a_oid);
|
||||
b_obj = parse_object(revs->repo, &b_oid);
|
||||
if (!a_obj || !b_obj)
|
||||
return dotdot_missing(arg, dotdot, revs, symmetric);
|
||||
|
||||
|
@ -1599,8 +1600,8 @@ static int handle_dotdot_1(const char *arg, char *dotdot,
|
|||
struct commit *a, *b;
|
||||
struct commit_list *exclude;
|
||||
|
||||
a = lookup_commit_reference(the_repository, &a_obj->oid);
|
||||
b = lookup_commit_reference(the_repository, &b_obj->oid);
|
||||
a = lookup_commit_reference(revs->repo, &a_obj->oid);
|
||||
b = lookup_commit_reference(revs->repo, &b_obj->oid);
|
||||
if (!a || !b)
|
||||
return dotdot_missing(arg, dotdot, revs, symmetric);
|
||||
|
||||
|
@ -2208,7 +2209,7 @@ static int handle_revision_pseudo_opt(const char *submodule,
|
|||
BUG("--single-worktree cannot be used together with submodule");
|
||||
refs = get_submodule_ref_store(submodule);
|
||||
} else
|
||||
refs = get_main_ref_store(the_repository);
|
||||
refs = get_main_ref_store(revs->repo);
|
||||
|
||||
/*
|
||||
* NOTE!
|
||||
|
@ -2889,9 +2890,10 @@ void reset_revision_walk(void)
|
|||
static int mark_uninteresting(const struct object_id *oid,
|
||||
struct packed_git *pack,
|
||||
uint32_t pos,
|
||||
void *unused)
|
||||
void *cb)
|
||||
{
|
||||
struct object *o = parse_object(the_repository, oid);
|
||||
struct rev_info *revs = cb;
|
||||
struct object *o = parse_object(revs->repo, oid);
|
||||
o->flags |= UNINTERESTING | SEEN;
|
||||
return 0;
|
||||
}
|
||||
|
@ -2924,7 +2926,7 @@ int prepare_revision_walk(struct rev_info *revs)
|
|||
revs->treesame.name = "treesame";
|
||||
|
||||
if (revs->exclude_promisor_objects) {
|
||||
for_each_packed_object(mark_uninteresting, NULL,
|
||||
for_each_packed_object(mark_uninteresting, revs,
|
||||
FOR_EACH_OBJECT_PROMISOR_ONLY);
|
||||
}
|
||||
|
||||
|
|
|
@ -280,7 +280,7 @@ void put_revision_mark(const struct rev_info *revs,
|
|||
const struct commit *commit);
|
||||
|
||||
void mark_parents_uninteresting(struct commit *commit);
|
||||
void mark_tree_uninteresting(struct tree *tree);
|
||||
void mark_tree_uninteresting(struct repository *r, struct tree *tree);
|
||||
|
||||
void show_object_with_name(FILE *, struct object *, const char *);
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче