Browse Source

Merge branch 'jc/merge-bases-paint-fix'

"git fmt-merge-msg" (an internal helper reduce_heads() it uses) had
a severe performance regression; an empty "git pull" took forever to
finish as the result.

* jc/merge-bases-paint-fix:
  paint_down_to_common(): parse commit before relying on its timestamp
maint
Junio C Hamano 12 years ago
parent
commit
683a820d51
  1. 5
      commit.c

5
commit.c

@ -609,6 +609,7 @@ static struct commit *interesting(struct commit_list *list) @@ -609,6 +609,7 @@ static struct commit *interesting(struct commit_list *list)
return NULL;
}

/* all input commits in one and twos[] must have been parsed! */
static struct commit_list *paint_down_to_common(struct commit *one, int n, struct commit **twos)
{
struct commit_list *list = NULL;
@ -617,6 +618,8 @@ static struct commit_list *paint_down_to_common(struct commit *one, int n, struc @@ -617,6 +618,8 @@ static struct commit_list *paint_down_to_common(struct commit *one, int n, struc

one->object.flags |= PARENT1;
commit_list_insert_by_date(one, &list);
if (!n)
return list;
for (i = 0; i < n; i++) {
twos[i]->object.flags |= PARENT2;
commit_list_insert_by_date(twos[i], &list);
@ -737,6 +740,8 @@ static int remove_redundant(struct commit **array, int cnt) @@ -737,6 +740,8 @@ static int remove_redundant(struct commit **array, int cnt)
redundant = xcalloc(cnt, 1);
filled_index = xmalloc(sizeof(*filled_index) * (cnt - 1));

for (i = 0; i < cnt; i++)
parse_commit(array[i]);
for (i = 0; i < cnt; i++) {
struct commit_list *common;


Loading…
Cancel
Save