git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: git pull takes ~8 seconds on up-to-date Linux git tree

From
Junio C Hamano <gitster@pobox.com>
Date
Oct 4, 2012, 21:16 UTC
Message-ID
<7v391ux7im.fsf@alter.siamese.dyndns.org>
In-Reply-To
<20121004184314.GA15389@sigill.intra.peff.net>
Jeff King <peff@peff.net> writes:
Show 19 quoted lines
> On Thu, Oct 04, 2012 at 04:14:54PM +0200, Markus Trippelsdorf wrote:
>
>> with current trunk I get the following on an up-to-date Linux tree:
>> 
>> markus@x4 linux % time git pull
>> Already up-to-date.
>> git pull  7.84s user 0.26s system 92% cpu 8.743 total
>> 
>> git version 1.7.12 is much quicker:
>> 
>> markus@x4 linux % time git pull
>> Already up-to-date.
>> git pull  0.10s user 0.02s system 16% cpu 0.740 total
>
> Yikes. I can easily reproduce here. Bisecting between master and
> v1.7.12 gives a curious result: the slowdown first occurs with the merge
> commit 34f5130 (Merge branch 'jc/merge-bases', 2012-09-11). But neither
> of its parents is slow. I don't see anything obviously suspect in the
> merge, though.
I think the following is likely to be the correct solution to this.
 commit.c | 3 +++
 1 file changed, 3 insertions(+)
diff --git i/commit.c w/commit.c
index 0246767..e1dd5b9 100644
--- i/commit.c
+++ w/commit.c
@@ -733,6 +733,9 @@ static int remove_redundant(struct commit **array, int cnt)
 	int *filled_index;
 	int i, j, filled;
 
+	if (cnt < 2)
+		return cnt;
+
 	work = xcalloc(cnt, sizeof(*work));
 	redundant = xcalloc(cnt, 1);
 	filled_index = xmalloc(sizeof(*filled_index) * (cnt - 1));
Previous: Junio C HamanoNext: Junio C Hamano
Message 7 of 13 in “git pull takes ~8 seconds on up-to-date Linux git tree”
  1. Markus TrippelsdorfOct 4, 2012
  2. Jeff KingOct 4, 2012
  3. Markus TrippelsdorfOct 4, 2012
  4. Junio C HamanoOct 4, 2012
  5. Junio C HamanoOct 4, 2012
  6. Junio C HamanoOct 4, 2012
  7. Junio C HamanoOct 4, 2012
  8. Junio C HamanoOct 4, 2012
  9. Junio C HamanoOct 4, 2012
  10. Junio C HamanoOct 5, 2012
  11. Jeff KingOct 5, 2012
  12. Junio C HamanoOct 6, 2012
  13. Jeff KingOct 6, 2012

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.