提交 454fbbcd 编写于 作者: L Linus Torvalds

git-rev-list: allow missing objects when the parent is marked UNINTERESTING

We still want the "top-most" uninteresting object to exist, so that we
know that we have reached it.
上级 167a4a33
......@@ -203,6 +203,8 @@ static void mark_tree_uninteresting(struct tree *tree)
if (obj->flags & UNINTERESTING)
return;
obj->flags |= UNINTERESTING;
if (!has_sha1_file(obj->sha1))
return;
if (parse_tree(tree) < 0)
die("bad tree %s", sha1_to_hex(obj->sha1));
entry = tree->entries;
......@@ -224,6 +226,17 @@ static void mark_parents_uninteresting(struct commit *commit)
while (parents) {
struct commit *commit = parents->item;
commit->object.flags |= UNINTERESTING;
/*
* A missing commit is ok iff its parent is marked
* uninteresting.
*
* We just mark such a thing parsed, so that when
* it is popped next time around, we won't be trying
* to parse it and get an error.
*/
if (!has_sha1_file(commit->object.sha1))
commit->object.parsed = 1;
parents = parents->next;
}
}
......@@ -371,6 +384,8 @@ static struct commit *get_commit_reference(const char *name, unsigned int flags)
object->flags |= flags;
if (parse_commit(commit) < 0)
die("unable to parse commit %s", name);
if (flags & UNINTERESTING)
mark_parents_uninteresting(commit);
return commit;
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册