mirror of
https://github.com/git/git.git
synced 2024-11-27 20:14:30 +08:00
upload-pack: make reachable() more generic
In anticipation of moving the reachable() method to commit-reach.c, modify the prototype to be more generic to flags known outside of upload-pack.c. Also rename 'want' to 'from' to make the statement more clear outside of the context of haves/wants negotiation. Signed-off-by: Derrick Stolee <dstolee@microsoft.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
920f93ca1c
commit
f044bb49ad
@ -336,17 +336,18 @@ static int got_oid(const char *hex, struct object_id *oid)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int reachable(struct commit *want)
|
static int reachable(struct commit *from, unsigned int with_flag,
|
||||||
|
unsigned int assign_flag)
|
||||||
{
|
{
|
||||||
struct prio_queue work = { compare_commits_by_commit_date };
|
struct prio_queue work = { compare_commits_by_commit_date };
|
||||||
|
|
||||||
prio_queue_put(&work, want);
|
prio_queue_put(&work, from);
|
||||||
while (work.nr) {
|
while (work.nr) {
|
||||||
struct commit_list *list;
|
struct commit_list *list;
|
||||||
struct commit *commit = prio_queue_get(&work);
|
struct commit *commit = prio_queue_get(&work);
|
||||||
|
|
||||||
if (commit->object.flags & THEY_HAVE) {
|
if (commit->object.flags & with_flag) {
|
||||||
want->object.flags |= COMMON_KNOWN;
|
from->object.flags |= assign_flag;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if (!commit->object.parsed)
|
if (!commit->object.parsed)
|
||||||
@ -362,10 +363,10 @@ static int reachable(struct commit *want)
|
|||||||
prio_queue_put(&work, parent);
|
prio_queue_put(&work, parent);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
want->object.flags |= REACHABLE;
|
from->object.flags |= REACHABLE;
|
||||||
clear_commit_marks(want, REACHABLE);
|
clear_commit_marks(from, REACHABLE);
|
||||||
clear_prio_queue(&work);
|
clear_prio_queue(&work);
|
||||||
return (want->object.flags & COMMON_KNOWN);
|
return (from->object.flags & assign_flag);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int ok_to_give_up(void)
|
static int ok_to_give_up(void)
|
||||||
@ -390,7 +391,7 @@ static int ok_to_give_up(void)
|
|||||||
want_obj.objects[i].item->flags |= COMMON_KNOWN;
|
want_obj.objects[i].item->flags |= COMMON_KNOWN;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if (!reachable((struct commit *)want))
|
if (!reachable((struct commit *)want, THEY_HAVE, COMMON_KNOWN))
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
return 1;
|
return 1;
|
||||||
|
Loading…
Reference in New Issue
Block a user