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

VERY slow git format-patch (tens on minutes) during rebase and rev-list during rebase -i

From
Marat Radchenko <marat@slonopotamus.org>
Date
Jul 13, 2010, 06:56 UTC
Message-ID
<loom.20100713T082913-327@post.gmane.org>
Hi.
My setup:
0. Quad-code machine with 8GB of ram, 10K RPM hdd.
1. SVN repo that i periodically fetch into origin/trunk branch. Has ~200 
commits/day.
2. My local branch with 1-5 commits which i often rebase against trunk.
3. I haven't rebased for 2 days, so i'm rebasing 3 (three) commits in my branch 
over 453 commits in trunk using "git rebase trunk".
4. trunk does contain "bad" from diff POV files (big & binary).
5. Sadly, data in repo is confidential.
Expected: rebase takes some reasonable amount of time (< 1 min?).
Actual: rebase takes 20 mins.

Almost all of that time was spent doing `git format-patch -k --stdout --full- index --ignore-if-in-upstream 80bb0dfe3d86f3cc9095ea616d9d1b1530fbe7b8..d3fde4ae7497981a6fe61b0366b105477896cf 52` (that's three commits from my branch) at 100% of one CPU core.

Additional info:
Another similar rebase but over 4.5k of commits took 2 hours.

Running without --ignore-if-in-upstream: $ time git format-patch -k --stdout --full-index 80bb0dfe3d86f3cc9095ea616d9d1b1530fbe7b8..d3fde4ae7497981a6fe61b0366b105477896cf 5 | wc -l 25823 Is it real 0m0.163s user 0m0.140s sys 0m0.020s

Proof there are only three commits:

$ git rev-list 80bb0dfe3d86f3cc9095ea616d9d1b1530fbe7b8..d3fde4ae7497981a6fe61b0366b105477896cf 52d3fde4ae7497981a6fe61b0366b105477896cf52 e18069258806bda6a6165822003f5e9fd958f906 c8c2f2e157e615b73d0baab1d793a22991c9ba71

Questions:
1. Is it expected behavior (branch you rebase onto has binary files -> no 
performance for you)?
2. If [1] is yes, is it possible to prevent rebase from running --ignore-if-in-
upstream?
3. If [1] is no, should i run some kind of profiler (how?) to determine what 
exactly causes such performance drop?
Next: Michael J Gruber
Message 1 of 7 in “VERY slow git format-patch (tens on minutes) during rebase and rev-list during rebase -i”
  1. Marat RadchenkoJul 13, 2010
  2. Michael J GruberJul 13, 2010
  3. rebase: Allow to turn of ignore-if-in-upstreamMichael J Gruber, Jul 13, 2010
  4. Erik Faye-LundJul 13, 2010
  5. Michael J GruberSep 4, 2010
  6. Marat RadchenkoSep 9, 2010
  7. [FEATURE REQUEST] allow enabling patience diff algorithm by defaultMarat Radchenko, Oct 13, 2010

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.