git/Documentation
Patrick Steinhardt 98077d06b2 run-command: fix detaching when running auto maintenance
In the past, we used to execute `git gc --auto` as part of our automatic
housekeeping routines. As git-gc(1) may require quite some time to
perform the housekeeping, it knows to detach itself and run in the
background so that the user can continue their work.

Eventually, we refactored our automatic housekeeping to instead use the
more flexible git-maintenance(1) command. The upside of this new infra
is that the user can configure which maintenance tasks are performed, at
least to a certain degree. So while it continues to run git-gc(1) by
default, it can also be adapted to e.g. use git-multi-pack-index(1) for
maintenance of the object database.

The auto-detach of the new infra is somewhat broken though once the user
configures non-standard tasks. The problem is essentially that we detach
at the wrong level in the process hierarchy: git-maintenance(1) never
detaches itself, but instead it continues to be git-gc(1) which does.

When configured to only run the git-gc(1) maintenance task, then the
result is basically the same as before. But when configured to run other
tasks, then git-maintenance(1) will wait for these to run to completion.
Even worse, it may be that git-gc(1) runs concurrently with other
housekeeping tasks, stomping on each others feet.

Fix this bug by asking git-gc(1) to not detach when it is being invoked
via git-maintenance(1). Instead, git-maintenance(1) now respects a new
config "maintenance.autoDetach", the equivalent of "gc.autoDetach", and
detaches itself into the background when running as part of our auto
maintenance. This should continue to behave the same for all users which
use the git-gc(1) task, only. For others though, it means that we now
properly perform all tasks in the background. The default behaviour of
git-maintenance(1) when executed by the user does not change, it will
remain in the foreground unless they pass the `--detach` option.

Signed-off-by: Patrick Steinhardt <ps@pks.im>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2024-08-16 09:46:26 -07:00
..
RelNotes The third batch 2024-08-08 10:41:21 -07:00
config run-command: fix detaching when running auto maintenance 2024-08-16 09:46:26 -07:00
howto Merge branch 'jc/how-to-maintain-updates' 2024-07-31 13:34:21 -07:00
includes
mergetools mergetools: vimdiff: use correct tool's name when reading mergetool config 2024-02-19 08:45:14 -08:00
technical Documentation/technical/bitmap-format.txt: add missing position table 2024-06-14 14:19:26 -07:00
.gitattributes
.gitignore Doc: fix Asciidoctor css workaround 2024-07-23 11:02:52 -07:00
BreakingChanges.txt BreakingChanges: document that we do not plan to deprecate git-checkout 2024-06-14 09:08:52 -07:00
CodingGuidelines Merge branch 'ps/doc-more-c-coding-guidelines' 2024-08-08 10:41:20 -07:00
DecisionMaking.txt doc: describe the project's decision-making process 2024-05-17 13:53:04 -07:00
Makefile Merge branch 'js/doc-markup-updates-fix' 2024-07-23 16:54:34 -07:00
MyFirstContribution.txt MyFirstContribution: mention contrib/contacts/git-contacts 2024-04-18 14:55:09 -07:00
MyFirstObjectWalk.txt MyFirstObjectWalk: add stderr to pipe processing 2024-03-27 09:24:35 -07:00
ReviewingGuidelines.txt ReviewingGuidelines: encourage positive reviews more 2024-07-25 08:50:09 -07:00
SubmittingPatches Merge branch 'jt/doc-submitting-rerolled-series' into maint-2.45 2024-05-31 15:28:21 -07:00
ToolsForGit.txt documentation: add some commas where they are helpful 2023-10-09 12:06:44 -07:00
asciidoc.conf
asciidoctor-extensions.rb
blame-options.txt blame: use different author name for fake commit generated by --contents 2023-04-24 15:16:31 -07:00
build-docdep.perl
cat-texi.perl
cmd-list.perl
config.txt Merge branch 'tb/pseudo-merge-reachability-bitmap' 2024-06-24 16:39:13 -07:00
date-formats.txt Documentation: fix typos describing date format 2024-04-12 09:03:03 -07:00
diff-format.txt
diff-generate-patch.txt documentation: add some commas where they are helpful 2023-10-09 12:06:44 -07:00
diff-options.txt Merge branch 'jc/doc-diff-name-only' into maint-2.45 2024-06-28 15:53:14 -07:00
doc-diff doc-diff: drop SOURCE_DATE_EPOCH override 2023-05-05 14:28:03 -07:00
docbook-xsl.css
docbook.xsl
docinfo-html.in Doc: fix Asciidoctor css workaround 2024-07-23 11:02:52 -07:00
everyday.txto
fetch-options.txt doc: format alternatives in synopsis 2024-03-16 10:04:45 -07:00
fix-texi.perl
fsck-msgids.txt Merge branch 'fixes/2.45.1/2.42' into fixes/2.45.1/2.43 2024-05-24 16:58:11 -07:00
git-add.txt add-patch: introduce 'p' in interactive-patch 2024-03-28 22:40:08 -07:00
git-am.txt Merge branch 'jk/am-retry' 2024-06-17 15:55:56 -07:00
git-annotate.txt
git-apply.txt documentation: add some commas where they are helpful 2023-10-09 12:06:44 -07:00
git-archimport.txt
git-archive.txt archive: document that --add-virtual-file takes full path 2024-06-26 12:56:45 -07:00
git-bisect-lk2009.txt
git-bisect.txt Merge branch 'jc/bisect-doc' into maint-2.43 2024-02-13 14:44:51 -08:00
git-blame.txt doc: enforce dashes in placeholders 2023-12-26 11:06:55 -08:00
git-branch.txt branch: clarify <oldbranch> term 2024-01-08 10:06:05 -08:00
git-bugreport.txt bugreport.c: fix a crash in `git bugreport` with `--no-suffix` option 2024-03-16 09:31:42 -07:00
git-bundle.txt
git-cat-file.txt doc/cat-file: make synopsis and description less confusing 2023-10-09 12:46:33 -07:00
git-check-attr.txt documentation: add some commas where they are helpful 2023-10-09 12:06:44 -07:00
git-check-ignore.txt documentation: fix whitespace issues 2023-10-09 12:06:29 -07:00
git-check-mailmap.txt
git-check-ref-format.txt documentation: add missing fullstops 2023-10-09 12:06:47 -07:00
git-checkout-index.txt documentation: add some commas where they are helpful 2023-10-09 12:06:44 -07:00
git-checkout.txt Merge branch 'jc/orphan-unborn' 2024-01-02 13:51:30 -08:00
git-cherry-pick.txt cherry-pick: add `--empty` for more robust redundant commit handling 2024-03-25 16:45:41 -07:00
git-cherry.txt
git-citool.txt
git-clean.txt clean: further clean-up of implementation around "--force" 2024-03-04 14:05:13 -08:00
git-clone.txt doc: git-clone fix discrepancy between asciidoc and asciidoctor 2024-07-20 16:24:12 -07:00
git-column.txt
git-commit-graph.txt doc: enforce dashes in placeholders 2023-12-26 11:06:55 -08:00
git-commit-tree.txt
git-commit.txt doc: remove dangling closing parenthesis 2024-07-22 17:32:36 -07:00
git-config.txt builtin/config: introduce "edit" subcommand 2024-05-06 11:50:10 -07:00
git-count-objects.txt documentation: add missing article 2023-10-09 12:06:29 -07:00
git-credential-cache--daemon.txt
git-credential-cache.txt documentation: add missing words 2023-10-09 12:06:29 -07:00
git-credential-store.txt documentation: add missing words 2023-10-09 12:06:29 -07:00
git-credential.txt credential: add method for querying capabilities 2024-04-16 22:39:08 -07:00
git-cvsexportcommit.txt
git-cvsimport.txt doc: switch links to https 2023-11-26 10:07:05 +09:00
git-cvsserver.txt doc: enforce dashes in placeholders 2023-12-26 11:06:55 -08:00
git-daemon.txt doc: enforce placeholders in documentation 2023-12-26 11:06:57 -08:00
git-describe.txt docs: typofixes 2023-06-12 13:52:51 -07:00
git-diagnose.txt doc: enforce dashes in placeholders 2023-12-26 11:06:55 -08:00
git-diff-files.txt documentation: add some commas where they are helpful 2023-10-09 12:06:44 -07:00
git-diff-index.txt documentation: wording improvements 2023-10-09 12:04:21 -07:00
git-diff-tree.txt documentation: add missing fullstops 2023-10-09 12:06:47 -07:00
git-diff.txt docs: AUTO_MERGE is not that special 2023-12-15 14:08:28 -08:00
git-difftool.txt Merge branch 'ps/difftool-dir-diff-exit-code' into HEAD 2024-03-01 14:38:54 -08:00
git-fast-export.txt doc: end sentences with full-stop 2024-02-20 15:03:13 -08:00
git-fast-import.txt Merge branch 'xx/rfc2822-date-format-in-doc' 2024-04-23 11:52:40 -07:00
git-fetch-pack.txt documentation: add missing words 2023-10-09 12:06:29 -07:00
git-fetch.txt doc: enforce dashes in placeholders 2023-12-26 11:06:55 -08:00
git-filter-branch.txt doc: enforce dashes in placeholders 2023-12-26 11:06:55 -08:00
git-fmt-merge-msg.txt
git-for-each-ref.txt Merge branch 'kn/for-all-refs' 2024-03-05 09:44:44 -08:00
git-for-each-repo.txt for-each-repo: optionally keep going on an error 2024-04-24 10:46:03 -07:00
git-format-patch.txt Merge branch 'jc/format-patch-more-aggressive-range-diff' 2024-05-28 11:17:10 -07:00
git-fsck-objects.txt
git-fsck.txt documentation: add missing article 2023-10-09 12:06:29 -07:00
git-fsmonitor--daemon.txt documentation: add some commas where they are helpful 2023-10-09 12:06:44 -07:00
git-gc.txt builtin/gc: add a `--detach` flag 2024-08-16 09:46:25 -07:00
git-get-tar-commit-id.txt documentation: fix typos 2023-10-09 12:06:24 -07:00
git-grep.txt grep docs: describe --no-index further and improve formatting a bit 2024-03-25 14:00:03 -07:00
git-gui.txt SubmittingPatches: welcome the new maintainer of git-gui part 2024-05-11 14:31:30 -07:00
git-hash-object.txt documentation: wording improvements 2023-10-09 12:04:21 -07:00
git-help.txt documentation: add missing fullstops 2023-10-09 12:06:47 -07:00
git-hook.txt documentation: fix capitalization 2023-10-09 12:06:29 -07:00
git-http-backend.txt documentation: wording improvements 2023-10-09 12:04:21 -07:00
git-http-fetch.txt documentation: wording improvements 2023-10-09 12:04:21 -07:00
git-http-push.txt documentation: add some commas where they are helpful 2023-10-09 12:06:44 -07:00
git-imap-send.txt doc: switch links to https 2023-11-26 10:07:05 +09:00
git-index-pack.txt index-pack: --fsck-objects to take an optional argument for fsck msgs 2024-02-01 11:09:53 -08:00
git-init-db.txt
git-init.txt doc: git-init: apply new documentation formatting guidelines 2024-03-29 10:57:40 -07:00
git-instaweb.txt
git-interpret-trailers.txt doc: fix some placeholders formating 2024-03-16 10:04:53 -07:00
git-log.txt diff-merges: introduce '--dd' option 2023-10-09 12:47:29 -07:00
git-ls-files.txt ls-files: avoid the verb "deprecate" for individual options 2024-01-25 10:55:53 -08:00
git-ls-remote.txt ls-remote: introduce --branches and deprecate --heads 2024-06-04 15:07:08 -07:00
git-ls-tree.txt Merge branch 'rs/doc-ls-tree-hex-literal' 2023-06-22 16:29:07 -07:00
git-mailinfo.txt
git-mailsplit.txt documentation: add missing article 2023-10-09 12:06:29 -07:00
git-maintenance.txt documentation: wording improvements 2023-10-09 12:04:21 -07:00
git-merge-base.txt documentation: add some commas where they are helpful 2023-10-09 12:06:44 -07:00
git-merge-file.txt merge-file: add --diff-algorithm option 2023-11-22 14:23:06 +09:00
git-merge-index.txt
git-merge-one-file.txt
git-merge-tree.txt Documentation/git-merge-tree.txt: document -X 2024-05-07 15:36:08 -07:00
git-merge.txt Merge branch 'ml/doc-merge-updates' into maint-2.43 2024-02-08 16:22:10 -08:00
git-mergetool--lib.txt documentation: fix capitalization 2023-10-09 12:06:29 -07:00
git-mergetool.txt documentation: add some commas where they are helpful 2023-10-09 12:06:44 -07:00
git-mktag.txt documentation: add missing article 2023-10-09 12:06:29 -07:00
git-mktree.txt documentation: wording improvements 2023-10-09 12:04:21 -07:00
git-multi-pack-index.txt
git-mv.txt doc: enforce dashes in placeholders 2023-12-26 11:06:55 -08:00
git-name-rev.txt documentation: add some commas where they are helpful 2023-10-09 12:06:44 -07:00
git-notes.txt doc: enforce dashes in placeholders 2023-12-26 11:06:55 -08:00
git-p4.txt
git-pack-objects.txt pack-objects: allow `--filter` without `--stdout` 2023-10-02 14:54:29 -07:00
git-pack-redundant.txt
git-pack-refs.txt builtin/pack-refs: introduce new "--auto" flag 2024-03-25 09:54:07 -07:00
git-patch-id.txt
git-prune-packed.txt documentation: add missing words 2023-10-09 12:06:29 -07:00
git-prune.txt documentation: add missing article 2023-10-09 12:06:29 -07:00
git-pull.txt doc: format alternatives in synopsis 2024-03-16 10:04:45 -07:00
git-push.txt Merge branch 'ms/doc-push-fix' into maint-2.42 2023-11-02 16:53:28 +09:00
git-quiltimport.txt documentation: add missing quotes 2023-10-09 12:06:47 -07:00
git-range-diff.txt Merge branch 'sn/typo-grammo-phraso-fixes' 2023-10-30 07:09:55 +09:00
git-read-tree.txt documentation: add missing article 2023-10-09 12:06:29 -07:00
git-rebase.txt Merge branch 'jc/doc-rebase-fuzz-vs-offset-fix' 2024-08-01 10:18:11 -07:00
git-receive-pack.txt documentation: add missing article 2023-10-09 12:06:29 -07:00
git-reflog.txt builtin/reflog: introduce subcommand to list reflogs 2024-02-21 09:58:07 -08:00
git-refs.txt builtin/refs: new command to migrate ref storage formats 2024-06-06 09:04:34 -07:00
git-remote-ext.txt documentation: add missing article 2023-10-09 12:06:29 -07:00
git-remote-fd.txt documentation: add missing parenthesis 2023-10-09 12:06:47 -07:00
git-remote-helpers.txto
git-remote.txt git-remote.txt: fix typo 2024-02-21 10:02:55 -08:00
git-repack.txt Merge branch 'ps/git-repack-doc-fixes' 2023-10-30 07:09:57 +09:00
git-replace.txt doc: enforce dashes in placeholders 2023-12-26 11:06:55 -08:00
git-replay.txt Documentation: fix linkgit reference 2024-04-15 11:02:43 -07:00
git-request-pull.txt documentation: add some commas where they are helpful 2023-10-09 12:06:44 -07:00
git-rerere.txt
git-reset.txt
git-restore.txt documentation: add missing words 2023-10-09 12:06:29 -07:00
git-rev-list.txt documentation: fix subject/verb agreement 2023-10-09 12:06:29 -07:00
git-rev-parse.txt Merge branch 'jc/rev-parse-fatal-doc' into maint-2.45 2024-06-28 15:53:14 -07:00
git-revert.txt doc: enforce dashes in placeholders 2023-12-26 11:06:55 -08:00
git-rm.txt documentation: fix apostrophe usage 2023-10-09 12:06:29 -07:00
git-send-email.txt Merge branch 'ja/doc-formatting-fix' 2024-03-25 16:16:34 -07:00
git-send-pack.txt documentation: add missing article 2023-10-09 12:06:29 -07:00
git-sh-i18n--envsubst.txt
git-sh-i18n.txt
git-sh-setup.txt documentation: add missing article 2023-10-09 12:06:29 -07:00
git-shell.txt
git-shortlog.txt
git-show-branch.txt Merge branch 'ri/doc-show-branch-fix' 2024-07-15 10:11:43 -07:00
git-show-index.txt
git-show-ref.txt show-ref: introduce --branches and deprecate --heads 2024-06-04 15:07:08 -07:00
git-show.txt documentation: fix singular vs. plural 2023-10-09 12:06:29 -07:00
git-sparse-checkout.txt docs: typofixes 2023-06-12 13:52:51 -07:00
git-stage.txt
git-stash.txt docs: typofixes 2023-06-12 13:52:51 -07:00
git-status.txt Merge branch 'jc/show-untracked-false' 2024-03-28 14:13:50 -07:00
git-stripspace.txt documentation: fix capitalization 2023-10-09 12:06:29 -07:00
git-submodule.txt doc: enforce dashes in placeholders 2023-12-26 11:06:55 -08:00
git-svn.txt doc: enforce dashes in placeholders 2023-12-26 11:06:55 -08:00
git-switch.txt Merge branch 'jc/orphan-unborn' 2024-01-02 13:51:30 -08:00
git-symbolic-ref.txt documentation: fix subject/verb agreement 2023-10-09 12:06:29 -07:00
git-tag.txt builtin/tag: add --trailer option 2024-05-07 10:06:03 -07:00
git-tools.txt
git-unpack-file.txt
git-unpack-objects.txt
git-update-index.txt documentation: git-update-index: add --show-index-version to synopsis 2024-05-13 16:57:17 -07:00
git-update-ref.txt update-ref: add support for 'symref-update' command 2024-06-07 10:25:45 -07:00
git-update-server-info.txt documentation: fix capitalization 2023-10-09 12:06:29 -07:00
git-upload-archive.txt
git-upload-pack.txt Sync with 2.42.2 2024-04-19 12:38:50 +02:00
git-var.txt documentation: wording improvements 2023-10-09 12:04:21 -07:00
git-verify-commit.txt
git-verify-pack.txt documentation: add missing article 2023-10-09 12:06:29 -07:00
git-verify-tag.txt
git-version.txt
git-web--browse.txt
git-whatchanged.txt documentation: add missing article 2023-10-09 12:06:29 -07:00
git-worktree.txt orphan/unborn: add to the glossary and use them consistently 2023-11-24 12:11:23 +09:00
git-write-tree.txt
git.txt diff: let external diffs report that changes are uninteresting 2024-06-10 09:20:46 -07:00
gitattributes.txt Merge branch 'ss/doc-eol-attr-fix' 2024-07-08 14:53:08 -07:00
gitcli.txt gitcli: drop mention of “non-dashed form” 2024-03-01 10:45:01 -08:00
gitcore-tutorial.txt doc: switch links to https 2023-11-26 10:07:05 +09:00
gitcredentials.txt Merge branch 'mh/doc-credential-helpers' 2023-07-18 07:28:52 -07:00
gitcvs-migration.txt
gitdiffcore.txt doc: enforce dashes in placeholders 2023-12-26 11:06:55 -08:00
giteveryday.txt Merge branch 'sn/typo-grammo-phraso-fixes' 2023-10-30 07:09:55 +09:00
gitfaq.txt gitfaq: add entry about syncing working trees 2024-07-09 21:24:42 -07:00
gitformat-bundle.txt documentation: fix subject/verb agreement 2023-10-09 12:06:29 -07:00
gitformat-chunk.txt documentation: fix verb tense 2023-10-09 12:06:29 -07:00
gitformat-commit-graph.txt gitformat-commit-graph: describe version 2 of BDAT 2024-06-25 13:52:05 -07:00
gitformat-index.txt doc: enforce dashes in placeholders 2023-12-26 11:06:55 -08:00
gitformat-pack.txt midx: implement `BTMP` chunk 2023-12-14 14:38:07 -08:00
gitformat-signature.txt
gitglossary.txt
githooks.txt Merge branch 'jt/doc-post-receive-hook-update' 2024-07-31 13:34:16 -07:00
gitignore.txt Merge branch 'jc/gitignore-doc-pattern-markup' 2023-07-27 15:26:37 -07:00
gitk.txt doc: enforce dashes in placeholders 2023-12-26 11:06:55 -08:00
gitmailmap.txt
gitmodules.txt doc: highlight that .gitmodules does not support !command 2023-07-25 14:55:07 -07:00
gitnamespaces.txt
gitpacking.txt Documentation/gitpacking: make sample configs listing blocks 2024-07-17 08:48:30 -07:00
gitprotocol-capabilities.txt doc: enforce dashes in placeholders 2023-12-26 11:06:55 -08:00
gitprotocol-common.txt documentation: remove extraneous words 2023-10-09 12:06:29 -07:00
gitprotocol-http.txt Merge branch 'js/update-urls-in-doc-and-comment' into maint-2.43 2024-02-08 16:22:01 -08:00
gitprotocol-pack.txt documentation: fix subject/verb agreement 2023-10-09 12:06:29 -07:00
gitprotocol-v2.txt upload-pack: accept only a single packfile-uri line 2024-02-28 14:42:01 -08:00
gitremote-helpers.txt Merge branch 'jk/remote-helper-object-format-option-fix' 2024-04-03 10:56:18 -07:00
gitrepository-layout.txt doc: make the gitfile syntax easier to discover 2023-12-03 10:54:51 +09:00
gitrevisions.txt
gitsubmodules.txt doc: enforce dashes in placeholders 2023-12-26 11:06:55 -08:00
gittutorial-2.txt
gittutorial.txt doc: correct the 50 characters soft limit (+) 2023-10-09 12:07:26 -07:00
gitweb.conf.txt Merge branch 'js/update-urls-in-doc-and-comment' into maint-2.43 2024-02-08 16:22:01 -08:00
gitweb.txt Merge branch 'js/update-urls-in-doc-and-comment' into maint-2.43 2024-02-08 16:22:01 -08:00
gitworkflows.txt
glossary-content.txt Merge branch 'ps/pseudo-ref-terminology' 2024-07-18 08:30:26 -07:00
howto-index.sh
i18n.txt documentation: fix subject/verb agreement 2023-10-09 12:06:29 -07:00
install-doc-quick.sh
install-webdoc.sh
line-range-format.txt
line-range-options.txt
lint-fsck-msgids.perl
lint-gitlink.perl
lint-man-end-blurb.perl
lint-man-section-order.perl
lint-manpages.sh Documentation/lint-manpages: bubble up errors 2024-06-06 08:20:51 -07:00
manpage-bold-literal.xsl
manpage-normal.xsl Merge branch 'fc/doc-man-lift-title-length-limit' 2023-05-10 10:23:29 -07:00
manpage.xsl
merge-options.txt docs: MERGE_AUTOSTASH is not that special 2023-12-15 14:08:28 -08:00
merge-strategies.txt
object-format-disclaimer.txt doc: sha256 is no longer experimental 2023-07-31 09:11:04 -07:00
pretty-formats.txt Merge branch 'bl/doc-key-val-sep-fix' 2024-03-25 16:16:35 -07:00
pretty-options.txt documentation: add missing article 2023-10-09 12:06:29 -07:00
pull-fetch-param.txt documentation: add missing article 2023-10-09 12:06:29 -07:00
ref-reachability-filters.txt
ref-storage-format.txt refs: introduce reftable backend 2024-02-07 08:28:37 -08:00
rerere-options.txt
rev-list-description.txt
rev-list-options.txt Merge branch 'ja/doc-formatting-fix' 2024-03-25 16:16:34 -07:00
revisions.txt Documentation: document AUTO_MERGE 2023-05-23 17:21:47 +09:00
scalar.txt scalar: add --[no-]src option 2023-08-28 09:16:06 -07:00
sequencer.txt
signoff-option.txt doc: switch links to https 2023-11-26 10:07:05 +09:00
texi.xsl
trace2-target-values.txt doc: enforce dashes in placeholders 2023-12-26 11:06:55 -08:00
transfer-data-leaks.txt
urls-remotes.txt documentation: fix singular vs. plural 2023-10-09 12:06:29 -07:00
urls.txt doc: git-clone: apply new documentation formatting guidelines 2024-03-29 10:57:40 -07:00
user-manual.conf
user-manual.txt Documentation/user-manual.txt: example for generating object hashes 2024-03-12 13:32:11 -07:00