Subject: What's cooking in git.git (Jul 2024, #02; Mon, 8)

From: Junio C Hamano <[email-masked]>
Date: Mon, 08 Jul 2024 18:07:09 -0700

Here are the topics that have been cooking in my tree.  Commits
prefixed with '+' are in 'next' (being in 'next' is a sign that a
topic is stable enough to be used and are candidate to be in a
future release).  Commits prefixed with '-' are only in 'seen', and
aren't considered "accepted" at all and may be annotated with an URL
to a message that raises issues but they are no means exhaustive.  A
topic without enough support may be discarded after a long period of
no activity (of course they can be resubmit when new interests
arise).

Copies of the source code to Git live in many repositories, and the
following is a list of the ones I push into or their mirrors.  Some
repositories have only a subset of branches.

With maint, master, next, seen, todo:

	git://git.kernel.org/pub/scm/git/git.git/
	git://repo.or.cz/alt-git.git/
	https://kernel.googlesource.com/pub/scm/git/git/
	https://github.com/git/git/
	https://gitlab.com/git-scm/git/

With all the integration branches and topics broken out:

	https://github.com/gitster/git/

Even though the preformatted documentation in HTML and man format
are not sources, they are published in these repositories for
convenience (replace "htmldocs" with "manpages" for the manual
pages):

	git://git.kernel.org/pub/scm/git/git-htmldocs.git/
	https://github.com/gitster/git-htmldocs.git/

Release tarballs are available at:

	https://www.kernel.org/pub/software/scm/git/

--------------------------------------------------
[Graduated to 'master']

* db/date-underflow-fix (2024-06-25) 2 commits
  (merged to 'next' on 2024-06-26 at 8074493d4e)
 + date: detect underflow/overflow when parsing dates with timezone offset
 + t0006: simplify prerequisites

 date parser updates to be more careful about underflowing epoch
 based timestamp.
 source: <[email-masked]>

* ds/sparse-lstat-caching (2024-06-28) 5 commits
  (merged to 'next' on 2024-06-28 at 9efaea181d)
 + sparse-index: improve lstat caching of sparse paths
 + sparse-index: count lstat() calls
 + sparse-index: use strbuf in path_found()
 + sparse-index: refactor path_found()
 + sparse-checkout: refactor skip worktree retry logic

 The code to deal with modified paths that are out-of-cone in a
 sparsely checked out working tree has been optimized.
 cf. <[email-masked]>
 source: <[email-masked]>

* jc/archive-prefix-with-add-virtual-file (2024-06-26) 1 commit
  (merged to 'next' on 2024-06-26 at da3ae88d56)
 + archive: document that --add-virtual-file takes full path

 "git archive --add-virtual-file=<path>:<contents>" never paid
 attention to the --prefix=<prefix> option but the documentation
 said it would. The documentation has been corrected.
 source: <[email-masked]>

* ps/leakfixes-more (2024-06-11) 30 commits
  (merged to 'next' on 2024-06-27 at 9550a05068)
 + builtin/blame: fix leaking ignore revs files
 + builtin/blame: fix leaking prefixed paths
 + blame: fix leaking data for blame scoreboards
 + line-range: plug leaking find functions
 + merge: fix leaking merge bases
 + builtin/merge: fix leaking `struct cmdnames` in `get_strategy()`
 + sequencer: fix memory leaks in `make_script_with_merges()`
 + builtin/clone: plug leaking HEAD ref in `wanted_peer_refs()`
 + apply: fix leaking string in `match_fragment()`
 + sequencer: fix leaking string buffer in `commit_staged_changes()`
 + commit: fix leaking parents when calling `commit_tree_extended()`
 + config: fix leaking "core.notesref" variable
 + rerere: fix various trivial leaks
 + builtin/stash: fix leak in `show_stash()`
 + revision: free diff options
 + builtin/log: fix leaking commit list in git-cherry(1)
 + merge-recursive: fix memory leak when finalizing merge
 + builtin/merge-recursive: fix leaking object ID bases
 + builtin/difftool: plug memory leaks in `run_dir_diff()`
 + object-name: free leaking object contexts
 + builtin/rev-list: fix leaking bitmap index when calculating disk usage
 + notes: fix memory leak when pruning notes
 + revision: fix leaking display notes
 + merge-recursive: fix leaking rename conflict info
 + biultin/rev-parse: fix memory leaks in `--parseopt` mode
 + bundle: plug leaks in `create_bundle()`
 + notes-utils: free note trees when releasing copied notes
 + parse-options: fix leaks for users of OPT_FILENAME
 + revision: fix memory leak when reversing revisions
 + Merge branch 'ps/leakfixes' into ps/leakfixes-more

 More memory leaks have been plugged.
 cf. <CAOLa=ZRBrR5X1bQFAEqM3Ovx5G=[email-masked]>
 source: <[email-masked]>

* rj/pager-die-upon-exec-failure (2024-06-25) 1 commit
  (merged to 'next' on 2024-06-26 at bfb6361ca8)
 + pager: die when paging to non-existing command

 When GIT_PAGER failed to spawn, depending on the code path taken,
 we failed immediately (correct) or just spew the payload to the
 standard output (incorrect).  The code now always fail immediately
 when GIT_PAGER fails.
 source: <[email-masked]>

* ss/doc-eol-attr-fix (2024-06-24) 1 commit
  (merged to 'next' on 2024-06-26 at 6b96672a5f)
 + doc: fix case error of eol attribute in example

 Doc update.
 source: <[email-masked]>

* tb/path-filter-fix (2024-06-25) 16 commits
  (merged to 'next' on 2024-06-27 at a82d734201)
 + bloom: introduce `deinit_bloom_filters()`
 + commit-graph: reuse existing Bloom filters where possible
 + object.h: fix mis-aligned flag bits table
 + commit-graph: new Bloom filter version that fixes murmur3
 + commit-graph: unconditionally load Bloom filters
 + bloom: prepare to discard incompatible Bloom filters
 + bloom: annotate filters with hash version
 + repo-settings: introduce commitgraph.changedPathsVersion
 + t4216: test changed path filters with high bit paths
 + t/helper/test-read-graph: implement `bloom-filters` mode
 + bloom.h: make `load_bloom_filter_from_graph()` public
 + t/helper/test-read-graph.c: extract `dump_graph_info()`
 + gitformat-commit-graph: describe version 2 of BDAT
 + commit-graph: ensure Bloom filters are read with consistent settings
 + revision.c: consult Bloom filters for root commits
 + t/t4216-log-bloom.sh: harden `test_bloom_filters_not_used()`

 The Bloom filter used for path limited history traversal was broken
 on systems whose "char" is unsigned; update the implementation and
 bump the format version to 2.
 source: <[email-masked]>

* xx/bundie-uri-fixes (2024-06-20) 3 commits
  (merged to 'next' on 2024-06-27 at 2045d9dbc2)
 + unbundle: extend object verification for fetches
 + fetch-pack: expose fsckObjects configuration logic
 + bundle-uri: verify oid before writing refs

 When bundleURI interface fetches multiple bundles, Git failed to
 take full advantage of all bundles and ended up slurping duplicated
 objects.
 source: <[email-masked]>

--------------------------------------------------
[New Topics]

* jc/checkout-no-op-switch-errors (2024-07-02) 1 commit
 - checkout: special case error messages during noop switching

 "git checkout --ours" (no other arguments) complained that the
 option is incompatible with branch switching, which is technically
 correct, but found confusing by some users.  It now says that the
 user needs to give pathspec to specify what paths to checkout.

 Needs review.
 source: <[email-masked]>

* jc/disable-push-nego-for-deletion (2024-07-02) 1 commit
  (merged to 'next' on 2024-07-08 at 18411fb8ac)
 + push: avoid showing false negotiation errors

 "git push" that pushes only deletion gave an unnecessary and
 harmless error message when push negotiation is configured, which
 has been corrected.

 Will merge to 'master'.
 source: <[email-masked]>

* bc/gitfaq-more (2024-07-03) 4 commits
 - doc: mention that proxies must be completely transparent
 - gitfaq: add entry about syncing working trees
 - gitfaq: give advice on using eol attribute in gitattributes
 - gitfaq: add documentation on proxies

 A handful of entries are added to the GitFAQ document.

 Expecting a (hopefully small and final) reroll.
 cf. <[email-masked]>
 source: <[email-masked]>

* cp/unit-test-reftable-merged (2024-07-03) 5 commits
 - t-reftable-merged: add test for REFTABLE_FORMAT_ERROR
 - t-reftable-merged: use reftable_ref_record_equal to compare ref records
 - t-reftable-merged: add tests for reftable_merged_table_max_update_index
 - t: harmonize t-reftable-merged.c with coding guidelines
 - t: move reftable/merged_test.c to the unit testing framework

 Another reftable test has been ported to use the unit test framework.

 Expecting a (hopefully small and final) reroll.
 cf. <CAOLa=ZSTb-kKiGHkGJwSgx3acxcfFe_+KGW=p7O7B7=[email-masked]>
 source: <[email-masked]>

* ds/advice-sparse-index-expansion (2024-07-08) 1 commit
 - advice: warn when sparse index expands

 A new warning message is issued when a command has to expand a
 sparse index to handle working tree cruft that are outside of the
 sparse checkout.

 Will merge to 'next'?
 source: <[email-masked]>

* am/gitweb-feed-use-committer-date (2024-07-07) 1 commit
  (merged to 'next' on 2024-07-08 at 65215ab842)
 + gitweb: rss/atom change published/updated date to committer date

 GitWeb update to use committer date consistently in rss/atom feeds.

 Will merge to 'master'.
 source: <[email-masked]>

* rs/clang-format-updates (2024-07-06) 1 commit
  (merged to 'next' on 2024-07-08 at d2b5b41844)
 + clang-format: include kh_foreach* macros in ForEachMacros

 Custom control structures we invented more recently have been
 taught to the clang-format file.

 Will merge to 'master'.
 source: <[email-masked]>

* rs/t-strvec-use-test-msg (2024-07-06) 1 commit
  (merged to 'next' on 2024-07-08 at c28c2553de)
 + t-strvec: use test_msg()

 Unit test clean-up.

 Will merge to 'master'.
 source: <[email-masked]>

* tb/dev-build-pedantic-fix (2024-07-06) 1 commit
  (merged to 'next' on 2024-07-08 at 7f34cc6c5b)
 + config.mak.dev: fix typo when enabling -Wpedantic

 Developer build procedure fix.

 Will merge to 'master'.
 source: <[email-masked]>

* gt/unit-test-hashmap (2024-07-08) 1 commit
 - t: port helper/test-hashmap.c to unit-tests/t-hashmap.c

 An existing test of hashmap API has been rewritten with the
 unit-test framework.

 Needs review.
 source: <[email-masked]>

* ri/doc-show-branch-fix (2024-07-08) 1 commit
  (merged to 'next' on 2024-07-08 at efcb154dfe)
 + doc: fix the max number of branches shown by "show-branch"

 Docfix.

 Will merge to 'master'.
 source: <[email-masked]>

--------------------------------------------------
[Stalled]

* cp/unit-test-reftable-tree (2024-06-13) 5 commits
 - t-reftable-tree: improve the test for infix_walk()
 - t-reftable-tree: add test for non-existent key
 - t-reftable-tree: split test_tree() into two sub-test functions
 - t: move reftable/tree_test.c to the unit testing framework
 - reftable: remove unnecessary curly braces in reftable/tree.c

 A test in reftable library has been rewritten using the unit test
 framework.

 Needs review.
 source: <[email-masked]>

* sj/ref-fsck (2024-07-03) 9 commits
 - fsck: add ref content check for files backend
 - fsck: add ref name check for files backend
 - files-backend: add unified interface for refs scanning
 - builtin/fsck: add `git-refs verify` child process
 - builtin/refs: add verify subcommand
 - refs: set up ref consistency check infrastructure
 - fsck: add refs-related options and error report function
 - fsck: add a unified interface for reporting fsck messages
 - fsck: rename "skiplist" to "oid_skiplist"

 "git fsck" infrastructure has been taught to also check the sanity
 of the ref database, in addition to the object database.

 Needs review.
 cf. <ysrjjyksfwto35ug7o6xbgbu53vvjso6nov3u2q6vvdprolqwh@vjhcc4x45j7t>
 cf. <adijctr2gmmyydpnnrmnu5p5n7mambfrd2ylqm6jtmvv2jdlxo@fbmhti7b4tks>
 source: <ZoVX6sn2C9VIeZ38@ArchLinux>

* cp/unit-test-reftable-pq (2024-06-14) 7 commits
 - t-reftable-pq: add tests for merged_iter_pqueue_top()
 - t-reftable-pq: add test for index based comparison
 - t-reftable-pq: make merged_iter_pqueue_check() callable by reference
 - t-reftable-pq: make merged_iter_pqueue_check() static
 - t: move reftable/pq_test.c to the unit testing framework
 - reftable: change the type of array indices to 'size_t' in reftable/pq.c
 - reftable: remove unncessary curly braces in reftable/pq.c

 The tests for "pq" part of reftable library got rewritten to use
 the unit test framework.

 Needs review.
 source: <[email-masked]>

* tb/incremental-midx-part-1 (2024-06-07) 19 commits
 - midx: implement support for writing incremental MIDX chains
 - t/t5313-pack-bounds-checks.sh: prepare for sub-directories
 - t: retire 'GIT_TEST_MULTI_PACK_INDEX_WRITE_BITMAP'
 - midx: implement verification support for incremental MIDXs
 - midx: support reading incremental MIDX chains
 - midx: teach `midx_fanout_add_midx_fanout()` about incremental MIDXs
 - midx: teach `midx_preferred_pack()` about incremental MIDXs
 - midx: teach `midx_contains_pack()` about incremental MIDXs
 - midx: remove unused `midx_locate_pack()`
 - midx: teach `fill_midx_entry()` about incremental MIDXs
 - midx: teach `nth_midxed_offset()` about incremental MIDXs
 - midx: teach `bsearch_midx()` about incremental MIDXs
 - midx: introduce `bsearch_one_midx()`
 - midx: teach `nth_bitmapped_pack()` about incremental MIDXs
 - midx: teach `nth_midxed_object_oid()` about incremental MIDXs
 - midx: teach `prepare_midx_pack()` about incremental MIDXs
 - midx: teach `nth_midxed_pack_int_id()` about incremental MIDXs
 - midx: add new fields for incremental MIDX chains
 - Documentation: describe incremental MIDX format

 Incremental updates of multi-pack index files.

 Needs review.
 source: <[email-masked]>

* vd/mktree (2024-06-20) 17 commits
 - mktree: remove entries when mode is 0
 - mktree: allow deeper paths in input
 - mktree: optionally add to an existing tree
 - mktree: add directory-file conflict hashmap
 - mktree: use iterator struct to add tree entries to index
 - mktree: create tree using an in-core index
 - mktree: overwrite duplicate entries
 - mktree: validate paths more carefully
 - mktree: add a --literally option
 - mktree.c: do not fail on mismatched submodule type
 - mktree: use read_index_info to read stdin lines
 - index-info.c: parse object type in provided in read_index_info
 - index-info.c: return unrecognized lines to caller
 - update-index: generalize 'read_index_info'
 - mktree: use non-static tree_entry array
 - mktree: rename treeent to tree_entry
 - mktree: use OPT_BOOL

 "git mktree" has been rewritten, taking advantage of the cache-tree
 API.

 Will merge to 'next'?
 source: <[email-masked]>

* pp/add-parse-range-unit-test (2024-05-27) 1 commit
 - apply: add unit tests for parse_range

 A unit test for code that parses the hunk offset and length from a
 patch fragment header as been added.

 Expecting a reroll.
 cf. <[email-masked]>
 source: <[email-masked]>

* cw/git-std-lib (2024-02-28) 4 commits
 . SQUASH??? get rid of apparent debugging crufts
 . test-stdlib: show that git-std-lib is independent
 . git-std-lib: introduce Git Standard Library
 . pager: include stdint.h because uintmax_t is used

 Split libgit.a out to a separate git-std-lib tor easier reuse.

 Expecting a reroll.
 source: <[email-masked]>

--------------------------------------------------
[Cooking]

* as/pathspec-h-typofix (2024-07-01) 1 commit
  (merged to 'next' on 2024-07-02 at ae7cee4189)
 + pathspec: fix typo "glossary-context.txt" -> "glossary-content.txt"

 Typofix.

 Will merge to 'master'.
 source: <[email-masked]>

* gt/unit-test-oidmap (2024-07-03) 1 commit
  (merged to 'next' on 2024-07-08 at 4e7394fc67)
 + t: migrate helper/test-oidmap.c to unit-tests/t-oidmap.c

 An existing test of oidmap API has been rewritten with the
 unit-test framework.

 Will merge to 'master'.
 source: <[email-masked]>

* jk/test-body-in-here-doc (2024-07-01) 2 commits
 . t: convert some here-doc test bodies
 . test-lib: allow test snippets as here-docs

 The test framework learns to take the test body not as a single
 string but as a here-document.

 May need a matching change to shell script linter.
 cf. <CAPig+cQdioTBinkacLFb7yktm168oB+qyP9MpZtTRE=[email-masked]>
 cf. <[email-masked]>
 source: <[email-masked]>

* rj/t0612-no-longer-leaks (2024-07-01) 1 commit
  (merged to 'next' on 2024-07-08 at a63b027a20)
 + t0612: mark as leak-free

 A test that no longer leaks has been marked as such.

 Will merge to 'master'.
 source: <[email-masked]>

* rj/t0613-no-longer-leaks (2024-07-01) 1 commit
  (merged to 'next' on 2024-07-08 at b6149c3032)
 + t0613: mark as leak-free

 A test that no longer leaks has been marked as such.

 Will merge to 'master'.
 source: <[email-masked]>

* rj/test-sanitize-leak-log-fix (2024-07-01) 1 commit
  (merged to 'next' on 2024-07-08 at c7ee7d03e1)
 + test-lib: fix GIT_TEST_SANITIZE_LEAK_LOG

 Tests that use GIT_TEST_SANITIZE_LEAK_LOG feature got their exit
 status inverted, which has been corrected.

 Will merge to 'master'.
 source: <[email-masked]>

* rs/simplify-submodule-helper-super-prefix-invocation (2024-07-01) 1 commit
  (merged to 'next' on 2024-07-02 at 06e1677920)
 + submodule--helper: use strvec_pushf() for --super-prefix

 Code clean-up.

 Will merge to 'master'.
 source: <[email-masked]>

* rs/unit-tests-test-run (2024-07-01) 6 commits
 - t-strbuf: use TEST_RUN
 - t-strvec: use TEST_RUN
 - t-reftable-basics: use TEST_RUN
 - t-ctype: use TEST_RUN
 - unit-tests: add TEST_RUN
 - t0080: move expected output to a file

 Unit-test framework clean-up.

 Will merge to 'next'?
 source: <[email-masked]>

* cp/unit-test-reftable-record (2024-07-02) 11 commits
  (merged to 'next' on 2024-07-08 at b534dac338)
 + t-reftable-record: add tests for reftable_log_record_compare_key()
 + t-reftable-record: add tests for reftable_ref_record_compare_name()
 + t-reftable-record: add index tests for reftable_record_is_deletion()
 + t-reftable-record: add obj tests for reftable_record_is_deletion()
 + t-reftable-record: add log tests for reftable_record_is_deletion()
 + t-reftable-record: add ref tests for reftable_record_is_deletion()
 + t-reftable-record: add comparison tests for obj records
 + t-reftable-record: add comparison tests for index records
 + t-reftable-record: add comparison tests for ref records
 + t-reftable-record: add reftable_record_cmp() tests for log records
 + t: move reftable/record_test.c to the unit testing framework

 A test in reftable library has been rewritten using the unit test
 framework.

 Will merge to 'master'.
 cf. <CAOLa=ZT_x1Kf7EopU+RbBFzX3EPU5NWx6f8L9Uw=[email-masked]>
 source: <[email-masked]>

* as/describe-broken-refresh-index-fix (2024-06-26) 1 commit
  (merged to 'next' on 2024-07-08 at 2307a4a4ae)
 + describe: refresh the index when 'broken' flag is used

 "git describe --dirty --broken" forgot to refresh the index before
 seeing if there is any chang, ("git describe --dirty" correctly did
 so), which has been corrected.

 Will merge to 'master'.
 source: <[email-masked]>

* cb/send-email-sanitize-trailer-addresses (2024-07-01) 1 commit
 - git-send-email: use sanitized address when reading mbox body

 Address-looking strings found on the trailer are now placed on the
 Cc: list after running through sanitize_address.

 Will merge to 'next'?
 source: <[email-masked]>

* jk/tests-without-dns (2024-06-26) 3 commits
  (merged to 'next' on 2024-07-08 at 21af592457)
 + t/lib-bundle-uri: use local fake bundle URLs
 + t5551: do not confirm that bogus url cannot be used
 + t5553: use local url for invalid fetch

 Test suite has been taught not to unnecessarily rely on DNS failing
 a bogus external name.

 Will merge to 'master'.
 source: <[email-masked]>

* bc/http-proactive-auth (2024-07-03) 1 commit
 - http: allow authenticating proactively

 The http transport can now be told to send request with
 authentication material without first getting a 401 response.

 Getting there.
 cf. <[email-masked]>
 source: <[email-masked]>

* jc/patch-id (2024-06-21) 5 commits
 - patch-id: tighten code to detect the patch header
 - patch-id: rewrite code that detects the beginning of a patch
 - patch-id: make get_one_patchid() more extensible
 - patch-id: call flush_current_id() only when needed
 - t4204: patch-id supports various input format

 The patch parser in "git patch-id" has been tightened to avoid
 getting confused by lines that look like a patch header in the log
 message.

 Needs review.
 source: <[email-masked]>

* en/ort-inner-merge-error-fix (2024-07-06) 8 commits
 - merge-ort: fix missing early return
  (merged to 'next' on 2024-06-28 at a85fe270e6)
 + merge-ort: convert more error() cases to path_msg()
 + merge-ort: upon merge abort, only show messages causing the abort
 + merge-ort: loosen commented requirements
 + merge-ort: clearer propagation of failure-to-function from merge_submodule
 + merge-ort: fix type of local 'clean' var in handle_content_merge ()
 + merge-ort: maintain expected invariant for priv member
 + merge-ort: extract handling of priv member into reusable function

 The "ort" merge backend saw one bugfix for a crash that happens
 when inner merge gets killed, and assorted code clean-ups.

 Will merge to 'next' and then to 'master'.
 source: <[email-masked]>