summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--fetch.c19
1 files changed, 8 insertions, 11 deletions
diff --git a/fetch.c b/fetch.c
index 71c4f41a66..6ee61616dc 100644
--- a/fetch.c
+++ b/fetch.c
@@ -62,7 +62,8 @@ static int process_tree(struct tree *tree)
return 0;
}
-struct commit_list *complete = NULL;
+#define COMPLETE 1U
+static struct commit_list *complete = NULL;
static int process_commit(struct commit *commit)
{
@@ -70,11 +71,11 @@ static int process_commit(struct commit *commit)
return -1;
while (complete && complete->item->date >= commit->date) {
- pop_most_recent_commit(&complete, 1);
+ pop_most_recent_commit(&complete, COMPLETE);
}
- if (commit->object.flags & 1)
+ if (commit->object.flags & COMPLETE)
return 0;
memcpy(current_commit_sha1, commit->object.sha1, 20);
@@ -190,14 +191,10 @@ static int interpret_target(char *target, unsigned char *sha1)
static int mark_complete(const char *path, const unsigned char *sha1)
{
- struct object *obj = parse_object(sha1);
- while (obj->type == tag_type) {
- obj = ((struct tag *) obj)->tagged;
- parse_object(obj->sha1);
- }
- if (obj->type == commit_type) {
- obj->flags |= 1;
- insert_by_date((struct commit *) obj, &complete);
+ struct commit *commit = lookup_commit_reference_gently(sha1, 1);
+ if (commit) {
+ commit->object.flags |= COMPLETE;
+ insert_by_date(commit, &complete);
}
return 0;
}