Subject: What's cooking in git.git (Aug 2024, #11; Fri, 30)

From: Junio C Hamano <[email-masked]>
Date: Fri, 30 Aug 2024 13:44:27 -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']

* ah/git-prompt-portability (2024-08-20) 8 commits
  (merged to 'next' on 2024-08-21 at 14fa411577)
 + git-prompt: support custom 0-width PS1 markers
 + git-prompt: ta-da! document usage in other shells
 + git-prompt: don't use shell $'...'
 + git-prompt: add some missing quotes
 + git-prompt: replace [[...]] with standard code
 + git-prompt: don't use shell arrays
 + git-prompt: fix uninitialized variable
 + git-prompt: use here-doc instead of here-string

 The command line prompt support used to be littered with bash-isms,
 which has been corrected to work with more shells.

 source: <[email-masked]>

* cp/unit-test-reftable-block (2024-08-28) 12 commits
  (merged to 'next' on 2024-08-28 at 4974e39ddb)
 + t-reftable-block: mark unused argv/argc
  (merged to 'next' on 2024-08-22 at 234d8701da)
 + t-reftable-block: add tests for index blocks
 + t-reftable-block: add tests for obj blocks
 + t-reftable-block: add tests for log blocks
 + t-reftable-block: remove unnecessary variable 'j'
 + t-reftable-block: use xstrfmt() instead of xstrdup()
 + t-reftable-block: use block_iter_reset() instead of block_iter_close()
 + t-reftable-block: use reftable_record_key() instead of strbuf_addstr()
 + t-reftable-block: use reftable_record_equal() instead of check_str()
 + t-reftable-block: release used block reader
 + t: harmonize t-reftable-block.c with coding guidelines
 + t: move reftable/block_test.c to the unit testing framework

 Another test for reftable library ported to the unit test framework.
 cf. <ZsbdFU9aBQvqE3pb@tanuki>

 source: <[email-masked]>

* ds/sparse-diff-index (2024-08-22) 1 commit
  (merged to 'next' on 2024-08-23 at d33f670977)
 + diff-index: integrate with the sparse index

 The underlying machinery for "git diff-index" has long been made to
 expand the sparse index as needed, but the command fully expanded
 the sparse index upfront, which now has been taught not to do.

 source: <[email-masked]>

* gt/unit-test-urlmatch-normalization (2024-08-20) 1 commit
  (merged to 'next' on 2024-08-21 at 3efed1ed8d)
 + t: migrate t0110-urlmatch-normalization to the new framework

 Another rewrite of test.

 source: <[email-masked]>

* mt/rebase-x-quiet (2024-08-21) 1 commit
  (merged to 'next' on 2024-08-22 at 1018555d89)
 + rebase --exec: respect --quiet

 "git rebase -x --quiet" was not quiet, which was corrected.

 source: <f105[email-masked]>

* ps/reftable-drop-generic (2024-08-28) 17 commits
  (merged to 'next' on 2024-08-28 at 987000f60d)
 + reftable: mark unused parameters in empty iterator functions
  (merged to 'next' on 2024-08-22 at c6706c1b16)
 + reftable/generic: drop interface
 + t/helper: refactor to not use `struct reftable_table`
 + t/helper: use `hash_to_hex_algop()` to print hashes
 + t/helper: inline printing of reftable records
 + t/helper: inline `reftable_table_print()`
 + t/helper: inline `reftable_stack_print_directory()`
 + t/helper: inline `reftable_reader_print_file()`
 + t/helper: inline `reftable_dump_main()`
 + reftable/dump: drop unused `compact_stack()`
 + reftable/generic: move generic iterator code into iterator interface
 + reftable/iter: drop double-checking logic
 + reftable/stack: open-code reading refs
 + reftable/merged: stop using generic tables in the merged table
 + reftable/merged: rename `reftable_new_merged_table()`
 + reftable/merged: expose functions to initialize iterators
 + Merge branch 'ps/reftable-stack-compaction' into ps/reftable-drop-generic

 The code in the reftable library has been cleaned up by discarding
 unused "generic" interface.

 source: <[email-masked]>

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

* tb/multi-pack-reuse-fix (2024-08-27) 5 commits
 - builtin/pack-objects.c: do not open-code `MAX_PACK_OBJECT_HEADER`
 - pack-bitmap.c: avoid repeated `pack_pos_to_offset()` during reuse
 - builtin/pack-objects.c: translate bit positions during pack-reuse
 - pack-bitmap: tag bitmapped packs with their corresponding MIDX
 - t/t5332-multi-pack-reuse.sh: verify pack generation with --strict

 A data corruption bug when multi-pack-index is used and the same
 objects are stored in multiple packfiles has been corrected.

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

* jk/unused-parameters (2024-08-28) 7 commits
  (merged to 'next' on 2024-08-30 at 2c5169ff52)
 + CodingGuidelines: mention -Wunused-parameter and UNUSED
 + config.mak.dev: enable -Wunused-parameter by default
 + compat: mark unused parameters in win32/mingw functions
 + compat: disable -Wunused-parameter in win32/headless.c
 + compat: disable -Wunused-parameter in 3rd-party code
 + t-reftable-readwrite: mark unused parameter in callback function
 + gc: mark unused config parameter in virtual functions
 (this branch is used by jc/maybe-unused.)

 Make our codebase compilable with the -Werror=unused-parameter
 option.

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

* es/chainlint-message-updates (2024-08-29) 2 commits
 - chainlint: reduce annotation noise-factor
 - chainlint: make error messages self-explanatory

 The error messages from the test script checker have been improved.

 Expecting a reroll.
 cf. <CAPig+cQ+6am7-BSnWZz5=[email-masked]>
 source: <[email-masked]>

* ps/environ-wo-the-repository (2024-08-30) 21 commits
 - environment: stop storing "core.notesRef" globally
 - environment: stop storing "core.warnAmbiguousRefs" globally
 - environment: stop storing "core.preferSymlinkRefs" globally
 - environment: stop storing "core.logAllRefUpdates" globally
 - refs: stop modifying global `log_all_ref_updates` variable
 - branch: stop modifying `log_all_ref_updates` variable
 - repo-settings: track defaults close to `struct repo_settings`
 - repo-settings: split out declarations into a standalone header
 - environment: guard state depending on a repository
 - environment: reorder header to split out `the_repository`-free section
 - environment: move `set_git_dir()` and related into setup layer
 - environment: make `get_git_namespace()` self-contained
 - environment: move `odb_mkstemp()` into object layer
 - config: make dependency on repo in `read_early_config()` explicit
 - config: document `read_early_config()` and `read_very_early_config()`
 - environment: make `get_git_work_tree()` accept a repository
 - environment: make `get_graft_file()` accept a repository
 - environment: make `get_index_file()` accept a repository
 - environment: make `get_object_directory()` accept a repository
 - environment: make `get_git_common_dir()` accept a repository
 - environment: make `get_git_dir()` accept a repository

 Code clean-up.

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

* jc/maybe-unused (2024-08-29) 2 commits
  (merged to 'next' on 2024-08-30 at e5961a9dc9)
 + CodingGuidelines: also mention MAYBE_UNUSED
 + Merge branch 'jk/unused-parameters' into jc/maybe-unused
 (this branch uses jk/unused-parameters.)

 Developer doc updates.

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

* jk/maybe-unused-cleanup (2024-08-29) 2 commits
 - grep: prefer UNUSED to MAYBE_UNUSED for pcre allocators
 - gc: drop MAYBE_UNUSED annotation from used parameter

 Code clean-up.

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

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

* rs/remote-leakfix (2024-08-23) 1 commit
  (merged to 'next' on 2024-08-26 at 77eb8b251e)
 + remote: plug memory leaks at early returns

 Leakfix.

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

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

 Another unit-test.

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

* gt/unit-test-oidset (2024-08-25) 1 commit
 - unit-tests: add tests for oidset.h

 Another unit-test.

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

* jc/config-doc-update (2024-08-26) 2 commits
  (merged to 'next' on 2024-08-27 at e2cf493099)
 + git-config.1: fix description of --regexp in synopsis
 + git-config.1: --get-all description update

 Docfix.

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

* ps/leakfixes-part-6 (2024-08-26) 22 commits
 - builtin/repack: fix leaking keep-pack list
 - merge-ort: fix two leaks when handling directory rename modifications
 - match-trees: fix leaking prefixes in `shift_tree()`
 - builtin/fmt-merge-msg: fix leaking buffers
 - builtin/grep: fix leaking object context
 - builtin/pack-objects: plug leaking list of keep-packs
 - builtin/repack: fix leaking line buffer when packing promisors
 - negotiator/skipping: fix leaking commit entries
 - shallow: fix leaking members of `struct shallow_info`
 - shallow: free grafts when unregistering them
 - object: clear grafts when clearing parsed object pool
 - gpg-interface: fix misdesigned signing key interfaces
 - send-pack: fix leaking push cert nonce
 - remote: fix leak in reachability check of a remote-tracking ref
 - remote: fix leaking tracking refs
 - builtin/submodule--helper: fix leaking refs on push-check
 - submodule: fix leaking fetch task data
 - upload-pack: fix leaking child process data on reachability checks
 - builtin/push: fix leaking refspec query result
 - send-pack: fix leaking common object IDs
 - fetch-pack: fix memory leaks on fetch negotiation
 - t/test-lib: allow skipping leak checks for passing tests

 More leakfixes.

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

* dh/runtime-prefix-on-zos (2024-08-22) 1 commit
  (merged to 'next' on 2024-08-25 at 54a7e6c9c4)
 + exec_cmd: RUNTIME_PREFIX on z/OS systems

 Support for the RUNTIME_PREFIX feature has been added to z/OS port.

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

* cl/config-regexp-docfix (2024-08-23) 1 commit
  (merged to 'next' on 2024-08-25 at 8deaa7a660)
 + doc: replace 3 dash with correct 2 dash in git-config(1)

 Docfix.

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

* aa/cat-file-batch-output-doc (2024-08-22) 1 commit
  (merged to 'next' on 2024-08-25 at 2c8a616d2c)
 + docs: explain the order of output in the batched mode of git-cat-file(1)

 Docfix.

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

* js/fetch-push-trace2-annotation (2024-08-22) 3 commits
  (merged to 'next' on 2024-08-25 at df89edbe16)
 + send-pack: add new tracing regions for push
 + fetch: add top-level trace2 regions
 + trace2: implement trace2_printf() for event target

 More trace2 events at key points on push and fetch code paths have
 been added.

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

* jk/send-email-mailmap (2024-08-27) 3 commits
  (merged to 'next' on 2024-08-30 at a5cf30460a)
 + send-email: add mailmap support via sendemail.mailmap and --mailmap
 + check-mailmap: add options for additional mailmap sources
 + check-mailmap: accept "user@host" contacts

 "git send-email" learned "--mailmap" option to allow rewriting the
 recipient addresses.

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

* ps/leakfixes-part-5 (2024-08-22) 21 commits
  (merged to 'next' on 2024-08-25 at 5dde5192bb)
 + transport: fix leaking negotiation tips
 + transport: fix leaking arguments when fetching from bundle
 + builtin/fetch: fix leaking transaction with `--atomic`
 + remote: fix leaking peer ref when expanding refmap
 + remote: fix leaks when matching refspecs
 + remote: fix leaking config strings
 + builtin/fetch-pack: fix leaking refs
 + sideband: fix leaks when configuring sideband colors
 + builtin/send-pack: fix leaking refspecs
 + transport: fix leaking OID arrays in git:// transport data
 + t/helper: fix leaking multi-pack-indices in "read-midx"
 + builtin/repack: fix leaks when computing packs to repack
 + midx-write: fix leaking hashfile on error cases
 + builtin/archive: fix leaking `OPT_FILENAME()` value
 + builtin/upload-archive: fix leaking args passed to `write_archive()`
 + builtin/merge-tree: fix leaking `-X` strategy options
 + pretty: fix leaking key/value separator buffer
 + pretty: fix memory leaks when parsing pretty formats
 + convert: fix leaks when resetting attributes
 + mailinfo: fix leaking header data
 + Merge branch 'ps/leakfixes-part-4' into ps/leakfixes-part-5

 Even more leak fixes.

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

* sj/ref-contents-check (2024-08-28) 6 commits
 - SQUASH??? -Wunused-parameter fix
 - SQUASH??? remove unused parameters
 - ref: add symlink ref check for files backend
 - ref: add symbolic ref content check for files backend
 - ref: add regular ref content check for files backend
 - ref: initialize "fsck_ref_report" with zero

 Plumb through extra checks in refs API to "git fsck".

 Expecting a reroll.
 source: <Zs348uXMBdCuwF-2@ArchLinux>

* jc/mailinfo-header-cleanup (2024-08-20) 1 commit
 - mailinfo: we parse fixed headers

 Code clean-up.

 On hold.
 cf. <Zsb1rGQbglHMiBHI@tanuki>
 source: <[email-masked]>

* ps/reftable-concurrent-compaction (2024-08-23) 11 commits
  (merged to 'next' on 2024-08-26 at 3fc3e86224)
 + reftable/stack: fix segfault when reload with reused readers fails
 + reftable/stack: reorder swapping in the reloaded stack contents
 + reftable/reader: keep readers alive during iteration
 + reftable/reader: introduce refcounting
 + reftable/stack: fix broken refnames in `write_n_ref_tables()`
 + reftable/reader: inline `reader_close()`
 + reftable/reader: inline `init_reader()`
 + reftable/reader: rename `reftable_new_reader()`
 + reftable/stack: inline `stack_compact_range_stats()`
 + reftable/blocksource: drop malloc block source
 + Merge branch 'ps/reftable-drop-generic' into ps/reftable-concurrent-compaction

 The code path for compacting reftable files saw some bugfixes
 against concurrent operation.

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

* tb/incremental-midx-part-2 (2024-08-28) 16 commits
 - fixup! midx: implement writing incremental MIDX bitmaps
 - midx: implement writing incremental MIDX bitmaps
 - pack-bitmap.c: use `ewah_or_iterator` for type bitmap iterators
 - pack-bitmap.c: keep track of each layer's type bitmaps
 - ewah: implement `struct ewah_or_iterator`
 - pack-bitmap.c: apply pseudo-merge commits with incremental MIDXs
 - pack-bitmap.c: compute disk-usage with incremental MIDXs
 - pack-bitmap.c: teach `rev-list --test-bitmap` about incremental MIDXs
 - pack-bitmap.c: support bitmap pack-reuse with incremental MIDXs
 - pack-bitmap.c: teach `show_objects_for_type()` about incremental MIDXs
 - pack-bitmap.c: teach `bitmap_for_commit()` about incremental MIDXs
 - pack-bitmap.c: open and store incremental bitmap layers
 - pack-revindex: prepare for incremental MIDX bitmaps
 - Documentation: describe incremental MIDX bitmaps
 - Merge branch 'tb/pseudo-merge-bitmap-fixes' into tb/incremental-midx-part-2
 - Merge branch 'tb/incremental-midx-part-1' into tb/incremental-midx-part-2

 Incremental updates of multi-pack index files.

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

* ps/clar-unit-test (2024-08-20) 13 commits
 - clar: add CMake support
 - t/unit-tests: convert ctype tests to use clar
 - t/unit-tests: convert strvec tests to use clar
 - Makefile: wire up the clar unit testing framework
 - Makefile: do not use sparse on third-party sources
 - Makefile: make hdr-check depend on generated headers
 - Makefile: fix sparse dependency on GENERATED_H
 - clar: stop including `shellapi.h` unnecessarily
 - clar(win32): avoid compile error due to unused `fs_copy()`
 - clar: avoid compile error with mingw-w64
 - t/clar: fix compatibility with NonStop
 - t: import the clar unit testing framework
 - t: do not pass GIT_TEST_OPTS to unit tests with prove

 Import clar unit tests framework libgit2 folks invented for our
 use.

 Need to decide how to fill feature gap with our home-grown one
 cf. <[email-masked]>
 source: <[email-masked]>

* js/libgit-rust (2024-08-09) 5 commits
 - cgit: add higher-level cgit crate
 - config: add git_configset_alloc() and git_configset_clear_and_free()
 - cgit-sys: add repo initialization and config access
 - cgit-sys: introduce Rust wrapper for libgit.a
 - common-main: split init and exit code into new files

 An rust binding to libgit.a functions has been introduced.

 Comments?
 source: <[email-masked]>

* jc/range-diff-lazy-setup (2024-08-09) 2 commits
 - remerge-diff: clean up temporary objdir at a central place
 - remerge-diff: lazily prepare temporary objdir on demand

 Code clean-up.

 Comments?
 source: <[email-masked]>

* jc/too-many-arguments (2024-08-06) 4 commits
 - miscellaneous: avoid "too many arguments"
 - notes: avoid "too many arguments"
 - cat-file: avoid "too many arguments"
 - refs: avoid "too many arguments"

 Error message clarification.

 On hold.
 source: <[email-masked]>

* cc/promisor-remote-capability (2024-07-31) 4 commits
 - promisor-remote: check advertised name or URL
 - Add 'promisor-remote' capability to protocol v2
 - strbuf: refactor strbuf_trim_trailing_ch()
 - version: refactor strbuf_sanitize()

 The v2 protocol learned to allow the server to advertise possible
 promisor remotes, and the client to respond with what promissor
 remotes it uses, so that the server side can omit objects that the
 client can lazily obtain from these other promissor remotes.

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

* ja/doc-synopsis-markup (2024-08-12) 3 commits
 - doc: apply synopsis simplification on git-clone and git-init
 - doc: update the guidelines to reflect the current formatting rules
 - doc: introduce a synopsis custom paragraph attribute

 The way AsciiDoc is used for SYNOPSIS part of the manual pages has
 been revamped.  The sources, at least for the simple cases, got
 vastly pleasant to work with.

 cf. <1986021.PYKUYFuaPT@cayenne>
 source: <[email-masked]>

* ew/cat-file-optim (2024-08-25) 10 commits
 - cat-file: use writev(2) if available
 - cat-file: batch_write: use size_t for length
 - cat-file: batch-command uses content_limit
 - object_info: content_limit only applies to blobs
 - packfile: packed_object_info avoids packed_to_object_type
 - cat-file: use delta_base_cache entries directly
 - packfile: inline cache_or_unpack_entry
 - packfile: fix off-by-one in content_limit comparison
 - packfile: allow content-limit for cat-file
 - packfile: move sizep computation

 "git cat-file --batch" has been optimized.

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

* tc/fetch-bundle-uri (2024-07-24) 3 commits
 - fetch: use bundle URIs when having creationToken heuristic
 - transport: introduce transport_has_remote_bundle_uri()
 - clone: remove double bundle list clear code

 Allow "git fetch" take advantage of bundleURI feature.

 Expecting a reroll or retraction.
 source: <ZqObobw8FsDMkllm@tanuki>

--------------------------------------------------
[Will discard]

* pp/add-parse-range-unit-test (2024-08-28) 2 commits
 - SQUASH???
 - 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.

 Has been expecting a reroll for too long.
 cf. <[email-masked]>
 source: <[email-masked]>