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

Re: best practices against long git rebase times?

From
Jeff King <peff@peff.net>
Date
Dec 7, 2015, 21:02 UTC
Message-ID
<20151207210212.GF30203@sigill.intra.peff.net>
In-Reply-To
<20151206164345.GH22288@inner.h.apk.li>
On Sun, Dec 06, 2015 at 05:43:45PM +0100, Andreas Krey wrote:
Show 11 quoted lines
> On Fri, 04 Dec 2015 15:31:03 +0000, John Keeping wrote:
> ...
> > I'm pretty sure that you're right and the cherry-pick analysis is where
> > the time is spent.
> 
> But I'm pretty surprised as to the amount of CPU time that goes there.
> 
> I'm now rebasing a single commit with a single blank line added,
> and for 3000 new commits to rebase over (with 64 MByte of git log -
> for them) it takes twelve minutes, or about for commits per second,
> and all user CPU, no I/O. It's pretty linear in number of commits, too.

You're computing the patch against the parent for each of those 3000 commits (to get a hash of it to compare against the single hash on the other side). Twelve minutes sounds long, but if you have a really gigantic tree, it might not be unreasonable.

You can also try compiling with "make XDL_FAST_HASH=" (i.e., setting that option to the empty string). Last year I found there were some pretty suboptimal corner cases, and you may be hitting one (we should probably turn that option off by default; I got stuck on trying to find a hash that would perform faster and never followed up[1].

I doubt that is your problem, but it's possible).
-Peff
[1] http://thread.gmane.org/gmane.comp.version-control.git/261638
Previous: Andreas KreyNext: Junio C Hamano
Message 4 of 13 in “best practices against long git rebase times?”
  1. Andreas KreyDec 4, 2015
  2. John KeepingDec 4, 2015
  3. Andreas KreyDec 6, 2015
  4. Jeff KingDec 7, 2015
  5. Junio C HamanoDec 7, 2015
  6. Jeff KingDec 7, 2015
  7. Junio C HamanoDec 8, 2015
  8. Christian CouderDec 8, 2015
  9. demerphqDec 4, 2015
  10. John KeepingDec 4, 2015
  11. demerphqDec 4, 2015
  12. Stefan BellerDec 4, 2015
  13. Andreas KreyDec 6, 2015

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.