git-commit-vandalism/builtin
Nguyễn Thái Ngọc Duy c3d6b70338 fetch: only run 'gc' once when fetching multiple remotes
In multiple remotes mode, git-fetch is launched for n-1 remotes and the
last remote is handled by the current process. Each of these processes
will in turn run 'gc' at the end.

This is not really a problem because even if multiple 'gc --auto' is run
at the same time we still handle it correctly. It does show multiple
"auto packing in the background" messages though. And we may waste some
resources when gc actually runs because we still do some stuff before
checking the lock and moving it to background.

So let's try to avoid that. We should only need one 'gc' run after all
objects and references are added anyway. Add a new option --no-auto-gc
that will be used by those n-1 processes. 'gc --auto' will always run on
the main fetch process (*).

(*) even if we fetch remotes in parallel at some point in future, this
    should still be fine because we should "join" all those processes
    before this step.

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Acked-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2019-06-19 20:56:44 -07:00
..
add.c add: error appropriately on repository with no commits 2019-04-10 12:52:50 +09:00
am.c Merge branch 'bc/hash-transition-16' 2019-04-25 16:41:17 +09:00
annotate.c
apply.c apply.c: make init_apply_state() take a struct repository 2018-08-13 14:14:44 -07:00
archive.c pack-protocol.txt: accept error packets in any context 2019-01-02 13:05:30 -08:00
bisect--helper.c Fix typos in translatable strings for v2.21.0 2019-02-11 12:58:06 -08:00
blame.c Merge branch 'sg/blame-in-bare-start-at-head' 2019-04-25 16:41:21 +09:00
branch.c parse_opt_ref_sorting: always use with NONEG flag 2019-03-21 12:03:35 +09:00
bundle.c create_bundle(): drop unused "header" parameter 2019-01-24 12:35:44 -08:00
cat-file.c Merge branch 'jk/loose-object-cache-oid' 2019-02-06 22:05:27 -08:00
check-attr.c cache.h: flip NO_THE_INDEX_COMPATIBILITY_MACROS switch 2019-01-24 11:55:06 -08:00
check-ignore.c cache.h: flip NO_THE_INDEX_COMPATIBILITY_MACROS switch 2019-01-24 11:55:06 -08:00
check-mailmap.c
check-ref-format.c
checkout-index.c Merge branch 'nd/the-index-final' 2019-02-06 22:05:23 -08:00
checkout.c Merge branch 'nd/checkout-m' 2019-04-25 16:41:14 +09:00
clean.c cache.h: flip NO_THE_INDEX_COMPATIBILITY_MACROS switch 2019-01-24 11:55:06 -08:00
clone.c Merge branch 'nd/parse-options-aliases' 2019-05-19 16:45:28 +09:00
column.c column: fix off-by-one default width 2018-05-13 10:45:05 +09:00
commit-graph.c commit-graph verify: detect inability to read the graph 2019-04-01 12:14:50 +09:00
commit-tree.c commit-tree: utilize parse-options api 2019-03-08 10:31:24 +09:00
commit.c Merge branch 'pw/clean-sequencer-state-upon-final-commit' 2019-05-13 23:50:35 +09:00
config.c Merge branch 'jk/save-getenv-result' 2019-01-29 12:47:54 -08:00
count-objects.c rename "alternate_object_database" to "object_directory" 2018-11-13 14:22:02 +09:00
credential.c
describe.c Merge branch 'ss/describe-dirty-in-the-right-directory' 2019-02-06 22:05:29 -08:00
diff-files.c cache.h: flip NO_THE_INDEX_COMPATIBILITY_MACROS switch 2019-01-24 11:55:06 -08:00
diff-index.c cache.h: flip NO_THE_INDEX_COMPATIBILITY_MACROS switch 2019-01-24 11:55:06 -08:00
diff-tree.c Merge branch 'en/combined-all-paths' 2019-03-07 09:59:54 +09:00
diff.c Merge branch 'nd/diff-parseopt-4' 2019-04-25 16:41:12 +09:00
difftool.c Merge branch 'js/difftool-no-index' 2019-05-19 16:45:35 +09:00
fast-export.c Merge branch 'en/fast-export-import' 2019-01-04 13:33:33 -08:00
fetch-pack.c fetch_pack(): drop unused parameters 2019-03-20 18:34:09 +09:00
fetch.c fetch: only run 'gc' once when fetching multiple remotes 2019-06-19 20:56:44 -07:00
fmt-merge-msg.c Merge branch 'nd/the-index' 2018-10-19 13:34:02 +09:00
for-each-ref.c parse_opt_ref_sorting: always use with NONEG flag 2019-03-21 12:03:35 +09:00
fsck.c Merge branch 'jk/fsck-doc' 2019-03-20 15:16:06 +09:00
gc.c gc: handle & check gc.reflogExpire config 2019-04-01 12:51:51 +09:00
get-tar-commit-id.c builtin/get-tar-commit-id: make hash size independent 2019-04-01 11:57:39 +09:00
grep.c Merge branch 'nd/the-index-final' 2019-02-06 22:05:23 -08:00
hash-object.c cache.h: flip NO_THE_INDEX_COMPATIBILITY_MACROS switch 2019-01-24 11:55:06 -08:00
help.c completion: add more parameter value completion 2019-02-20 12:31:56 -08:00
index-pack.c index-pack: show progress while checking objects 2019-04-01 18:08:05 +09:00
init-db.c Merge branch 'js/init-db-update-for-mingw' 2019-04-16 19:28:05 +09:00
interpret-trailers.c assert NOARG/NONEG behavior of parse-options callbacks 2018-11-06 12:56:29 +09:00
log.c Merge branch 'jk/unused-params-even-more' 2019-04-25 16:41:12 +09:00
ls-files.c Merge branch 'tg/ls-files-debug-format-fix' 2019-04-25 16:41:20 +09:00
ls-remote.c parse_opt_ref_sorting: always use with NONEG flag 2019-03-21 12:03:35 +09:00
ls-tree.c Merge branch 'nd/attr-pathspec-in-tree-walk' 2019-01-14 15:29:28 -08:00
mailinfo.c
mailsplit.c
merge-base.c Merge branch 'pk/rebase-in-c-4-opts' 2018-11-02 11:04:55 +09:00
merge-file.c assert NOARG/NONEG behavior of parse-options callbacks 2018-11-06 12:56:29 +09:00
merge-index.c cache.h: flip NO_THE_INDEX_COMPATIBILITY_MACROS switch 2019-01-24 11:55:06 -08:00
merge-ours.c cache.h: flip NO_THE_INDEX_COMPATIBILITY_MACROS switch 2019-01-24 11:55:06 -08:00
merge-recursive.c Merge branch 'nd/the-index-final' 2019-02-06 22:05:23 -08:00
merge-tree.c Merge branch 'nd/the-index-final' 2019-02-06 22:05:23 -08:00
merge.c cherry-pick/revert: add scissors line on merge conflict 2019-04-19 12:05:36 +09:00
mktag.c object-store: move object access functions to object-store.h 2018-05-16 11:42:03 +09:00
mktree.c builtin/mktree: remove hard-coded constant 2018-10-15 12:53:15 +09:00
multi-pack-index.c midx: pass a repository pointer 2019-05-07 13:48:41 +09:00
mv.c cache.h: flip NO_THE_INDEX_COMPATIBILITY_MACROS switch 2019-01-24 11:55:06 -08:00
name-rev.c builtin/name-rev: make hash-size independent 2019-04-01 11:57:38 +09:00
notes.c Merge branch 'nd/the-index' into md/list-objects-filter-by-depth 2019-01-15 15:38:29 -08:00
pack-objects.c Merge branch 'ds/midx-too-many-packs' 2019-05-19 16:45:30 +09:00
pack-redundant.c object-store: rename and expand packed_git's sha1 member 2019-04-01 11:57:38 +09:00
pack-refs.c Honor core.precomposeUnicode in more places 2019-04-26 10:54:03 +09:00
patch-id.c
prune-packed.c Merge branch 'rj/prune-packed-excess-args' 2019-03-07 09:59:55 +09:00
prune.c prune: check SEEN flag for reachability 2019-02-14 15:25:33 -08:00
pull.c Merge branch 'dl/merge-cleanup-scissors-fix' 2019-05-09 00:37:24 +09:00
push.c Merge branch 'nd/style-opening-brace' 2019-01-18 13:49:52 -08:00
range-diff.c range-diff: use parse_options() instead of diff_opt_parse() 2019-03-24 22:21:24 +09:00
read-tree.c read-tree: add --quiet 2019-03-24 21:35:34 +09:00
rebase.c Merge branch 'js/rebase-config-bitfix' 2019-05-30 10:50:47 -07:00
receive-pack.c Merge branch 'ab/receive-pack-use-after-free-fix' 2019-03-07 09:59:57 +09:00
reflog.c Merge branch 'jk/loose-object-cache-oid' 2019-02-06 22:05:27 -08:00
remote-ext.c
remote-fd.c
remote.c Merge branch 'ms/remote-error-message-update' 2018-09-24 10:30:52 -07:00
repack.c repack: enable bitmaps by default on bare repos 2019-03-18 14:09:54 +09:00
replace.c Merge branch 'cc/replace-graft-peel-tags' 2019-05-09 00:37:24 +09:00
rerere.c Merge branch 'nd/the-index' into md/list-objects-filter-by-depth 2019-01-15 15:38:29 -08:00
reset.c Merge branch 'bp/post-index-change-hook' 2019-04-25 16:41:11 +09:00
rev-list.c Merge branch 'tb/unexpected' 2019-05-09 00:37:25 +09:00
rev-parse.c cache.h: flip NO_THE_INDEX_COMPATIBILITY_MACROS switch 2019-01-24 11:55:06 -08:00
revert.c cherry-pick/revert: add scissors line on merge conflict 2019-04-19 12:05:36 +09:00
rm.c Use 'unsigned short' for mode, like diff_filespec does 2019-04-08 16:02:07 +09:00
send-pack.c pack-protocol.txt: accept error packets in any context 2019-01-02 13:05:30 -08:00
shortlog.c Merge branch 'nd/show-gitcomp-compilation-fix' into maint 2018-12-15 12:24:33 +09:00
show-branch.c refs.c: remove the_repo from read_ref_at() 2019-04-08 17:26:33 +09:00
show-index.c make show-index a builtin 2018-05-29 00:28:22 +09:00
show-ref.c Merge branch 'en/unicode-in-refnames' 2019-05-19 16:45:30 +09:00
stash.c Merge branch 'jk/unused-params-even-more' 2019-04-25 16:41:12 +09:00
stripspace.c stripspace: allow -s/-c outside git repository 2018-12-26 15:41:47 -08:00
submodule--helper.c Merge branch 'nd/submodule-helper-incomplete-line-fix' 2019-05-19 16:45:27 +09:00
symbolic-ref.c
tag.c Merge branch 'dl/warn-tagging-a-tag' 2019-05-19 16:45:26 +09:00
unpack-file.c object-store: move object access functions to object-store.h 2018-05-16 11:42:03 +09:00
unpack-objects.c convert "hashcmp() != 0" to "!hasheq()" 2018-08-29 11:32:49 -07:00
update-index.c Merge branch 'en/merge-directory-renames' 2019-05-09 00:37:22 +09:00
update-ref.c update-ref: allow --no-deref with --stdin 2018-09-12 15:17:17 -07:00
update-server-info.c
upload-archive.c archive: initialize archivers earlier 2018-10-26 10:17:59 +09:00
upload-pack.c check_replace_refs: rename to read_replace_refs 2018-07-18 15:45:14 -07:00
var.c
verify-commit.c commit: add repository argument to lookup_commit 2018-06-29 10:43:39 -07:00
verify-pack.c
verify-tag.c ref-filter: use "struct object_id" consistently 2018-04-09 06:14:45 +09:00
worktree.c Merge branch 'ms/worktree-add-atomic-mkdir' 2019-04-10 02:14:24 +09:00
write-tree.c cache.h: flip NO_THE_INDEX_COMPATIBILITY_MACROS switch 2019-01-24 11:55:06 -08:00