From: Ben Peart <peartben@gmail.com>
To: Duy Nguyen <pclouds@gmail.com>, Ben Peart <Ben.Peart@microsoft.com>
Cc: "git@vger.kernel.org" <git@vger.kernel.org>,
"newren@gmail.com" <newren@gmail.com>,
"gitster@pobox.com" <gitster@pobox.com>,
"vmiklos@frugalware.org" <vmiklos@frugalware.org>,
Alejandro Pauly <alpauly@microsoft.com>,
"Johannes.Schindelin@gmx.de" <Johannes.Schindelin@gmx.de>,
"eckhard.s.maass@googlemail.com" <eckhard.s.maass@googlemail.com>
Subject: Re: [PATCH v1] add status config and command line options for rename detection
Date: Wed, 9 May 2018 13:04:25 -0400 [thread overview]
Message-ID: <80ddf6cf-0a38-9cd0-18b1-83114c2d1f5d@gmail.com> (raw)
In-Reply-To: <CACsJy8CdvKO3aityyP3Ax0ZqaS6JzwH_i2Gn_8NmCUDKHMMQrw@mail.gmail.com>
On 5/9/2018 11:59 AM, Duy Nguyen wrote:
> 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>
> 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>
next prev parent reply other threads:[~2018-05-09 17:04 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-05-09 14:42 [PATCH v1] add status config and command line options for rename detection Ben Peart
2018-05-09 15:59 ` Duy Nguyen
2018-05-09 17:04 ` Ben Peart [this message]
2018-05-09 16:56 ` Elijah Newren
2018-05-09 19:54 ` Ben Peart
2018-05-10 14:16 ` [PATCH v2] " Ben Peart
2018-05-10 16:19 ` Elijah Newren
2018-05-10 19:09 ` Ben Peart
2018-05-10 22:31 ` Elijah Newren
2018-05-11 12:50 ` Ben Peart
2018-05-11 1:57 ` Junio C Hamano
2018-05-11 6:39 ` Junio C Hamano
2018-05-11 12:56 ` [PATCH v3] " Ben Peart
2018-05-11 14:33 ` Elijah Newren
2018-05-12 8:04 ` Eckhard Maaß
2018-05-14 12:57 ` Ben Peart
2018-05-11 15:38 ` [PATCH v4] " Ben Peart
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: http://vger.kernel.org/majordomo-info.html
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=80ddf6cf-0a38-9cd0-18b1-83114c2d1f5d@gmail.com \
--to=peartben@gmail.com \
--cc=Ben.Peart@microsoft.com \
--cc=Johannes.Schindelin@gmx.de \
--cc=alpauly@microsoft.com \
--cc=eckhard.s.maass@googlemail.com \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=newren@gmail.com \
--cc=pclouds@gmail.com \
--cc=vmiklos@frugalware.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://80x24.org/mirrors/git.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).