git-commit-vandalism/Documentation/config
Derrick Stolee b08ff1fee0 maintenance: add --schedule option and config
Maintenance currently triggers when certain data-size thresholds are
met, such as number of pack-files or loose objects. Users may want to
run certain maintenance tasks based on frequency instead. For example,
a user may want to perform a 'prefetch' task every hour, or 'gc' task
every day. To help these users, update the 'git maintenance run' command
to include a '--schedule=<frequency>' option. The allowed frequencies
are 'hourly', 'daily', and 'weekly'. These values are also allowed in a
new config value 'maintenance.<task>.schedule'.

The 'git maintenance run --schedule=<frequency>' checks the '*.schedule'
config value for each enabled task to see if the configured frequency is
at least as frequent as the frequency from the '--schedule' argument. We
use the following order, for full clarity:

	'hourly' > 'daily' > 'weekly'

Use new 'enum schedule_priority' to track these values numerically.

The following cron table would run the scheduled tasks with the correct
frequencies:

  0 1-23 * * *    git -C <repo> maintenance run --schedule=hourly
  0 0    * * 1-6  git -C <repo> maintenance run --schedule=daily
  0 0    * * 0    git -C <repo> maintenance run --schedule=weekly

This cron schedule will run --schedule=hourly every hour except at
midnight. This avoids a concurrent run with the --schedule=daily that
runs at midnight every day except the first day of the week. This avoids
a concurrent run with the --schedule=weekly that runs at midnight on
the first day of the week. Since --schedule=daily also runs the
'hourly' tasks and --schedule=weekly runs the 'hourly' and 'daily'
tasks, we will still see all tasks run with the proper frequencies.

Signed-off-by: Derrick Stolee <dstolee@microsoft.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2020-09-25 10:59:44 -07:00
..
add.txt Start to implement a built-in version of git add --interactive 2019-11-14 11:10:04 +09:00
advice.txt add: change advice config variables used by the add API 2020-02-06 11:08:00 -08:00
alias.txt config/alias.txt: document alias accepting non-command first word 2019-06-06 09:33:42 -07:00
am.txt
apply.txt
blame.txt blame: add config options for the output of ignored or unblamable lines 2019-05-16 11:36:23 +09:00
branch.txt pull --rebase/remote rename: document and honor single-letter abbreviations rebase types 2020-02-10 10:52:10 -08:00
browser.txt
checkout.txt switch: no worktree status unless real branch switch happens 2019-04-02 13:57:00 +09:00
clean.txt
color.txt doc: fix repeated words 2019-08-11 17:40:07 -07:00
column.txt
commit.txt
completion.txt
core.txt midx: enable core.multiPackIndex by default 2020-09-25 10:53:04 -07:00
credential.txt docs: document credential.helper allowed values 2020-05-06 11:39:40 -07:00
diff.txt diff: add config option relative 2020-05-24 16:23:59 -07:00
difftool.txt
extensions.txt docs: add documentation for extensions.objectFormat 2020-07-30 09:16:49 -07:00
fastimport.txt
feature.txt experimental: default to fetch.writeCommitGraph=false 2020-07-08 16:37:43 -07:00
fetch.txt experimental: default to fetch.writeCommitGraph=false 2020-07-08 16:37:43 -07:00
filter.txt
fmt-merge-msg.txt fmt-merge-msg: allow merge destination to be omitted again 2020-07-30 12:43:10 -07:00
format.txt format-patch: teach --no-encode-email-headers 2020-04-07 22:37:18 -07:00
fsck.txt config/fsck.txt: avoid starting line with dash 2019-03-07 09:25:32 +09:00
gc.txt commit-graph: turn on commit-graph by default 2019-08-13 13:33:55 -07:00
gitcvs.txt
gitweb.txt
gpg.txt gpg-interface: add minTrustLevel as a configuration option 2020-01-15 14:06:06 -08:00
grep.txt
gui.txt
guitool.txt
help.txt
http.txt Merge branch 'js/https-proxy-config' 2020-03-25 13:57:42 -07:00
i18n.txt
imap.txt
index.txt repo-settings: create feature.manyFiles setting 2019-08-13 13:33:55 -07:00
init.txt clone: use configured default branch name when appropriate 2020-06-24 09:14:21 -07:00
instaweb.txt
interactive.txt checkout: split part of it to new command 'restore' 2019-05-07 13:04:47 +09:00
log.txt log: add log.excludeDecoration config option 2020-04-16 11:05:48 -07:00
mailinfo.txt
mailmap.txt
maintenance.txt maintenance: add --schedule option and config 2020-09-25 10:59:44 -07:00
man.txt
merge.txt merge: teach --autostash option 2020-04-10 09:28:02 -07:00
mergetool.txt
notes.txt
pack.txt config: set pack.useSparse=true by default 2020-03-20 14:22:31 -07:00
pager.txt
pretty.txt
protocol.txt config: let feature.experimental imply protocol.version=2 2020-05-21 09:31:42 -07:00
pull.txt pull --rebase/remote rename: document and honor single-letter abbreviations rebase types 2020-02-10 10:52:10 -08:00
push.txt doc: be more precise on (fetch|push).recurseSubmodules 2020-04-06 13:42:43 -07:00
rebase.txt rebase: rename the two primary rebase backends 2020-02-16 15:40:42 -08:00
receive.txt
remote.txt remote: add promisor and partial clone config to the doc 2019-06-25 14:05:38 -07:00
remotes.txt
repack.txt repack: enable bitmaps by default on bare repos 2019-03-18 14:09:54 +09:00
rerere.txt
reset.txt
sendemail.txt git-send-email: die if sendmail.* config is set 2020-07-23 18:00:34 -07:00
sequencer.txt
showbranch.txt
splitindex.txt
ssh.txt
stash.txt stash: remove the stash.useBuiltin setting 2020-03-05 12:50:28 -08:00
status.txt status: add status.aheadbehind setting 2019-06-21 09:35:00 -07:00
submodule.txt doc: explain how to deactivate submodule.recurse completely 2020-04-06 13:42:43 -07:00
tag.txt separate tar.* config to its own source file 2020-03-18 12:42:09 -07:00
tar.txt separate tar.* config to its own source file 2020-03-18 12:42:09 -07:00
trace2.txt trace2: teach Git to log environment variables 2020-03-23 13:14:53 -07:00
transfer.txt doc: typo: s/can not/cannot/ and s/is does/does/ 2019-08-05 10:05:24 -07:00
uploadarchive.txt
uploadpack.txt upload-pack.c: introduce 'uploadpackfilter.tree.maxDepth' 2020-08-03 18:03:46 -07:00
url.txt
user.txt doc: provide guidance on user.name format 2020-01-22 12:27:08 -08:00
versionsort.txt
web.txt
worktree.txt