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

Re: [PATCH v1] add status config and command line options for rename detection

From
Ben Peart <peartben@gmail.com>
Date
May 9, 2018, 17:04 UTC
Message-ID
<80ddf6cf-0a38-9cd0-18b1-83114c2d1f5d@gmail.com>
In-Reply-To
<CACsJy8CdvKO3aityyP3Ax0ZqaS6JzwH_i2Gn_8NmCUDKHMMQrw@mail.gmail.com>
On 5/9/2018 11:59 AM, Duy Nguyen wrote:
Show 9 quoted lines
> On Wed, May 9, 2018 at 4:42 PM, Ben Peart <Ben.Peart@microsoft.com> wrote:
>> Add a new config status.renames setting to enable turning off rename detection
>> during status.  This setting will default to the value of diff.renames.
> 
> Please add the reason you need this config key in the commit message.
> My guess (probably correct) is on super large repo (how large?),
> rename detection is just too slow (how long?) that it practically
> makes git-status unusable.
> 

Yes, the reasons for this change are the same as for the patch that added these same flags for merge and have to do with the poor performance of rename detection with large repos. I'll update the commit message to be more descriptive (see below) and correct some spelling errors.

add status config and command line options for rename detection

After performing a merge that has conflicts, git status will by default attempt to detect renames which causes many objects to be examined. In a virtualized repo, those objects do not exist locally so the rename logic triggers them to be fetched from the server. This results in the status call taking hours to complete on very large repos. Even in a small repo (the GVFS repo) turning off break and rename detection has a significant impact:

git status --no-renames: 31 secs., 105 loose object downloads

git status --no-breaks 7 secs., 17 loose object downloads

git status --no-breaks --no-renames 1 sec., 1 loose object download

Add a new config status.renames setting to enable turning off rename detection during status. This setting will default to the value of diff.renames.

Add a new config status.renamelimit setting to to enable bounding the time spent finding out inexact renames during status. This setting will default to the value of diff.renamelimit.

Add status --no-renames command line option that enables overriding the config setting from the command line. Add --find-renames[=<n>] to enable detecting renames and optionally setting the similarity index from the command line.

Note: I removed the --no-breaks command line option from the original 
patch as it will no longer be needed once the default has been changed 
[1] to turn it off.

[1] https://public-inbox.org/git/20180430093421.27551-2-eckhard.s.maass@gmail.com/

Original-Patch-by: Alejandro Pauly <alpauly@microsoft.com>
Signed-off-by: Ben Peart <Ben.Peart@microsoft.com>
Show 14 quoted lines
> This information could be helpful when we optimize rename detection to
> be more efficient.
> 
>>
>> Add a new config status.renamelimit setting to to enable bounding the time spent
>> finding out inexact renames during status.  This setting will default to the
>> value of diff.renamelimit.
>>
>> Add status --no-renames command line option that enables overriding the config
>> setting from the command line. Add --find-renames[=<n>] to enable detecting
>> renames and optionaly setting the similarity index from the command line.
>>
>> Origional-Patch-by: Alejandro Pauly <alpauly@microsoft.com>
>> Signed-off-by: Ben Peart <Ben.Peart@microsoft.com>
Previous: Duy NguyenNext: Elijah Newren
Message 3 of 17 in “add status config and command line options for rename detection”
  1. add status config and command line options for rename detectionBen Peart, May 9, 2018
  2. Duy NguyenMay 9, 2018
  3. Ben PeartMay 9, 2018
  4. Elijah NewrenMay 9, 2018
  5. Ben PeartMay 9, 2018
  6. add status config and command line options for rename detectionBen Peart, May 10, 2018
  7. Elijah NewrenMay 10, 2018
  8. Ben PeartMay 10, 2018
  9. Elijah NewrenMay 10, 2018
  10. Ben PeartMay 11, 2018
  11. Junio C HamanoMay 11, 2018
  12. Junio C HamanoMay 11, 2018
  13. add status config and command line options for rename detectionBen Peart, May 11, 2018
  14. Elijah NewrenMay 11, 2018
  15. Eckhard MaaßMay 12, 2018
  16. Ben PeartMay 14, 2018
  17. add status config and command line options for rename detectionBen Peart, May 11, 2018

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.