Subject: What's cooking in git.git (Jul 2023, #05; Tue, 25)

From: Junio C Hamano <[email-masked]>
Date: Tue, 25 Jul 2023 13:57:39 -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-vcs/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/advise-force-pushing (2023-07-13) 3 commits
  (merged to 'next' on 2023-07-17 at b040e8280e)
 + push: don't imply that integration is always required before pushing
 + remote: don't imply that integration is always required before pushing
 + wt-status: don't show divergence advice when committing

 Help newbies by suggesting that there are cases where force-pushing
 is a valid and sensible thing to update a branch at a remote
 repository, rather than reconciling with merge/rebase.
 source: <[email-masked]>

* dk/bundle-i18n-more (2023-07-13) 1 commit
  (merged to 'next' on 2023-07-18 at a9745efbe2)
 + i18n: mark more bundle.c strings for translation

 Update message mark-up for i18n in "git bundle".
 source: <[email-masked]>

* dk/t4002-syntaxo-fix (2023-07-14) 1 commit
  (merged to 'next' on 2023-07-17 at 75d729ee52)
 + t4002: fix "diff can read from stdin" syntax

 Test fix.
 source: <[email-masked]>

* jk/nested-points-at (2023-07-17) 4 commits
  (merged to 'next' on 2023-07-18 at cf33f44a50)
 + ref-filter: simplify return type of match_points_at
 + ref-filter: avoid parsing non-tags in match_points_at()
 + ref-filter: avoid parsing tagged objects in match_points_at()
 + ref-filter: handle nested tags in --points-at option

 "git tag --list --points-at X" showed tags that directly refers to
 object X, but did not list a tag that points at such a tag, which
 has been corrected.
 source: <[email-masked]>

* jk/unused-parameter (2023-07-13) 14 commits
  (merged to 'next' on 2023-07-18 at 59d8f4ec1e)
 + t/helper: mark unused callback void data parameters
 + tag: mark unused parameters in each_tag_name_fn callbacks
 + rev-parse: mark unused parameter in for_each_abbrev callback
 + replace: mark unused parameter in each_mergetag_fn callback
 + replace: mark unused parameter in ref callback
 + merge-tree: mark unused parameter in traverse callback
 + fsck: mark unused parameters in various fsck callbacks
 + revisions: drop unused "opt" parameter in "tweak" callbacks
 + count-objects: mark unused parameter in alternates callback
 + am: mark unused keep_cr parameters
 + http-push: mark unused parameter in xml callback
 + http: mark unused parameters in curl callbacks
 + do_for_each_ref_helper(): mark unused repository parameter
 + test-ref-store: drop unimplemented reflog-expire command

 Mark-up unused parameters in the code so that we can eventually
 enable -Wunused-parameter by default.
 source: <[email-masked]>

* mh/mingw-case-sensitive-build (2023-06-12) 1 commit
  (merged to 'next' on 2023-07-17 at 2c72856851)
 + mingw: use lowercase includes for some Windows headers

 Names of MinGW header files are spelled in mixed case in some
 source files, but the build host can be using case sensitive
 filesystem with header files with their name spelled in all
 lowercase.
 source: <[email-masked]>

* rs/ref-filter-signature-fix (2023-07-17) 1 commit
  (merged to 'next' on 2023-07-18 at e74f016a60)
 + t6300: fix setup with GPGSSH but without GPG

 Test fix.
 source: <[email-masked]>

* rs/strbuf-addftime-simplify (2023-07-17) 1 commit
  (merged to 'next' on 2023-07-18 at d665b0f0e9)
 + strbuf: use skip_prefix() in strbuf_addftime()

 Code clean-up.
 source: <[email-masked]>

* tb/object-access-overflow-protection (2023-07-14) 20 commits
  (merged to 'next' on 2023-07-17 at 9ad8a08011)
 + commit-graph.c: prevent overflow in `verify_commit_graph()`
 + commit-graph.c: prevent overflow in `write_commit_graph()`
 + commit-graph.c: prevent overflow in `merge_commit_graph()`
 + commit-graph.c: prevent overflow in `split_graph_merge_strategy()`
 + commit-graph.c: prevent overflow in `load_tree_for_commit()`
 + commit-graph.c: prevent overflow in `fill_commit_in_graph()`
 + commit-graph.c: prevent overflow in `fill_commit_graph_info()`
 + commit-graph.c: prevent overflow in `load_oid_from_graph()`
 + commit-graph.c: prevent overflow in add_graph_to_chain()
 + commit-graph.c: prevent overflow in `write_commit_graph_file()`
 + pack-bitmap.c: ensure that eindex lookups don't overflow
 + midx.c: prevent overflow in `fill_included_packs_batch()`
 + midx.c: prevent overflow in `write_midx_internal()`
 + midx.c: store `nr`, `alloc` variables as `size_t`'s
 + midx.c: prevent overflow in `nth_midxed_offset()`
 + midx.c: prevent overflow in `nth_midxed_object_oid()`
 + midx.c: use `size_t`'s for fanout nr and alloc
 + packfile.c: use checked arithmetic in `nth_packed_object_offset()`
 + packfile.c: prevent overflow in `load_idx()`
 + packfile.c: prevent overflow in `nth_packed_object_id()`

 Various offset computation in the code that accesses the packfiles
 and other data in the object layer has been hardened against
 arithmetic overflow, especially on 32-bit systems.
 source: <[email-masked]>
 source: <[email-masked]>

* tb/refs-exclusion-and-packed-refs (2023-07-10) 16 commits
  (merged to 'next' on 2023-07-13 at 6d72f3e995)
 + ls-refs.c: avoid enumerating hidden refs where possible
 + upload-pack.c: avoid enumerating hidden refs where possible
 + builtin/receive-pack.c: avoid enumerating hidden references
 + refs.h: implement `hidden_refs_to_excludes()`
 + refs.h: let `for_each_namespaced_ref()` take excluded patterns
 + revision.h: store hidden refs in a `strvec`
 + refs/packed-backend.c: add trace2 counters for jump list
 + refs/packed-backend.c: implement jump lists to avoid excluded pattern(s)
 + refs/packed-backend.c: refactor `find_reference_location()`
 + refs: plumb `exclude_patterns` argument throughout
 + builtin/for-each-ref.c: add `--exclude` option
 + ref-filter.c: parameterize match functions over patterns
 + ref-filter: add `ref_filter_clear()`
 + ref-filter: clear reachable list pointers after freeing
 + ref-filter.h: provide `REF_FILTER_INIT`
 + refs.c: rename `ref_filter`

 Enumerating refs in the packed-refs file, while excluding refs that
 match certain patterns, has been optimized.
 source: <[email-masked]>

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

* ah/sequencer-rewrite-todo-fix (2023-07-24) 1 commit
 - sequencer: finish parsing the todo list despite an invalid first line

 When the user edits "rebase -i" todo file so that it starts with a
 "fixup", which would make it invalid, the command truncated the
 rest of the file before giving an error and returning the control
 back to the user.  Stop truncating to make it easier to correct
 such a malformed todo file.

 Will merge to 'next'.
 cf. <https://lore.kernel.org/git/[email-masked]/>
 source: <[email-masked]>

* bb/trace2-comment-fix (2023-07-19) 1 commit
  (merged to 'next' on 2023-07-21 at f77aeba1b5)
 + trace2: fix a comment

 In-code comment fix.

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

* ks/ref-filter-describe (2023-07-24) 2 commits
 - ref-filter: add new "describe" atom
 - ref-filter: add multiple-option parsing functions

 "git branch --list --format=<format>" and friends are taught
 a new "%(describe)" placeholder.

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

* bb/use-trace2-counters-for-fsync-stats (2023-07-20) 1 commit
 - wrapper: use trace2 counters to collect fsync stats

 Instead of inventing a custom counter variables for debugging,
 use existing trace2 facility in the fsync customization codepath.

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

* am/doc-sha256 (2023-07-20) 1 commit
 - doc: sha256 is no longer experimental

 Tone down the warning on SHA-256 repositories being an experimental
 curiosity.  We do not have support for them to interoperate with
 traditional SHA-1 repositories, but at this point, we do not plan
 to make breaking changes to SHA-256 repositories and there is no
 longer need for such a strongly phrased warning.

 Review comments sent.
 cf. <[email-masked]>
 source: <ZLlNtbAbVcYH7eFb@adams>

* hy/blame-in-bare-with-contents (2023-07-21) 1 commit
 - blame: allow --contents to work with bare repo

 "git blame --contents=file" has been taught to work in a bare
 repository.

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

* ja/worktree-orphan-fix (2023-07-21) 4 commits
 - SQUASH???
 - t2400: rewrite regex to avoid unintentional PCRE
 - builtin/worktree.c: convert tab in advice to space
 - t2400: drop no-op `--sq` from rev-parse call

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

* rs/describe-parseopt-fix (2023-07-21) 1 commit
  (merged to 'next' on 2023-07-21 at e74749af0c)
 + describe: fix --no-exact-match

 Command line parser fix.

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

* rs/pack-objects-parseopt-fix (2023-07-21) 2 commits
  (merged to 'next' on 2023-07-21 at acdf84416c)
 + pack-objects: fix --no-quiet
 + pack-objects: fix --no-keep-true-parents

 Command line parser fix.

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

* jc/retire-get-sha1-hex (2023-07-24) 1 commit
 - hex: retire get_sha1_hex()

 The implementation of "get_sha1_hex()" that reads a hexadecimal
 string that spells a full object name has been extended to cope
 with any hash function used in the repository, but the "sha1" in
 its name survived.  Rename it to get_hash_hex(), a name that is
 more consistent within its friends like get_hash_hex_algop().

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

* rs/parse-options-negation-help (2023-07-24) 5 commits
 - parse-options: show negatability of options in short help
 - t1502: test option negation
 - t1502: move optionspec help output to a file
 - t1502, docs: disallow --no-help
 - subtree: disallow --no-{help,quiet,debug,branch,message}

 "git cmd -h" learned to signal which options can be negated by
 listing such options like "--[no-]opt".

 Comments?
 Would showing "--[[no-]no-]opt" for "no-opt" be worth it?
 cf. <[email-masked]>
 source: <[email-masked]>

* tb/commit-graph-tests (2023-07-24) 5 commits
 - t/lib-commit-graph.sh: avoid sub-shell in `graph_git_behavior()`
 - t5328: avoid top-level directory changes
 - t5318: avoid top-level directory changes
 - t/lib-commit-graph.sh: avoid directory change in `graph_git_behavior()`
 - t/lib-commit-graph.sh: allow `graph_read_expect()` in sub-directories

 Test updates.

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

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

* tk/cherry-pick-sequence-requires-clean-worktree (2023-06-01) 1 commit
 - cherry-pick: refuse cherry-pick sequence if index is dirty

 "git cherry-pick A" that replays a single commit stopped before
 clobbering local modification, but "git cherry-pick A..B" did not,
 which has been corrected.

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

* ed/fsmonitor-windows-named-pipe (2023-03-24) 1 commit
 - fsmonitor: handle differences between Windows named pipe functions

 Fix fsmonitor on Windows when the filesystem path contains certain
 characters.

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

* rn/sparse-diff-index (2023-04-10) 1 commit
 - diff-index: enable sparse index

 "git diff-index" command has been taught to work better with the
 sparse index.

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

* es/recurse-submodules-option-is-a-bool (2023-04-10) 1 commit
 - usage: clarify --recurse-submodules as a boolean

 The "--[no-]recurse-submodules" option of "git checkout" and others
 supported an undocumented syntax --recurse-submodules=<value> where
 the value can spell a Boolean in various ways.  The support for the
 syntax is being dropped.

 Will discard.
 Have been expecting a reroll for too long.
 cf. <ZDSTFwMFO7vbj/[email-masked]>
 source: <ZDSTFwMFO7vbj/[email-masked]>

* cb/checkout-same-branch-twice (2023-03-22) 2 commits
 - SQUASH??? the test marked to expect failure passes from day one
 - checkout/switch: disallow checking out same branch in multiple worktrees

 "git checkout -B $branch" failed to protect against checking out
 a branch that is checked out elsewhere, unlike "git branch -f" did.

 Will discard.
 Have been expecting a hopefully minor and final reroll for too long.
 cf. <[email-masked]>
 source: <[email-masked]>

* ab/tag-object-type-errors (2023-05-10) 4 commits
 - tag: don't emit potentially incorrect "object is a X, not a Y"
 - tag: don't misreport type of tagged objects in errors
 - object tests: add test for unexpected objects in tags
 - Merge branch 'jk/parse-object-type-mismatch' into ab/tag-object-type-errors

 Hardening checks around mismatched object types when one of those
 objects is a tag.

 Will discard.
 Stalled for too long.
 source: <[email-masked]>

* ob/revert-of-revert (2023-05-05) 1 commit
 - sequencer: beautify subject of reverts of reverts

 Instead of "Revert "Revert "original"", give "Reapply "original""
 as the title for a revert of a revert.

 Will discard.
 Have been expecting a hopefully final reroll for too long.
 Looking much better, except for minor cosmetic issues.
 cf. <[email-masked]>
 source: <[email-masked]>

* pw/rebase-i-after-failure (2023-04-21) 6 commits
 - rebase -i: fix adding failed command to the todo list
 - rebase: fix rewritten list for failed pick
 - rebase --continue: refuse to commit after failed command
 - sequencer: factor out part of pick_commits()
 - rebase -i: remove patch file after conflict resolution
 - rebase -i: move unlink() calls

 Various fixes to the behaviour of "rebase -i" when the command got
 interrupted by conflicting changes.

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

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

* la/doc-choose-starting-point (2023-07-14) 5 commits
  (merged to 'next' on 2023-07-19 at 5a807cae46)
 + SubmittingPatches: simplify guidance for choosing a starting point
 + SubmittingPatches: emphasize need to communicate non-default starting points
 + SubmittingPatches: de-emphasize branches as starting points
 + SubmittingPatches: discuss subsystems separately from git.git
 + SubmittingPatches: reword awkward phrasing

 Clarify how to choose the starting point for a new topic in
 developer guidance document.

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

* jr/gitignore-doc-example-markup (2023-07-18) 1 commit
  (merged to 'next' on 2023-07-19 at 4f2ece568d)
 + gitignore.txt: use backticks instead of double quotes

 Doc update.

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

* jc/am-parseopt-fix (2023-07-18) 1 commit
  (merged to 'next' on 2023-07-19 at eaf592531e)
 + am: simplify parsing of "--[no-]keep-cr"

 Code simplification.

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

* jc/branch-parseopt-fix (2023-07-18) 1 commit
  (merged to 'next' on 2023-07-19 at 738d25bbb6)
 + branch: reject "--no-all" and "--no-remotes" early

 Command line parser fixes.

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

* rs/ls-tree-no-full-name-fix (2023-07-18) 1 commit
  (merged to 'next' on 2023-07-19 at 86e570c084)
 + ls-tree: fix --no-full-name

 Command line parser fix.

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

* jc/doc-sent-patch-now-what (2023-07-19) 1 commit
 - MyFirstContribution: refrain from self-iterating too much

 Process document update.

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

* jc/gitignore-doc-pattern-markup (2023-07-18) 1 commit
  (merged to 'next' on 2023-07-20 at ecfc9c6118)
 + gitignore.txt: mark up explanation of patterns consistently

 Doc mark-up update.

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

* jc/parse-options-reset (2023-07-19) 1 commit
  (merged to 'next' on 2023-07-20 at d2178a4bd4)
 + reset: reject --no-(mixed|soft|hard|merge|keep) option

 Command line parser fix.

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

* jc/parse-options-short-help (2023-07-19) 3 commits
 - short help: allow a gap smaller than USAGE_GAP
 - remote: simplify "remote add --tags" help text
 - short help: allow multi-line opthelp

 Command line parser fix, and a small parse-options API update.

 Comments?
 source: <[email-masked]>

* jc/parse-options-show-branch (2023-07-19) 2 commits
  (merged to 'next' on 2023-07-20 at 4fa809c2f2)
 + show-branch: reject --[no-](topo|date)-order
 + show-branch: --no-sparse should give dense output

 Command line parser fixes.

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

* jc/transport-parseopt-fix (2023-07-18) 2 commits
  (merged to 'next' on 2023-07-20 at 07f0026aaa)
 + fetch: reject --no-ipv[46]
 + parse-options: introduce OPT_IPVERSION()

 Command line parser fixes.

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

* sl/sparse-check-attr (2023-07-18) 3 commits
 - check-attr: integrate with sparse-index
 - attr.c: read attributes in a sparse directory
 - t1092: add tests for 'git check-attr'

 Teach "git check-attr" work better with sparse-index.

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

* ah/autoconf-fixes (2023-07-19) 3 commits
  (merged to 'next' on 2023-07-25 at 35ff66e0cb)
 + configure.ac: always save NO_ICONV to config.status
 + configure.ac: don't overwrite NO_CURL option
 + configure.ac: don't overwrite NO_EXPAT option

 "./configure --with-expat=no" did not work as a way to refuse use
 of the expat library on a system with the library installed, which
 has been corrected.

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

* jc/branch-in-use-error-message (2023-07-21) 1 commit
 - branch: update the message to refuse touching a branch in-use

 "git branch -f X" to repoint the branch X seid that X was "checked
 out" in another worktree, even when branch X was not and instead
 being bisected or rebased.  The message was reworded to say the
 branch was "in use".

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

* jc/doc-submodule-update-settings (2023-07-13) 1 commit
 . submodule: clarify that "!custom command" is the only oddball

 Rewrite the description of giving a custom command to the
 submodule.<name>.update configuraiton variable.

 Expecting a reroll from the original author.
 cf. <[email-masked]>
 source: <[email-masked]>

* jc/tree-walk-drop-base-offset (2023-07-07) 2 commits
  (merged to 'next' on 2023-07-25 at cc050c60a6)
 + tree-walk: drop unused base_offset from do_match()
 + tree-walk: lose base_offset that is never used in tree_entry_interesting

 Code simplification.

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

* mh/credential-erase-improvements-more (2023-06-24) 2 commits
 - credential/wincred: erase matching creds only
 - credential/libsecret: erase matching creds only

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

* cc/repack-sift-filtered-objects-to-separate-pack (2023-07-24) 8 commits
 - gc: add `gc.repackFilterTo` config option
 - repack: implement `--filter-to` for storing filtered out objects
 - gc: add `gc.repackFilter` config option
 - repack: add `--filter=<filter-spec>` option
 - repack: refactor finding pack prefix
 - repack: refactor finishing pack-objects command
 - t/helper: add 'find-pack' test-tool
 - pack-objects: allow `--filter` without `--stdout`

 "git repack" machinery learns to pay attention to the "--filter="
 option.

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

* js/doc-unit-tests (2023-06-30) 1 commit
 - unit tests: Add a project plan document

 Process to add some form of low-level unit tests has started.

 Still filling in blanks.
 source: <[email-masked]>

* jt/path-filter-fix (2023-07-13) 4 commits
 - commit-graph: new filter ver. that fixes murmur3
 - repo-settings: introduce commitgraph.changedPathsVersion
 - t4216: test changed path filters with high bit paths
 - gitformat-commit-graph: describe version 2 of BDAT

 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.

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

* mh/credential-libsecret-attrs (2023-06-16) 1 commit
 - credential/libsecret: store new attributes

 The way authentication related data other than passwords (e.g.
 oath token and password expiration data) are stored in libsecret
 keyrings has been rethought.

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

* cc/git-replay (2023-06-03) 15 commits
 - replay: stop assuming replayed branches do not diverge
 - replay: add --contained to rebase contained branches
 - replay: add --advance or 'cherry-pick' mode
 - replay: disallow revision specific options and pathspecs
 - replay: use standard revision ranges
 - replay: make it a minimal server side command
 - replay: remove HEAD related sanity check
 - replay: remove progress and info output
 - replay: add an important FIXME comment about gpg signing
 - replay: don't simplify history
 - replay: introduce pick_regular_commit()
 - replay: die() instead of failing assert()
 - replay: start using parse_options API
 - replay: introduce new builtin
 - t6429: remove switching aspects of fast-rebase

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

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

* jc/rerere-read-rr-fix (2023-07-21) 1 commit
 . rerere: match the hash algorithm with its length

 SHA-256 fix.

 Superseded by jc/retire-get-sha1-hex
 source: <[email-masked]>