git-commit-vandalism/builtin
Derrick Stolee 0087a87ba8 commit-graph: persist existence of changed-paths
The changed-path Bloom filters were released in v2.27.0, but have a
significant drawback. A user can opt-in to writing the changed-path
filters using the "--changed-paths" option to "git commit-graph write"
but the next write will drop the filters unless that option is
specified.

This becomes even more important when considering the interaction with
gc.writeCommitGraph (on by default) or fetch.writeCommitGraph (part of
features.experimental). These config options trigger commit-graph writes
that the user did not signal, and hence there is no --changed-paths
option available.

Allow a user that opts-in to the changed-path filters to persist the
property of "my commit-graph has changed-path filters" automatically. A
user can drop filters using the --no-changed-paths option.

In the process, we need to be extremely careful to match the Bloom
filter settings as specified by the commit-graph. This will allow future
versions of Git to customize these settings, and the version with this
change will persist those settings as commit-graphs are rewritten on
top.

Use the trace2 API to signal the settings used during the write, and
check that output in a test after manually adjusting the correct bytes
in the commit-graph file.

Signed-off-by: Derrick Stolee <dstolee@microsoft.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2020-07-01 14:17:43 -07:00
..
add.c Merge branch 'hw/advice-add-nothing' 2020-02-14 12:54:19 -08:00
am.c am: support --show-current-patch=diff to retrieve .git/rebase-apply/patch 2020-02-20 13:20:41 -08:00
annotate.c
apply.c
archive.c
bisect--helper.c bisect: libify check_good_are_ancestors_of_bad and its dependents 2020-02-19 09:37:14 -08:00
blame.c blame: use changed-path Bloom filters 2020-04-16 15:38:06 -07:00
branch.c l10n: minor case fix in 'git branch' '--unset-upstream' description 2019-12-09 12:30:55 -08:00
bundle.c bundle-verify: add --quiet 2019-11-11 11:46:29 +09:00
cat-file.c convert: provide additional metadata to filters 2020-03-16 11:37:02 -07:00
check-attr.c
check-ignore.c check-ignore: fix documentation and implementation to match 2020-02-18 15:28:58 -08:00
check-mailmap.c
check-ref-format.c
checkout-index.c
checkout.c builtin/checkout: compute checkout metadata for checkouts 2020-03-16 11:37:02 -07:00
clean.c Merge branch 'en/clean-nested-with-ignored' 2019-10-11 14:24:46 +09:00
clone.c Merge branch 'bc/filter-process' 2020-03-26 17:11:20 -07:00
column.c builtin: consistently pass cmd_* prefix to parse_options 2019-05-13 14:22:53 +09:00
commit-graph.c commit-graph: persist existence of changed-paths 2020-07-01 14:17:43 -07:00
commit-tree.c
commit.c tests: write commit-graph with Bloom filters 2020-04-16 15:38:04 -07:00
config.c config: add '--show-scope' to print the scope of a config value 2020-02-10 10:49:12 -08:00
count-objects.c
credential.c
describe.c Merge branch 'jc/describe-misnamed-annotated-tag' 2020-03-26 17:11:21 -07:00
diff-files.c
diff-index.c
diff-tree.c
diff.c Merge branch 'nd/diff-parseopt-4' 2019-04-25 16:41:12 +09:00
difftool.c hashmap: remove type arg from hashmap_{get,put,remove}_entry 2019-10-07 10:20:12 +09:00
env--helper.c env--helper: mark a file-local symbol as static 2019-07-11 14:31:04 -07:00
fast-export.c Merge branch 'mt/use-passed-repo-more-in-funcs' 2020-02-14 12:54:22 -08:00
fetch-pack.c fetch_pack(): drop unused parameters 2019-03-20 18:34:09 +09:00
fetch.c Merge branch 'ds/partial-clone-fixes' 2020-03-02 15:07:19 -08:00
fmt-merge-msg.c gpg-interface: prefer check_signature() for GPG verification 2020-03-15 09:46:28 -07:00
for-each-ref.c parse_opt_ref_sorting: always use with NONEG flag 2019-03-21 12:03:35 +09:00
fsck.c fsck: only provide oid/type in fsck_error callback 2019-10-28 14:05:18 +09:00
gc.c commit-graph.h: store an odb in 'struct write_commit_graph_context' 2020-02-04 11:36:37 -08: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 'mt/threaded-grep-in-object-store' 2020-02-14 12:54:20 -08:00
hash-object.c builtin: consistently pass cmd_* prefix to parse_options 2019-05-13 14:22:53 +09:00
help.c
index-pack.c Merge branch 'jk/index-pack-dupfix' 2020-02-14 12:54:24 -08:00
init-db.c Merge branch 'bc/sha-256-part-1-of-4' 2020-03-26 17:11:20 -07:00
interpret-trailers.c interpret-trailers: load default config 2019-06-19 07:12:49 -07:00
log.c Merge branch 'dl/format-patch-notes-config-fixup' 2019-12-25 11:21:58 -08:00
ls-files.c Merge branch 'ds/include-exclude' 2019-09-30 13:19:32 +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
mailinfo.c
mailsplit.c
merge-base.c rebase: --fork-point regression fix 2020-02-11 09:59:39 -08:00
merge-file.c
merge-index.c
merge-ours.c
merge-recursive.c Ensure index matches head before invoking merge machinery, round N 2019-08-19 10:08:03 -07:00
merge-tree.c Merge branch 'jk/tree-walk-overflow' 2019-08-22 12:34:10 -07:00
merge.c tests: write commit-graph with Bloom filters 2020-04-16 15:38:04 -07:00
mktag.c sha1-file: allow check_object_signature() to handle any repo 2020-01-31 10:45:39 -08:00
mktree.c mktree: drop unused length parameter 2019-05-13 14:22:54 +09:00
multi-pack-index.c multi-pack-index: add [--[no-]progress] option. 2019-10-23 12:05:06 +09:00
mv.c
name-rev.c name-rev: sort tip names before applying 2020-02-05 10:36:33 -08:00
notes.c strbuf: add and use strbuf_insertstr() 2020-02-10 09:04:45 -08:00
pack-objects.c Merge branch 'ds/default-pack-use-sparse-to-true' 2020-03-29 09:32:51 -07: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 patch-id: use oid_to_hex() to print multiple object IDs 2019-12-09 12:26:40 -08:00
prune-packed.c
prune.c object: convert lookup_object() to use object_id 2019-06-20 10:18:09 -07:00
pull.c pull: warn if the user didn't say whether to rebase or to merge 2020-03-10 13:06:41 -07:00
push.c push: use skip_prefix() instead of starts_with() 2019-11-27 11:18:39 +09:00
range-diff.c range-diff: clear other_arg at end of function 2019-12-06 12:36:53 -08:00
read-tree.c sparse-checkout: update working directory in-process 2019-11-22 16:11:44 +09:00
rebase.c Merge branch 'bc/filter-process' 2020-03-26 17:11:20 -07:00
receive-pack.c receive.denyCurrentBranch: respect all worktrees 2020-02-24 11:14:43 -08:00
reflog.c C: use skip_prefix() to avoid hardcoded string length 2020-01-31 13:03:45 -08:00
remote-ext.c
remote-fd.c
remote.c remote rename/remove: gently handle remote.pushDefault config 2020-02-10 10:52:10 -08:00
repack.c Merge branch 'wb/midx-progress' 2019-11-10 18:02:14 +09:00
replace.c sha1-file: pass git_hash_algo to hash_object_file() 2020-01-31 10:45:39 -08:00
rerere.c
reset.c builtin/reset: compute checkout metadata for reset 2020-03-16 11:37:02 -07:00
rev-list.c rev-list --count: comment on the use of count_right++ 2020-02-18 13:21:46 -08:00
rev-parse.c get_superproject_working_tree(): return strbuf 2020-03-10 11:41:40 -07:00
revert.c Merge branch 'ra/cherry-pick-revert-skip' 2019-07-19 11:30:21 -07:00
rm.c rm: support the --pathspec-from-file option 2020-02-19 10:56:49 -08:00
send-pack.c
shortlog.c
show-branch.c use strpbrk(3) to search for characters from a given set 2020-02-24 09:30:31 -08:00
show-index.c builtin/show-index: replace sha1_to_hex 2019-08-19 15:04:59 -07:00
show-ref.c Merge branch 'en/unicode-in-refnames' 2019-05-19 16:45:30 +09:00
sparse-checkout.c Merge branch 'ds/sparse-add' 2020-03-05 10:43:02 -08:00
stash.c Merge branch 'tg/retire-scripted-stash' 2020-03-26 17:11:21 -07:00
stripspace.c
submodule--helper.c submodule--helper.c: Rename 'cb_foreach' to 'foreach_cb' 2020-03-18 12:43:25 -07:00
symbolic-ref.c
tag.c tag: use new advice API to check visibility 2020-03-05 06:15:04 -08:00
unpack-file.c
unpack-objects.c sha1-file: pass git_hash_algo to hash_object_file() 2020-01-31 10:45:39 -08:00
update-index.c Merge branch 'js/update-index-ignore-removal-for-skip-worktree' 2019-11-10 18:02:16 +09:00
update-ref.c
update-server-info.c
upload-archive.c
upload-pack.c builtin: consistently pass cmd_* prefix to parse_options 2019-05-13 14:22:53 +09:00
var.c
verify-commit.c Merge branch 'jk/no-system-includes-in-dot-c' 2019-07-31 14:38:56 -07:00
verify-pack.c
verify-tag.c verify-tag: drop signal.h include 2019-06-19 08:19:21 -07:00
worktree.c real_path: remove unsafe API 2020-03-10 11:41:40 -07:00
write-tree.c cmd_{read,write}_tree: rename "unused" variable that is used 2019-05-13 14:22:53 +09:00