Revision 663b2b1b90bf76275044824ddeca96aaec240f09 authored by Derrick Stolee on 17 September 2020, 18:11:46 UTC, committed by Junio C Hamano on 17 September 2020, 18:30:05 UTC
The first new task in the 'git maintenance' builtin is the
'commit-graph' task. This updates the commit-graph file
incrementally with the command

	git commit-graph write --reachable --split

By writing an incremental commit-graph file using the "--split"
option we minimize the disruption from this operation. The default
behavior is to merge layers until the new "top" layer is less than
half the size of the layer below. This provides quick writes most
of the time, with the longer writes following a power law
distribution.

Most importantly, concurrent Git processes only look at the
commit-graph-chain file for a very short amount of time, so they
will verly likely not be holding a handle to the file when we try
to replace it. (This only matters on Windows.)

If a concurrent process reads the old commit-graph-chain file, but
our job expires some of the .graph files before they can be read,
then those processes will see a warning message (but not fail).
This could be avoided by a future update to use the --expire-time
argument when writing the commit-graph.

Signed-off-by: Derrick Stolee <dstolee@microsoft.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
1 parent 3103e98
History
File Mode Size
fetch.br-branches-default -rw-r--r-- 560 bytes
fetch.br-branches-default-merge -rw-r--r-- 643 bytes
fetch.br-branches-default-merge_branches-default -rw-r--r-- 660 bytes
fetch.br-branches-default-octopus -rw-r--r-- 705 bytes
fetch.br-branches-default-octopus_branches-default -rw-r--r-- 722 bytes
fetch.br-branches-default_branches-default -rw-r--r-- 577 bytes
fetch.br-branches-one -rw-r--r-- 553 bytes
fetch.br-branches-one-merge -rw-r--r-- 636 bytes
fetch.br-branches-one-merge_branches-one -rw-r--r-- 649 bytes
fetch.br-branches-one-octopus -rw-r--r-- 623 bytes
fetch.br-branches-one-octopus_branches-one -rw-r--r-- 636 bytes
fetch.br-branches-one_branches-one -rw-r--r-- 566 bytes
fetch.br-config-explicit -rw-r--r-- 786 bytes
fetch.br-config-explicit-merge -rw-r--r-- 792 bytes
fetch.br-config-explicit-merge_config-explicit -rw-r--r-- 808 bytes
fetch.br-config-explicit-octopus -rw-r--r-- 781 bytes
fetch.br-config-explicit-octopus_config-explicit -rw-r--r-- 797 bytes
fetch.br-config-explicit_config-explicit -rw-r--r-- 802 bytes
fetch.br-config-glob -rw-r--r-- 795 bytes
fetch.br-config-glob-merge -rw-r--r-- 788 bytes
fetch.br-config-glob-merge_config-glob -rw-r--r-- 800 bytes
fetch.br-config-glob-octopus -rw-r--r-- 777 bytes
fetch.br-config-glob-octopus_config-glob -rw-r--r-- 789 bytes
fetch.br-config-glob_config-glob -rw-r--r-- 807 bytes
fetch.br-remote-explicit -rw-r--r-- 786 bytes
fetch.br-remote-explicit-merge -rw-r--r-- 792 bytes
fetch.br-remote-explicit-merge_remote-explicit -rw-r--r-- 808 bytes
fetch.br-remote-explicit-octopus -rw-r--r-- 781 bytes
fetch.br-remote-explicit-octopus_remote-explicit -rw-r--r-- 797 bytes
fetch.br-remote-explicit_remote-explicit -rw-r--r-- 802 bytes
fetch.br-remote-glob -rw-r--r-- 795 bytes
fetch.br-remote-glob-merge -rw-r--r-- 788 bytes
fetch.br-remote-glob-merge_remote-glob -rw-r--r-- 800 bytes
fetch.br-remote-glob-octopus -rw-r--r-- 777 bytes
fetch.br-remote-glob-octopus_remote-glob -rw-r--r-- 789 bytes
fetch.br-remote-glob_remote-glob -rw-r--r-- 807 bytes
fetch.br-unconfig -rw-r--r-- 792 bytes
fetch.br-unconfig_--tags_.._.git -rw-r--r-- 548 bytes
fetch.br-unconfig_.._.git -rw-r--r-- 68 bytes
fetch.br-unconfig_.._.git_one -rw-r--r-- 88 bytes
fetch.br-unconfig_.._.git_one_tag_tag-one_tag_tag-three-file -rw-r--r-- 579 bytes
fetch.br-unconfig_.._.git_one_two -rw-r--r-- 154 bytes
fetch.br-unconfig_.._.git_tag_tag-one-tree_tag_tag-three-file -rw-r--r-- 531 bytes
fetch.br-unconfig_.._.git_tag_tag-one_tag_tag-three -rw-r--r-- 495 bytes
fetch.br-unconfig_branches-default -rw-r--r-- 569 bytes
fetch.br-unconfig_branches-one -rw-r--r-- 562 bytes
fetch.br-unconfig_config-explicit -rw-r--r-- 795 bytes
fetch.br-unconfig_config-glob -rw-r--r-- 804 bytes
fetch.br-unconfig_remote-explicit -rw-r--r-- 795 bytes
fetch.br-unconfig_remote-glob -rw-r--r-- 804 bytes
fetch.master -rw-r--r-- 787 bytes
fetch.master_--tags_.._.git -rw-r--r-- 543 bytes
fetch.master_.._.git -rw-r--r-- 63 bytes
fetch.master_.._.git_one -rw-r--r-- 83 bytes
fetch.master_.._.git_one_tag_tag-one_tag_tag-three-file -rw-r--r-- 574 bytes
fetch.master_.._.git_one_two -rw-r--r-- 149 bytes
fetch.master_.._.git_tag_tag-one-tree_tag_tag-three-file -rw-r--r-- 526 bytes
fetch.master_.._.git_tag_tag-one_tag_tag-three -rw-r--r-- 490 bytes
fetch.master_branches-default -rw-r--r-- 564 bytes
fetch.master_branches-one -rw-r--r-- 557 bytes
fetch.master_config-explicit -rw-r--r-- 790 bytes
fetch.master_config-glob -rw-r--r-- 799 bytes
fetch.master_remote-explicit -rw-r--r-- 790 bytes
fetch.master_remote-glob -rw-r--r-- 799 bytes
refs.br-branches-default -rw-r--r-- 771 bytes
refs.br-branches-default-merge -rw-r--r-- 771 bytes
refs.br-branches-default-merge_branches-default -rw-r--r-- 771 bytes
refs.br-branches-default-octopus -rw-r--r-- 771 bytes
refs.br-branches-default-octopus_branches-default -rw-r--r-- 771 bytes
refs.br-branches-default_branches-default -rw-r--r-- 771 bytes
refs.br-branches-one -rw-r--r-- 767 bytes
refs.br-branches-one-merge -rw-r--r-- 767 bytes
refs.br-branches-one-merge_branches-one -rw-r--r-- 767 bytes
refs.br-branches-one-octopus -rw-r--r-- 767 bytes
refs.br-branches-one-octopus_branches-one -rw-r--r-- 767 bytes
refs.br-branches-one_branches-one -rw-r--r-- 767 bytes
refs.br-config-explicit -rw-r--r-- 955 bytes
refs.br-config-explicit-merge -rw-r--r-- 955 bytes
refs.br-config-explicit-merge_config-explicit -rw-r--r-- 955 bytes
refs.br-config-explicit-octopus -rw-r--r-- 955 bytes
refs.br-config-explicit-octopus_config-explicit -rw-r--r-- 955 bytes
refs.br-config-explicit_config-explicit -rw-r--r-- 955 bytes
refs.br-config-glob -rw-r--r-- 955 bytes
refs.br-config-glob-merge -rw-r--r-- 955 bytes
refs.br-config-glob-merge_config-glob -rw-r--r-- 955 bytes
refs.br-config-glob-octopus -rw-r--r-- 955 bytes
refs.br-config-glob-octopus_config-glob -rw-r--r-- 955 bytes
refs.br-config-glob_config-glob -rw-r--r-- 955 bytes
refs.br-remote-explicit -rw-r--r-- 955 bytes
refs.br-remote-explicit-merge -rw-r--r-- 955 bytes
refs.br-remote-explicit-merge_remote-explicit -rw-r--r-- 955 bytes
refs.br-remote-explicit-octopus -rw-r--r-- 955 bytes
refs.br-remote-explicit-octopus_remote-explicit -rw-r--r-- 955 bytes
refs.br-remote-explicit_remote-explicit -rw-r--r-- 955 bytes
refs.br-remote-glob -rw-r--r-- 955 bytes
refs.br-remote-glob-merge -rw-r--r-- 955 bytes
refs.br-remote-glob-merge_remote-glob -rw-r--r-- 955 bytes
refs.br-remote-glob-octopus -rw-r--r-- 955 bytes
refs.br-remote-glob-octopus_remote-glob -rw-r--r-- 955 bytes
refs.br-remote-glob_remote-glob -rw-r--r-- 955 bytes
refs.br-unconfig -rw-r--r-- 702 bytes
refs.br-unconfig_--tags_.._.git -rw-r--r-- 702 bytes
refs.br-unconfig_.._.git -rw-r--r-- 331 bytes
refs.br-unconfig_.._.git_one -rw-r--r-- 331 bytes
refs.br-unconfig_.._.git_one_tag_tag-one_tag_tag-three-file -rw-r--r-- 702 bytes
refs.br-unconfig_.._.git_one_two -rw-r--r-- 331 bytes
refs.br-unconfig_.._.git_tag_tag-one-tree_tag_tag-three-file -rw-r--r-- 702 bytes
refs.br-unconfig_.._.git_tag_tag-one_tag_tag-three -rw-r--r-- 702 bytes
refs.br-unconfig_branches-default -rw-r--r-- 771 bytes
refs.br-unconfig_branches-one -rw-r--r-- 767 bytes
refs.br-unconfig_config-explicit -rw-r--r-- 955 bytes
refs.br-unconfig_config-glob -rw-r--r-- 955 bytes
refs.br-unconfig_remote-explicit -rw-r--r-- 955 bytes
refs.br-unconfig_remote-glob -rw-r--r-- 955 bytes
refs.master -rw-r--r-- 702 bytes
refs.master_--tags_.._.git -rw-r--r-- 702 bytes
refs.master_.._.git -rw-r--r-- 331 bytes
refs.master_.._.git_one -rw-r--r-- 331 bytes
refs.master_.._.git_one_tag_tag-one_tag_tag-three-file -rw-r--r-- 702 bytes
refs.master_.._.git_one_two -rw-r--r-- 331 bytes
refs.master_.._.git_tag_tag-one-tree_tag_tag-three-file -rw-r--r-- 702 bytes
refs.master_.._.git_tag_tag-one_tag_tag-three -rw-r--r-- 702 bytes
refs.master_branches-default -rw-r--r-- 771 bytes
refs.master_branches-one -rw-r--r-- 767 bytes
refs.master_config-explicit -rw-r--r-- 955 bytes
refs.master_config-glob -rw-r--r-- 955 bytes
refs.master_remote-explicit -rw-r--r-- 955 bytes
refs.master_remote-glob -rw-r--r-- 955 bytes

back to top