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

From: Junio C Hamano <[email-masked]>
Date: Mon, 29 Jul 2024 10:25:52 -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).

Git 2.46 has been tagged.  As usual, we'll wait for embarrassing
bugs to be reported for a week or so, try to fix them, and then
reopen the tree for the next iteration (probably called 2.47).

We already have known fallouts left from the removal of fallback to
SHA-1 in operations that do not require an repository, which we may
want to address next.  There may be more work needed to alleviate
the issues caused by the over-eager defense-in-depth changes
introduced by 2.45.1, even though they were somewhat loosened in
2.45.2 already.

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/

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

* ja/doc-synopsis-markup (2024-07-24) 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.

 Inviting further discussion.
 source: <[email-masked]>

* ps/doc-more-c-coding-guidelines (2024-07-24) 3 commits
 - Documentation: document difference between release and free
 - Documentation: document naming schema for struct-related functions
 - Documentation: clarify indentation style for C preprocessor directives

 Some project conventions have been added to CodingGuidelines.

 Inviting further discussion.
 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.

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

* as/show-ref-option-help-update (2024-07-25) 1 commit
  (merged to 'next' on 2024-07-26 at bbdc971c38)
 + show-ref: improve short help messages of options

 A few descriptions in "git show-ref -h" have been clarified.

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

* jc/doc-rebase-fuzz-vs-offset-fix (2024-07-25) 1 commit
  (merged to 'next' on 2024-07-26 at 6f784b0c1c)
 + doc: difference in location to apply is "offset", not "fuzz"

 "git rebase --help" referred to "offset" (the difference between
 the location a change was taken from and the change gets replaced)
 incorrectly and called it "fuzz", which has been corrected.

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

* jc/doc-reviewing-guidelines-positive-reviews (2024-07-25) 1 commit
  (merged to 'next' on 2024-07-26 at 8f878efb0d)
 + ReviewingGuidelines: encourage positive reviews more

 The reviewing guidelines document now explicitly encourages people
 to give positive reviews and how.

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

* jc/leakfix-hashfile (2024-07-26) 1 commit
 - csum-file: introduce discard_hashfile()

 source: <[email-masked]>

* jc/leakfix-mailmap (2024-07-26) 1 commit
 - mailmap: plug memory leak in read_mailmap_blob()

 source: <[email-masked]>

* jr/ls-files-expand-literal-doc (2024-07-26) 1 commit
 - doc: fix hex code escapes in git-ls-files

 source: <CACStHN-Gs2Sxej+md6zWr3V1dFo+pp=B4yEPm9=[email-masked]>

* ps/leakfixes-part-3 (2024-07-26) 23 commits
 - commit-reach: fix trivial memory leak when computing reachability
 - convert: fix leaking config strings
 - entry: fix leaking pathnames during delayed checkout
 - object-name: fix leaking commit list items
 - t/test-repository: fix leaking repository
 - builtin/credential-cache: fix trivial leaks
 - builtin/worktree: fix leaking derived branch names
 - builtin/shortlog: fix various trivial memory leaks
 - builtin/rerere: fix various trivial memory leaks
 - builtin/credential-store: fix leaking credential
 - builtin/show-branch: fix several memory leaks
 - builtin/rev-parse: fix memory leak with `--parseopt`
 - builtin/stash: fix various trivial memory leaks
 - builtin/remote: fix various trivial memory leaks
 - builtin/remote: fix leaking strings in `branch_list`
 - builtin/ls-remote: fix leaking `pattern` strings
 - builtin/submodule--helper: fix various trivial memory leaks
 - builtin/name-rev: fix various trivial memory leaks
 - builtin/describe: fix trivial memory leak when describing blob
 - builtin/describe: fix leaking array when running diff-index
 - builtin/describe: fix memory leak with `--contains=`
 - builtin/log: fix leaking branch name when creating cover letters
 - builtin/replay: plug leaking `advance_name` variable

 source: <[email-masked]>

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

* sj/ref-fsck (2024-07-15) 10 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
 - git refs: add verify subcommand
 - refs: set up ref consistency check infrastructure
 - fsck: add refs-related error report function
 - fsck: rename objects-related fsck error functions
 - fsck: add a unified interface for reporting fsck messages
 - fsck: rename "skiplist" to "skip_oids"

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

 Needs review.
 source: <ZpPEdmUN1Z5tqbK3@ArchLinux>

* cp/unit-test-reftable-pq (2024-07-23) 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-07-17) 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]>

* 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]

* ps/p4-tests-updates (2024-07-23) 3 commits
 - t98xx: mark Perforce tests as memory-leak free
 - ci: update Perforce version to r23.2
 - t98xx: fix Perforce tests with p4d r23 and newer

 Perforce tests have been updated.

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

* jc/doc-one-shot-export-with-shell-func (2024-07-23) 1 commit
  (merged to 'next' on 2024-07-23 at 621c29e4f6)
 + CodingGuidelines: document a shell that "fails" "VAR=VAL shell_func"

 It has been documented that we avoid "VAR=VAL shell_func" and why.

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

* ag/git-svn-global-ignores (2024-07-18) 2 commits
 - git-svn: use `svn:global-ignores` to create .gitignore
 - git-svn: add public property `svn:global-ignores`

 "git svn" has been taught about svn:global-ignores property
 recent versions of Subversion has.

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

* jc/how-to-maintain-updates (2024-07-19) 2 commits
  (merged to 'next' on 2024-07-26 at c950efa46d)
 + howto-maintain: update daily tasks
 + howto-maintain: cover a whole development cycle

 Doc update.

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

* es/shell-check-updates (2024-07-26) 5 commits
 - check-non-portable-shell: improve `VAR=val shell-func` detection
 - check-non-portable-shell: suggest alternative for `VAR=val shell-func`
 - check-non-portable-shell: loosen one-shot assignment error message
 - t4034: fix use of one-shot variable assignment with shell function
 - t3430: drop unnecessary one-shot "VAR=val shell-func" invocation

 Test script linter has been updated to catch an attempt to use
 one-shot export construct "VAR=VAL func" for shell functions (which
 does not work for some shells) better.

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

* jc/safe-directory (2024-07-22) 3 commits
 - safe.directory: setting safe.directory="." allows the "current" directory
 - safe.directory: normalize the configured path
 - safe.directory: normalize the checked path

 Follow-up on 2.45.1 regression fix.

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

* pw/add-patch-with-suppress-blank-empty (2024-07-20) 2 commits
  (merged to 'next' on 2024-07-22 at 5437b7dee3)
 + add-patch: use normalize_marker() when recounting edited hunk
 + add-patch: handle splitting hunks with diff.suppressBlankEmpty

 "git add -p" by users with diff.suppressBlankEmpty set to true
 failed to parse the patch that represents an unmodified empty line
 with an empty line (not a line with a single space on it), which
 has been corrected.

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

* tn/doc-commit-fix (2024-07-22) 1 commit
  (merged to 'next' on 2024-07-23 at eb73e04ee4)
 + doc: remove dangling closing parenthesis

 Docfix.

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

* cp/unit-test-reftable-tree (2024-07-22) 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]>

* rj/make-cleanup (2024-07-18) 2 commits
  (merged to 'next' on 2024-07-22 at bf3991f70f)
 + config.mak.uname: remove unused uname_P variable
 + Makefile: drop -Wno-universal-initializer from SP_EXTRA_FLAGS

 A build tweak knob has been simplified by not setting the value
 that is already the default; another unused one has been removed.

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

* ew/cat-file-optim (2024-07-15) 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]>

* jc/document-use-of-local (2024-07-15) 1 commit
 - doc: note that AT&T ksh does not work with our test suite

 Doc update.

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

* jt/doc-post-receive-hook-update (2024-07-15) 1 commit
  (merged to 'next' on 2024-07-17 at 624ac4ebe2)
 + doc: clarify post-receive hook behavior

 Doc update.

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

* jc/reflog-expire-lookup-commit-fix (2024-07-16) 1 commit
 - Revert "reflog expire: don't use lookup_commit_reference_gently()"

 "git reflog expire" failed to honor annotated tags when computing
 reachable commits.

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

* es/doc-platform-support-policy (2024-07-18) 2 commits
 - SQUASH???
 - Documentation: add platform support policy

 A policy document that describes platform support levels and
 expectation on platform stakeholders has been introduced.
 source: <[email-masked]>

* kn/ci-clang-format (2024-07-23) 6 commits
  (merged to 'next' on 2024-07-23 at 3aca45d08a)
 + ci/style-check: add `RemoveBracesLLVM` in CI job
 + check-whitespace: detect if no base_commit is provided
 + ci: run style check on GitHub and GitLab
 + clang-format: formalize some of the spacing rules
 + clang-format: avoid spacing around bitfield colon
 + clang-format: indent preprocessor directives after hash

 A CI job that use clang-format to check coding style issues in new
 code has been added.

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

* rj/add-p-pager (2024-07-25) 4 commits
 - add-patch: render hunks through the pager
 - pager: introduce wait_for_pager
 - pager: do not close fd 2 unnecessarily
 - add-patch: test for 'p' command

 A 'P' command to "git add -p" that passes the patch hunk to the
 pager has been added.

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

* ad/merge-with-diff-algorithm (2024-07-13) 1 commit
  (merged to 'next' on 2024-07-16 at 90fe5aff4d)
 + merge-recursive: honor diff.algorithm

 Many Porcelain commands that internally use the merge machinery
 were taught to consistently honor the diff.algorithm configuration.

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

* jc/checkout-no-op-switch-errors (2024-07-02) 1 commit
  (merged to 'next' on 2024-07-22 at 9573259db9)
 + 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.

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

* cp/unit-test-reftable-merged (2024-07-12) 7 commits
  (merged to 'next' on 2024-07-23 at 88d2a9ee28)
 + 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-reftable-merged: improve the const-correctness of helper functions
 + t-reftable-merged: improve the test t_merged_single_record()
 + 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.

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

* rs/t-strvec-use-test-msg (2024-07-16) 3 commits
  (merged to 'next' on 2024-07-16 at 3e860b3f12)
 + t-strvec: fix type mismatch in check_strvec
  (merged to 'next' on 2024-07-15 at f26e434515)
 + t-strvec: improve check_strvec() output
  (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]>
 source: <[email-masked]>
 source: <[email-masked]>

* gt/unit-test-hashmap (2024-07-12) 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.

 What's the doneness of this one?
 source: <[email-masked]>

* rs/unit-tests-test-run (2024-07-24) 7 commits
 - t-strbuf: use for_test
 - t-strvec: use for_test
 - t-reftable-basics: use for_test
 - t-ctype: use for_test
 - unit-tests: add for_test
 - unit-tests: show location of checks outside of tests
 - t0080: use here-doc test body

 Unit-test framework clean-up.

 Still under discussion.
 source: <[email-masked]>

* jc/patch-id (2024-07-29) 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.

 Inviding further discussion.
 source: <[email-masked]>

--------------------------------------------------
[Discarded]

* jk/add-patch-with-suppress-blank-empty (2024-07-10) 1 commit
  (merged to 'next' on 2024-07-11 at cec8ebb668)
 + add-patch: handle splitting hunks with diff.suppressBlankEmpty

 When the diff.suppressBlankEmpty configuration variable is set,
 "git add -p" failed to process a patch with an unmodified empty
 line, which has been corrected.

 Reverted out of 'next'.
 source: <[email-masked]>