From: Derrick Stolee <stolee@gmail.com> To: "Đoàn Trần Công Danh" <congdanhqx@gmail.com> Cc: "Martin Ågren" <martin.agren@gmail.com>, "Derrick Stolee via GitGitGadget" <gitgitgadget@gmail.com>, "Git Mailing List" <git@vger.kernel.org>, "Jonathan Nieder" <jrnieder@gmail.com>, "Jonathan Tan" <jonathantanmy@google.com>, sluongng@gmail.com, "SZEDER Gábor" <szeder.dev@gmail.com>, "Derrick Stolee" <derrickstolee@github.com>, "Derrick Stolee" <dstolee@microsoft.com> Subject: Re: [PATCH v2 6/7] maintenance: recommended schedule in register/start Date: Thu, 1 Oct 2020 21:55:40 -0400 Message-ID: <2198ba04-e73a-cfd5-960c-909a4f3ef0d2@gmail.com> (raw) In-Reply-To: <20201002003844.GA28643@danh.dev> On 10/1/2020 8:38 PM, Đoàn Trần Công Danh wrote: > On 2020-10-01 16:38:48-0400, Derrick Stolee <stolee@gmail.com> wrote: >> diff --git a/Documentation/git-maintenance.txt b/Documentation/git-maintenance.txt >> index 7628a6d157..52fff86844 100644 >> --- a/Documentation/git-maintenance.txt >> +++ b/Documentation/git-maintenance.txt >> @@ -37,6 +37,21 @@ register:: >> `maintenance.<task>.schedule`. The tasks that are enabled are safe >> for running in the background without disrupting foreground >> processes. >> ++ >> +If your repository has no `maintenance.<task>.schedule` configuration >> +values set, then Git will use a recommended default schedule that performs >> +background maintenance that will not interrupt foreground commands. The >> +default schedule is as follows: > > I don't mind about using a default schedule (but someone else might). > I think some distributions will be paranoia with this change and shiped > with disable by default in system config. If a user wants to prevent this schedule, then they can simply change any one of the `.schedule` or `.enabled` configs in their --global config and these defaults will not be used. Of course, perhaps you are missing the fact that "git maintenance run --schedule=<frequency>" is only run as a cron job if a user chose to start background maintenance using "git maintenance start" (or "git maintenance register" after running the 'start' subcommand in another repo). So this is _not_ starting by default without some amount of choosing to opt in. >> ++ >> +* `gc`: disabled. >> +* `commit-graph`: hourly. >> +* `prefetch`: hourly. > > However, no `prefetch` in default schedule, please. > IIUC, this is a network operation, if someone is on the go and paying > their internet based on their traffic, this will be a disaster. It _is_ a network operation. You're right that we should make it clear that network operations are being run in the background if the defaults are being used. Of course, this is why "git maintenance stop" exists. Background maintenance can be halted while not being in a mode where this maintenance is acceptable. And further: these defaults are optimized for desktop machines that are expected to always be on and connected to a non-metered network. Laptops are not always on, not always connected, and sometimes are metered. Perhaps a user should decide that they don't want to have background maintenance, and then they can choose to not opt-in. If this scenario is common enough, then we could extend the "prefetch" task to somehow detect (on some platforms) that the network connection is metered, and then not do any fetches. >> +* `loose-objects`: daily. >> +* `incremental-repack`: daily. > > And I would say no incremental-repack, too. > Users don't want to a large operation of IO on some random time of the day, > be it when they open their PC in the morning, or when they want to close > their laptop to go home. But that's exactly why incremental-repack is an improvement over a "random" instance of 'git gc --auto' going over an invisible threshold. The "incremental" nature is intended to only do a reasonable amount of work instead of rewriting everything. > ----------(Windows rant ahead) > I still remember those days that Windows 8 was introduced, > Back in that days, my computer still uses the old 7200rpm HDD. > I was super-angry that whenever Windows is started, it starts some IO > disk-caching, indexing that hung my computer for a good 10 minutes. > While that same computer can run Windows 7 and other OS fine. > I don't particularly care how much my computer is faster after that. > I want my computer usable at that time, instead of wasting a good 10 > minutes on nothing. > ---------(Windows rant end) > > Either the users know what are they doing, or we don't do anything at > all. Let's them do it on their free time. > > IOW, Please let users opt in instead of opt out of this features. But users _do_ opt-in to this feature. They need to start the maintenance at all to have this run. We just need to give them something that actually "maintains" their repository without being incredibly expensive or possibly leading to data loss. That is exactly why "incremental-repack" is chosen over the "gc" task. If there isn't enough work to be done, then this task is very cheap to do. Perhaps all of your concerns are satisfied with this reassurance that background maintenance is completely opt-in and will not be set up without a user explicitly enabling it. Thanks, -Stolee
next prev parent reply other threads:[~2020-10-02 1:55 UTC|newest] Thread overview: 54+ messages / expand[flat|nested] mbox.gz Atom feed top 2020-09-04 15:41 [PATCH 0/7] Maintenance III: Background maintenance Derrick Stolee via GitGitGadget 2020-09-04 15:42 ` [PATCH 1/7] maintenance: optionally skip --auto process Derrick Stolee via GitGitGadget 2020-09-04 15:42 ` [PATCH 2/7] maintenance: add --schedule option and config Derrick Stolee via GitGitGadget 2020-09-08 13:07 ` Đoàn Trần Công Danh 2020-09-09 12:14 ` Derrick Stolee 2020-09-04 15:42 ` [PATCH 3/7] for-each-repo: run subcommands on configured repos Derrick Stolee via GitGitGadget 2020-09-04 15:42 ` [PATCH 4/7] maintenance: add [un]register subcommands Derrick Stolee via GitGitGadget 2020-09-04 15:42 ` [PATCH 5/7] maintenance: add start/stop subcommands Derrick Stolee via GitGitGadget 2020-09-08 6:29 ` SZEDER Gábor 2020-09-08 12:43 ` Derrick Stolee 2020-09-08 19:31 ` Junio C Hamano 2020-09-04 15:42 ` [PATCH 6/7] maintenance: recommended schedule in register/start Derrick Stolee via GitGitGadget 2020-09-04 15:42 ` [PATCH 7/7] maintenance: add troubleshooting guide to docs Derrick Stolee via GitGitGadget 2020-09-11 17:49 ` [PATCH v2 0/7] Maintenance III: Background maintenance Derrick Stolee via GitGitGadget 2020-09-11 17:49 ` [PATCH v2 1/7] maintenance: optionally skip --auto process Derrick Stolee via GitGitGadget 2020-09-11 17:49 ` [PATCH v2 2/7] maintenance: add --schedule option and config Derrick Stolee via GitGitGadget 2020-09-11 17:49 ` [PATCH v2 3/7] for-each-repo: run subcommands on configured repos Derrick Stolee via GitGitGadget 2020-09-11 17:49 ` [PATCH v2 4/7] maintenance: add [un]register subcommands Derrick Stolee via GitGitGadget 2020-09-17 14:05 ` Đoàn Trần Công Danh 2020-09-11 17:49 ` [PATCH v2 5/7] maintenance: add start/stop subcommands Derrick Stolee via GitGitGadget 2020-09-11 17:49 ` [PATCH v2 6/7] maintenance: recommended schedule in register/start Derrick Stolee via GitGitGadget 2020-09-29 19:48 ` Martin Ågren 2020-09-30 20:11 ` Derrick Stolee 2020-10-01 20:38 ` Derrick Stolee 2020-10-02 0:38 ` Đoàn Trần Công Danh 2020-10-02 1:55 ` Derrick Stolee [this message] 2020-10-05 13:16 ` Đoàn Trần Công Danh 2020-10-05 18:17 ` Derrick Stolee 2020-09-11 17:49 ` [PATCH v2 7/7] maintenance: add troubleshooting guide to docs Derrick Stolee via GitGitGadget 2020-10-05 12:57 ` [PATCH v3 0/7] Maintenance III: Background maintenance Derrick Stolee via GitGitGadget 2020-10-05 12:57 ` [PATCH v3 1/7] maintenance: optionally skip --auto process Derrick Stolee via GitGitGadget 2020-10-05 12:57 ` [PATCH v3 2/7] maintenance: add --schedule option and config Derrick Stolee via GitGitGadget 2020-10-05 12:57 ` [PATCH v3 3/7] for-each-repo: run subcommands on configured repos Derrick Stolee via GitGitGadget 2020-10-05 12:57 ` [PATCH v3 4/7] maintenance: add [un]register subcommands Derrick Stolee via GitGitGadget 2020-10-05 12:57 ` [PATCH v3 5/7] maintenance: add start/stop subcommands Derrick Stolee via GitGitGadget 2020-10-05 12:57 ` [PATCH v3 6/7] maintenance: use default schedule if not configured Derrick Stolee via GitGitGadget 2020-10-05 19:57 ` Martin Ågren 2020-10-08 13:32 ` Derrick Stolee 2020-10-05 12:57 ` [PATCH v3 7/7] maintenance: add troubleshooting guide to docs Derrick Stolee via GitGitGadget 2020-10-15 17:21 ` [PATCH v4 0/8] Maintenance III: Background maintenance Derrick Stolee via GitGitGadget 2020-10-15 17:21 ` [PATCH v4 1/8] maintenance: optionally skip --auto process Derrick Stolee via GitGitGadget 2020-10-15 17:21 ` [PATCH v4 2/8] maintenance: add --schedule option and config Derrick Stolee via GitGitGadget 2020-10-15 17:21 ` [PATCH v4 3/8] for-each-repo: run subcommands on configured repos Derrick Stolee via GitGitGadget 2020-10-15 17:22 ` [PATCH v4 4/8] maintenance: add [un]register subcommands Derrick Stolee via GitGitGadget 2020-10-15 17:22 ` [PATCH v4 5/8] maintenance: add start/stop subcommands Derrick Stolee via GitGitGadget 2020-12-09 18:51 ` Josh Steadmon 2020-12-09 19:16 ` Josh Steadmon 2020-12-09 21:59 ` Derrick Stolee 2020-12-10 0:13 ` Junio C Hamano 2020-12-10 1:52 ` Derrick Stolee 2020-12-10 6:54 ` Junio C Hamano 2020-10-15 17:22 ` [PATCH v4 6/8] maintenance: create maintenance.strategy config Derrick Stolee via GitGitGadget 2020-10-15 17:22 ` [PATCH v4 7/8] maintenance: use 'incremental' strategy by default Derrick Stolee via GitGitGadget 2020-10-15 17:22 ` [PATCH v4 8/8] maintenance: add troubleshooting guide to docs Derrick Stolee via GitGitGadget
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=2198ba04-e73a-cfd5-960c-909a4f3ef0d2@gmail.com \ --to=stolee@gmail.com \ --cc=congdanhqx@gmail.com \ --cc=derrickstolee@github.com \ --cc=dstolee@microsoft.com \ --cc=git@vger.kernel.org \ --cc=gitgitgadget@gmail.com \ --cc=jonathantanmy@google.com \ --cc=jrnieder@gmail.com \ --cc=martin.agren@gmail.com \ --cc=sluongng@gmail.com \ --cc=szeder.dev@gmail.com \ /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
git@vger.kernel.org list mirror (unofficial, one of many) This inbox may be cloned and mirrored by anyone: git clone --mirror https://public-inbox.org/git git clone --mirror http://ou63pmih66umazou.onion/git git clone --mirror http://czquwvybam4bgbro.onion/git git clone --mirror http://hjrcffqmbrq6wope.onion/git # If you have public-inbox 1.1+ installed, you may # initialize and index your mirror using the following commands: public-inbox-init -V1 git git/ https://public-inbox.org/git \ git@vger.kernel.org public-inbox-index git Example config snippet for mirrors. Newsgroups are available over NNTP: nntp://news.public-inbox.org/inbox.comp.version-control.git nntp://ou63pmih66umazou.onion/inbox.comp.version-control.git nntp://czquwvybam4bgbro.onion/inbox.comp.version-control.git nntp://hjrcffqmbrq6wope.onion/inbox.comp.version-control.git nntp://news.gmane.io/gmane.comp.version-control.git note: .onion URLs require Tor: https://www.torproject.org/ code repositories for the project(s) associated with this inbox: https://80x24.org/mirrors/git.git AGPL code for this site: git clone https://public-inbox.org/public-inbox.git