[PATCH 00/11] [RFC] Create 'core.size=large' setting to update config defaults
- From
Derrick Stolee via GitGitGadget <gitgitgadget@gmail.com>
- Date
- Jun 3, 2019, 20:18 UTC
- Message-ID
- <pull.254.git.gitgitgadget@gmail.com>
This patch series includes a few new config options we created to speed up certain critical commands in VFS for Git. On their own, they would contribute little value as it is hard to discover new config variables. Instead, I've created this RFC as a goal for probably three sequential patch series:
1. (Patches 1-3) Introduce a new 'core.size' config setting that takes
'large' as a value. This enables several config values that are
beneficial for large repos. We use a certain set in VFS for Git (see
[1]), and most of those are applicable to any repo. This 'core.size'
setting is intended for users to automatically receive performance
updates as soon as they are stable, but they must opt-in to the setting
and can always explicitly set their own config values. The settings to
include here are core.commitGraph=true, gc.writeCommitGraph=true,
index.version=4, pack.useSparse=true.
2. (Patches 4-8) Introduce 'status.aheadBehind' to dictate if we use
'--[no-]ahead-behind' during 'git status' calls. Also do some cleanup on
the feature around porcelain formats. I adapted Jeff Hostetler's commits
from microsoft/git for this section.
3. (Patches 9-12) Introduce 'fetch.showForcedUpdates' and the associated
'--[no-]show-forced-updates' option for 'git fetch' and 'git pull'
calls. When fetching from a remote with many branches that move quickly,
the check for forced updates can be expensive. Further, the only effects
are a "(forced update)" indicator to stdout and a single bit in the
reflog. The reflog bit is unfortunate to lose, but it is never trusted
for important actions. These changes are likely to be more controversial
than the others.
Hopefully this direction is amenable to allow "early adopters" gain access to new performance features even if they are not necessary reading every line of the release notes.
Thanks, -Stolee
[1] https://github.com/microsoft/VFSForGit/blob/6a7fd2ff50056b73b347b882d2b8d52939bd6419/GVFS/GVFS/CommandLine/GVFSVerb.cs#L122-L152 This code includes the settings we enable by default in VFS for Git enlistments.
Derrick Stolee (8): repo-settings: create repo.size=large setting repo-settings: use index.version=4 by default repo-settings: pack.useSparse=true repo-settings: status.aheadBehind=false fetch: add --[no-]show-forced-updates argument fetch: warn about forced updates after branch list pull: add --[no-]show-forced-updates passthrough to fetch repo-settings: fetch.showForcedUpdates=false
Jeff Hostetler (3):
status: add status.aheadbehind setting
status: add warning when a/b calculation takes too long for
long/normal format
status: ignore status.aheadbehind in porcelain formatsDocumentation/config/core.txt | 31 ++++++++++++++- Documentation/config/fetch.txt | 5 +++ Documentation/config/gc.txt | 4 +- Documentation/config/index.txt | 1 + Documentation/config/pack.txt | 3 +- Documentation/config/status.txt | 6 +++ Documentation/fetch-options.txt | 13 +++++++ Makefile | 1 + advice.c | 2 + advice.h | 1 + builtin/commit.c | 19 ++++++++- builtin/fetch.c | 34 ++++++++++++++++- builtin/gc.c | 6 +-- builtin/pack-objects.c | 9 +++-- builtin/pull.c | 7 ++++ commit-graph.c | 7 ++-- read-cache.c | 12 +++--- repo-settings.c | 68 +++++++++++++++++++++++++++++++++ repo-settings.h | 17 +++++++++ repository.h | 3 ++ t/t6040-tracking-info.sh | 31 +++++++++++++++ t/t7064-wtstatus-pv2.sh | 8 ++++ wt-status.c | 17 +++++++++ 23 files changed, 283 insertions(+), 22 deletions(-) create mode 100644 repo-settings.c create mode 100644 repo-settings.h
base-commit: aa25c82427ae70aebf3b8f970f2afd54e9a2a8c6 Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-254%2Fderrickstolee%2Fconfig-large%2Fupstream-v1 Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-254/derrickstolee/config-large/upstream-v1 Pull-Request: https://github.com/gitgitgadget/git/pull/254
-- gitgitgadget