Merge branch 'nd/fetch-into-shallow'
When there is no sufficient overlap between old and new history during a fetch into a shallow repository, we unnecessarily sent objects the sending side knows the receiving end has. * nd/fetch-into-shallow: Add testcase for needless objects during a shallow fetch list-objects: mark more commits as edges in mark_edges_uninteresting list-objects: reduce one argument in mark_edges_uninteresting upload-pack: delegate rev walking in shallow fetch to pack-objects shallow: add setup_temporary_shallow() shallow: only add shallow graft points to new shallow file move setup_alternate_shallow and write_shallow_commits to shallow.c
This commit is contained in:
@ -144,19 +144,35 @@ static void mark_edge_parents_uninteresting(struct commit *commit,
|
||||
}
|
||||
}
|
||||
|
||||
void mark_edges_uninteresting(struct commit_list *list,
|
||||
struct rev_info *revs,
|
||||
show_edge_fn show_edge)
|
||||
void mark_edges_uninteresting(struct rev_info *revs, show_edge_fn show_edge)
|
||||
{
|
||||
for ( ; list; list = list->next) {
|
||||
struct commit_list *list;
|
||||
int i;
|
||||
|
||||
for (list = revs->commits; list; list = list->next) {
|
||||
struct commit *commit = list->item;
|
||||
|
||||
if (commit->object.flags & UNINTERESTING) {
|
||||
mark_tree_uninteresting(commit->tree);
|
||||
if (revs->edge_hint && !(commit->object.flags & SHOWN)) {
|
||||
commit->object.flags |= SHOWN;
|
||||
show_edge(commit);
|
||||
}
|
||||
continue;
|
||||
}
|
||||
mark_edge_parents_uninteresting(commit, revs, show_edge);
|
||||
}
|
||||
for (i = 0; i < revs->cmdline.nr; i++) {
|
||||
struct object *obj = revs->cmdline.rev[i].item;
|
||||
struct commit *commit = (struct commit *)obj;
|
||||
if (obj->type != OBJ_COMMIT || !(obj->flags & UNINTERESTING))
|
||||
continue;
|
||||
mark_tree_uninteresting(commit->tree);
|
||||
if (revs->edge_hint && !(obj->flags & SHOWN)) {
|
||||
obj->flags |= SHOWN;
|
||||
show_edge(commit);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void add_pending_tree(struct rev_info *revs, struct tree *tree)
|
||||
|
||||
Reference in New Issue
Block a user