Continue traversal when rev-list --unpacked finds a packed commit.
When getting the list of all unpacked objects by walking the commit history, we would stop traversal whenever we hit a packed commit. However the fact that we found a packed commit does not guarantee that all previous commits are also packed. As a result the commit walkers did not show all reachable unpacked objects. Signed-off-by: Jan Harkes <jaharkes@cs.cmu.edu> Signed-off-by: Junio C Hamano <junkio@cox.net>
This commit is contained in:

committed by
Junio C Hamano

parent
173a9cbe70
commit
744f498522
14
revision.c
14
revision.c
@ -418,9 +418,6 @@ static void limit_list(struct rev_info *revs)
|
|||||||
|
|
||||||
if (revs->max_age != -1 && (commit->date < revs->max_age))
|
if (revs->max_age != -1 && (commit->date < revs->max_age))
|
||||||
obj->flags |= UNINTERESTING;
|
obj->flags |= UNINTERESTING;
|
||||||
if (revs->unpacked &&
|
|
||||||
has_sha1_pack(obj->sha1, revs->ignore_packed))
|
|
||||||
obj->flags |= UNINTERESTING;
|
|
||||||
add_parents_to_list(revs, commit, &list);
|
add_parents_to_list(revs, commit, &list);
|
||||||
if (obj->flags & UNINTERESTING) {
|
if (obj->flags & UNINTERESTING) {
|
||||||
mark_parents_uninteresting(commit);
|
mark_parents_uninteresting(commit);
|
||||||
@ -1142,17 +1139,18 @@ struct commit *get_revision(struct rev_info *revs)
|
|||||||
* that we'd otherwise have done in limit_list().
|
* that we'd otherwise have done in limit_list().
|
||||||
*/
|
*/
|
||||||
if (!revs->limited) {
|
if (!revs->limited) {
|
||||||
if ((revs->unpacked &&
|
if (revs->max_age != -1 &&
|
||||||
has_sha1_pack(commit->object.sha1,
|
(commit->date < revs->max_age))
|
||||||
revs->ignore_packed)) ||
|
|
||||||
(revs->max_age != -1 &&
|
|
||||||
(commit->date < revs->max_age)))
|
|
||||||
continue;
|
continue;
|
||||||
add_parents_to_list(revs, commit, &revs->commits);
|
add_parents_to_list(revs, commit, &revs->commits);
|
||||||
}
|
}
|
||||||
if (commit->object.flags & SHOWN)
|
if (commit->object.flags & SHOWN)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
|
if (revs->unpacked && has_sha1_pack(commit->object.sha1,
|
||||||
|
revs->ignore_packed))
|
||||||
|
continue;
|
||||||
|
|
||||||
/* We want to show boundary commits only when their
|
/* We want to show boundary commits only when their
|
||||||
* children are shown. When path-limiter is in effect,
|
* children are shown. When path-limiter is in effect,
|
||||||
* rewrite_parents() drops some commits from getting shown,
|
* rewrite_parents() drops some commits from getting shown,
|
||||||
|
Reference in New Issue
Block a user