Subject: What's cooking in git.git (Oct 2023, #09; Mon, 30)

From: Junio C Hamano <[email-masked]>
Date: Mon, 30 Oct 2023 08:52:57 +0900

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

* bc/racy-4gb-files (2023-10-13) 2 commits
  (merged to 'next' on 2023-10-16 at c60962dfee)
 + Prevent git from rehashing 4GiB files
 + t: add a test helper to truncate files

 The index file has room only for lower 32-bit of the file size in
 the cached stat information, which means cached stat information
 will have 0 in its sd_size member for a file whose size is multiple
 of 4GiB.  This is mistaken for a racily clean path.  Avoid it by
 storing a bogus sd_size value instead for such files.
 source: <[email-masked]>

* en/docfixes (2023-10-09) 25 commits
  (merged to 'next' on 2023-10-17 at 1e3cdeb427)
 + documentation: add missing parenthesis
 + documentation: add missing quotes
 + documentation: add missing fullstops
 + documentation: add some commas where they are helpful
 + documentation: fix whitespace issues
 + documentation: fix capitalization
 + documentation: fix punctuation
 + documentation: use clearer prepositions
 + documentation: add missing hyphens
 + documentation: remove unnecessary hyphens
 + documentation: add missing article
 + documentation: fix choice of article
 + documentation: whitespace is already generally plural
 + documentation: fix singular vs. plural
 + documentation: fix verb vs. noun
 + documentation: fix adjective vs. noun
 + documentation: fix verb tense
 + documentation: employ consistent verb tense for a list
 + documentation: fix subject/verb agreement
 + documentation: remove extraneous words
 + documentation: add missing words
 + documentation: fix apostrophe usage
 + documentation: fix typos
 + documentation: fix small error
 + documentation: wording improvements

 Documentation typo and grammo fixes.
 source: <[email-masked]>

* jc/fail-stash-to-store-non-stash (2023-10-11) 1 commit
  (merged to 'next' on 2023-10-16 at e26db57315)
 + stash: be careful what we store

 Feeding "git stash store" with a random commit that was not created
 by "git stash create" now errors out.
 source: <[email-masked]>

* jk/chunk-bounds (2023-10-14) 21 commits
  (merged to 'next' on 2023-10-16 at 68c9e37980)
 + t5319: make corrupted large-offset test more robust
  (merged to 'next' on 2023-10-10 at 21139603ce)
 + chunk-format: drop pair_chunk_unsafe()
 + commit-graph: detect out-of-order BIDX offsets
 + commit-graph: check bounds when accessing BIDX chunk
 + commit-graph: check bounds when accessing BDAT chunk
 + commit-graph: bounds-check generation overflow chunk
 + commit-graph: check size of generations chunk
 + commit-graph: bounds-check base graphs chunk
 + commit-graph: detect out-of-bounds extra-edges pointers
 + commit-graph: check size of commit data chunk
 + midx: check size of revindex chunk
 + midx: bounds-check large offset chunk
 + midx: check size of object offset chunk
 + midx: enforce chunk alignment on reading
 + midx: check size of pack names chunk
 + commit-graph: check consistency of fanout table
 + midx: check size of oid lookup chunk
 + commit-graph: check size of oid fanout chunk
 + midx: stop ignoring malformed oid fanout chunk
 + t: add library for munging chunk-format files
 + chunk-format: note that pair_chunk() is unsafe
 (this branch is used by tb/pair-chunk-expect-size.)

 The codepaths that read "chunk" formatted files have been corrected
 to pay attention to the chunk size and notice broken files.
 source: <[email-masked]>

* so/diff-merges-dd (2023-10-09) 3 commits
  (merged to 'next' on 2023-10-16 at 71b5e29625)
 + completion: complete '--dd'
 + diff-merges: introduce '--dd' option
 + diff-merges: improve --diff-merges documentation

 "git log" and friends learned "--dd" that is a short-hand for
 "--diff-merges=first-parent -p".
 source: <[email-masked]>

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

* ii/branch-error-messages-update (2023-10-23) 1 commit
  (merged to 'next' on 2023-10-23 at 3d00599173)
 + builtin/branch.c: adjust error messages to coding guidelines

 Error message update.

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

* jm/bisect-run-synopsis-fix (2023-10-23) 1 commit
  (merged to 'next' on 2023-10-23 at 8dfa3ed356)
 + doc/git-bisect: clarify `git bisect run` syntax

 Doc and usage message update.

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

* ar/submitting-patches-doc-update (2023-10-24) 1 commit
 - SubmittingPatches: call gitk's command "Copy commit reference"

 Doc update.

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

* es/bugreport-no-extra-arg (2023-10-29) 2 commits
 - bugreport: reject positional arguments
 - t0091-bugreport: stop using i18ngrep

 source: <[email-masked]>

* js/my-first-contribution-update (2023-10-28) 1 commit
 - Include gettext.h in MyFirstContribution tutorial

 source: <[email-masked]>

* ms/send-email-validate-fix (2023-10-26) 1 commit
 - send-email: move validation code below process_address_list

 source: <[email-masked]>

* ps/ci-gitlab (2023-10-29) 5 commits
 - ci: add support for GitLab CI
 - ci: split out logic to set up failed test artifacts
 - ci: group installation of Docker dependencies
 - ci: make grouping setup more generic
 - ci: reorder definitions for grouping functions

 source: <[email-masked]>

* ps/ref-tests-update (2023-10-24) 9 commits
 - t: mark several tests that assume the files backend with REFFILES
 - t7900: assert the absence of refs via git-for-each-ref(1)
 - t7300: assert exact states of repo
 - t4207: delete replace references via git-update-ref(1)
 - t1450: convert tests to remove worktrees via git-worktree(1)
 - t: convert tests to not access reflog via the filesystem
 - t: convert tests to not access symrefs via the filesystem
 - t: convert tests to not write references via the filesystem
 - t: allow skipping expected object ID in `ref-store update-ref`

 source: <[email-masked]>

* rs/fix-arghelp (2023-10-29) 1 commit
 - am, rebase: fix arghelp syntax of --empty

 source: <[email-masked]>

* rs/parse-options-cmdmode (2023-10-29) 2 commits
 - am: simplify --show-current-patch handling
 - parse-options: make CMDMODE errors more precise

 source: <[email-masked]>

* rs/reflog-expire-single-worktree-fix (2023-10-29) 1 commit
 - reflog: fix expire --single-worktree

 source: <[email-masked]>

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

* pw/rebase-sigint (2023-09-07) 1 commit
 - rebase -i: ignore signals when forking subprocesses

 If the commit log editor or other external programs (spawned via
 "exec" insn in the todo list) receive internactive signal during
 "git rebase -i", it caused not just the spawned program but the
 "Git" process that spawned them, which is often not what the end
 user intended.  "git" learned to ignore SIGINT and SIGQUIT while
 waiting for these subprocesses.

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

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

* jc/diff-cached-fsmonitor-fix (2023-09-15) 3 commits
 - diff-lib: fix check_removed() when fsmonitor is active
 - Merge branch 'jc/fake-lstat' into jc/diff-cached-fsmonitor-fix
 - Merge branch 'js/diff-cached-fsmonitor-fix' into jc/diff-cached-fsmonitor-fix
 (this branch uses jc/fake-lstat.)

 The optimization based on fsmonitor in the "diff --cached"
 codepath is resurrected with the "fake-lstat" introduced earlier.

 It is unknown if the optimization is worth resurrecting, but in case...
 source: <[email-masked]>

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

* jc/am-doc-whitespace-action-fix (2023-10-18) 1 commit
  (merged to 'next' on 2023-10-20 at 9200d39c08)
 + am: align placeholder for --whitespace option with apply

 Docfix.

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

* da/t7601-style-fix (2023-10-18) 1 commit
  (merged to 'next' on 2023-10-20 at 8e7326458c)
 + t7601: use "test_path_is_file" etc. instead of "test -f"

 Coding style update.

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

* jx/fetch-atomic-error-message-fix (2023-10-19) 2 commits
 - fetch: no redundant error message for atomic fetch
 - t5574: test porcelain output of atomic fetch

 "git fetch --atomic" issued an unnecessary empty error message,
 which has been corrected.

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

* mm/p4-symlink-with-lfs (2023-10-19) 1 commit
  (merged to 'next' on 2023-10-20 at 9c05ce7e85)
 + git-p4 shouldn't attempt to store symlinks in LFS

 "git p4" tried to store symlinks to LFS when told, but has been
 fixed not to do so, because it does not make sense.

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

* jk/send-email-fix-addresses-from-composed-messages (2023-10-20) 3 commits
  (merged to 'next' on 2023-10-22 at 43221cc3a4)
 + send-email: handle to/cc/bcc from --compose message
 + Revert "send-email: extract email-parsing code into a subroutine"
 + doc/send-email: mention handling of "reply-to" with --compose

 The codepath to handle recipient addresses `git send-email
 --compose` learns from the user was completely broken, which has
 been corrected.

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

* ms/doc-push-fix (2023-10-20) 1 commit
  (merged to 'next' on 2023-10-22 at 7ce3cef56b)
 + git-push doc: more visibility for -q option

 Docfix.

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

* ob/rebase-cleanup (2023-10-20) 3 commits
  (merged to 'next' on 2023-10-22 at 05e14ca4fc)
 + rebase: move parse_opt_keep_empty() down
 + rebase: handle --strategy via imply_merge() as well
 + rebase: simplify code related to imply_merge()

 Code clean-up.

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

* wx/merge-ort-comment-typofix (2023-10-21) 1 commit
  (merged to 'next' on 2023-10-22 at ad1e33883a)
 + merge-ort.c: fix typo 'neeed' to 'needed'

 Typofix.

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

* jc/commit-new-underscore-index-fix (2023-10-17) 1 commit
  (merged to 'next' on 2023-10-22 at 0e4787303d)
 + commit: do not use cryptic "new_index" in end-user facing messages

 Message fix.

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

* js/bugreport-in-the-same-minute (2023-10-16) 1 commit
 - bugreport: include +i in outfile suffix as needed

 Instead of auto-generating a filename that is already in use for
 output and fail the command, `git bugreport` learned to fuzz the
 filename to avoid collisions with existing files.

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

* kh/pathspec-error-wo-repository-fix (2023-10-20) 1 commit
  (merged to 'next' on 2023-10-22 at 4f77af1e40)
 + grep: die gracefully when outside repository

 The pathspec code carelessly dereferenced NULL while emitting an
 error message, which has been corrected.

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

* kh/t7900-cleanup (2023-10-17) 9 commits
 - t7900: fix register dependency
 - t7900: factor out packfile dependency
 - t7900: fix `print-args` dependency
 - t7900: fix `pfx` dependency
 - t7900: factor out common schedule setup
 - t7900: factor out inheritance test dependency
 - t7900: create commit so that branch is born
 - t7900: setup and tear down clones
 - t7900: remove register dependency

 Test clean-up.

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

* ni/die-message-fix-for-git-add (2023-10-17) 1 commit
  (merged to 'next' on 2023-10-22 at f46c5dfd63)
 + builtin/add.c: clean up die() messages

 Message updates.

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

* ps/git-repack-doc-fixes (2023-10-16) 2 commits
  (merged to 'next' on 2023-10-22 at df64849f26)
 + doc/git-repack: don't mention nonexistent "--unpacked" option
 + doc/git-repack: fix syntax for `-g` shorthand option

 Doc updates.

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

* tb/merge-tree-write-pack (2023-10-23) 5 commits
 - builtin/merge-tree.c: implement support for `--write-pack`
 - bulk-checkin: introduce `index_tree_bulk_checkin_incore()`
 - bulk-checkin: introduce `index_blob_bulk_checkin_incore()`
 - bulk-checkin: generify `stream_blob_to_pack()` for arbitrary types
 - bulk-checkin: extract abstract `bulk_checkin_source`

 "git merge-tree" learned "--write-pack" to record its result
 without creating loose objects.

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

* tb/format-pack-doc-update (2023-10-12) 2 commits
 - Documentation/gitformat-pack.txt: fix incorrect MIDX documentation
 - Documentation/gitformat-pack.txt: fix typo

 Doc update.

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

* ps/do-not-trust-commit-graph-blindly-for-existence (2023-10-24) 2 commits
 - commit: detect commits that exist in commit-graph but not in the ODB
 - commit-graph: introduce envvar to disable commit existence checks
 (this branch is used by kn/rev-list-missing-fix.)

 The codepath to traverse the commit-graph learned to notice that a
 commit is missing (e.g., corrupt repository lost an object), even
 though it knows something about the commit (like its parents) from
 what is in commit-graph.

 Comments?
 source: <[email-masked]>

* tb/pair-chunk-expect-size (2023-10-14) 8 commits
 - midx: read `OOFF` chunk with `pair_chunk_expect()`
 - midx: read `OIDL` chunk with `pair_chunk_expect()`
 - midx: read `OIDF` chunk with `pair_chunk_expect()`
 - commit-graph: read `BIDX` chunk with `pair_chunk_expect()`
 - commit-graph: read `GDAT` chunk with `pair_chunk_expect()`
 - commit-graph: read `CDAT` chunk with `pair_chunk_expect()`
 - commit-graph: read `OIDF` chunk with `pair_chunk_expect()`
 - chunk-format: introduce `pair_chunk_expect()` helper

 Code clean-up for jk/chunk-bounds topic.

 Comments?
 source: <[email-masked]>
 source: <[email-masked]>

* jc/grep-f-relative-to-cwd (2023-10-12) 1 commit
 - grep: -f <path> is relative to $cwd

 "cd sub && git grep -f patterns" tried to read "patterns" file at
 the top level of the working tree; it has been corrected to read
 "sub/patterns" instead.

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

* tb/path-filter-fix (2023-10-18) 17 commits
 - bloom: introduce `deinit_bloom_filters()`
 - commit-graph: reuse existing Bloom filters where possible
 - object.h: fix mis-aligned flag bits table
 - commit-graph: drop unnecessary `graph_read_bloom_data_context`
 - commit-graph.c: unconditionally load Bloom filters
 - bloom: prepare to discard incompatible Bloom filters
 - bloom: annotate filters with hash version
 - commit-graph: new filter ver. that fixes murmur3
 - 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.

 Needs (hopefully final and quick) review.
 source: <[email-masked]>

* kn/rev-list-missing-fix (2023-10-29) 4 commits
 - rev-list: add commit object support in `--missing` option
 - rev-list: move `show_commit()` to the bottom
 - revision: rename bit to `do_not_die_on_missing_objects`
 - Merge branch 'ps/do-not-trust-commit-graph-blindly-for-existence' into kn/rev-list-missing-fix
 (this branch uses ps/do-not-trust-commit-graph-blindly-for-existence.)

 "git rev-list --missing" did not work for missing commit objects,
 which has been corrected.

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

* sn/typo-grammo-phraso-fixes (2023-10-05) 5 commits
  (merged to 'next' on 2023-10-18 at 575d767f9a)
 + t/README: fix multi-prerequisite example
 + doc/gitk: s/sticked/stuck/
 + git-jump: admit to passing merge mode args to ls-files
 + doc/diff-options: improve wording of the log.diffMerges mention
 + doc: fix some typos, grammar and wording issues

 Many typos, ungrammatical sentences and wrong phrasing have been
 fixed.

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

* jc/update-list-references-to-lore (2023-10-06) 1 commit
  (merged to 'next' on 2023-10-19 at 83a721a137)
 + doc: update list archive reference to use lore.kernel.org

 Doc update.

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

* cc/git-replay (2023-10-10) 14 commits
 - replay: stop assuming replayed branches do not diverge
 - replay: add --contained to rebase contained branches
 - replay: add --advance or 'cherry-pick' mode
 - 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: change rev walking options
 - 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

 Introduce "git replay", a tool meant on the server side without
 working tree to recreate a history.

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

* ak/color-decorate-symbols (2023-10-23) 7 commits
 - log: add color.decorate.pseudoref config variable
 - refs: exempt pseudorefs from pattern prefixing
 - refs: add pseudorefs array and iteration functions
 - log: add color.decorate.ref config variable
 - log: add color.decorate.symbol config variable
 - log: use designated inits for decoration_colors
 - config: restructure color.decorate documentation

 A new config for coloring.

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

* jc/attr-tree-config (2023-10-13) 2 commits
  (merged to 'next' on 2023-10-19 at 202dc1c453)
 + attr: add attr.tree for setting the treeish to read attributes from
 + attr: read attributes from HEAD when bare repo

 The attribute subsystem learned to honor `attr.tree` configuration
 that specifies which tree to read the .gitattributes files from.

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

* js/update-urls-in-doc-and-comment (2023-09-26) 4 commits
 - doc: refer to internet archive
 - doc: update links for andre-simon.de
 - doc: update links to current pages
 - doc: switch links to https

 Stale URLs have been updated to their current counterparts (or
 archive.org) and HTTP links are replaced with working HTTPS links.

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

* la/trailer-cleanups (2023-10-20) 3 commits
 - trailer: use offsets for trailer_start/trailer_end
 - trailer: find the end of the log message
 - commit: ignore_non_trailer computes number of bytes to ignore

 Code clean-up.

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

* eb/hash-transition (2023-10-02) 30 commits
 - t1016-compatObjectFormat: add tests to verify the conversion between objects
 - t1006: test oid compatibility with cat-file
 - t1006: rename sha1 to oid
 - test-lib: compute the compatibility hash so tests may use it
 - builtin/ls-tree: let the oid determine the output algorithm
 - object-file: handle compat objects in check_object_signature
 - tree-walk: init_tree_desc take an oid to get the hash algorithm
 - builtin/cat-file: let the oid determine the output algorithm
 - rev-parse: add an --output-object-format parameter
 - repository: implement extensions.compatObjectFormat
 - object-file: update object_info_extended to reencode objects
 - object-file-convert: convert commits that embed signed tags
 - object-file-convert: convert commit objects when writing
 - object-file-convert: don't leak when converting tag objects
 - object-file-convert: convert tag objects when writing
 - object-file-convert: add a function to convert trees between algorithms
 - object: factor out parse_mode out of fast-import and tree-walk into in object.h
 - cache: add a function to read an OID of a specific algorithm
 - tag: sign both hashes
 - commit: export add_header_signature to support handling signatures on tags
 - commit: convert mergetag before computing the signature of a commit
 - commit: write commits for both hashes
 - object-file: add a compat_oid_in parameter to write_object_file_flags
 - object-file: update the loose object map when writing loose objects
 - loose: compatibilty short name support
 - loose: add a mapping between SHA-1 and SHA-256 for loose objects
 - repository: add a compatibility hash algorithm
 - object-names: support input of oids in any supported hash
 - oid-array: teach oid-array to handle multiple kinds of oids
 - object-file-convert: stubs for converting from one object format to another

 Teach a repository to work with both SHA-1 and SHA-256 hash algorithms.

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

* jx/remote-archive-over-smart-http (2023-10-04) 4 commits
 - archive: support remote archive from stateless transport
 - transport-helper: call do_take_over() in connect_helper
 - transport-helper: call do_take_over() in process_connect
 - transport-helper: no connection restriction in connect_helper

 "git archive --remote=<remote>" learned to talk over the smart
 http (aka stateless) transport.

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

* jx/sideband-chomp-newline-fix (2023-10-04) 3 commits
 - pkt-line: do not chomp newlines for sideband messages
 - pkt-line: memorize sideband fragment in reader
 - test-pkt-line: add option parser for unpack-sideband

 Sideband demultiplexer fixes.

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

* js/config-parse (2023-09-21) 5 commits
 - config-parse: split library out of config.[c|h]
 - config.c: accept config_parse_options in git_config_from_stdin
 - config: report config parse errors using cb
 - config: split do_event() into start and flush operations
 - config: split out config_parse_options

 The parsing routines for the configuration files have been split
 into a separate file.

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

* jc/fake-lstat (2023-09-15) 1 commit
 - cache: add fake_lstat()
 (this branch is used by jc/diff-cached-fsmonitor-fix.)

 A new helper to let us pretend that we called lstat() when we know
 our cache_entry is up-to-date via fsmonitor.

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

* js/doc-unit-tests (2023-10-16) 5 commits
 - fixup! ci: run unit tests in CI
 - fixup! unit tests: add TAP unit test framework
 - ci: run unit tests in CI
 - unit tests: add TAP unit test framework
 - unit tests: add a project plan document
 (this branch is used by js/doc-unit-tests-with-cmake.)

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

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

* js/doc-unit-tests-with-cmake (2023-10-19) 7 commits
 - cmake: handle also unit tests
 - cmake: use test names instead of full paths
 - cmake: fix typo in variable name
 - artifacts-tar: when including `.dll` files, don't forget the unit-tests
 - unit-tests: do show relative file paths
 - unit-tests: do not mistake `.pdb` files for being executable
 - cmake: also build unit tests
 (this branch uses js/doc-unit-tests.)

 Update the base topic to work with CMake builds.

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

* jc/rerere-cleanup (2023-08-25) 4 commits
 - rerere: modernize use of empty strbuf
 - rerere: try_merge() should use LL_MERGE_ERROR when it means an error
 - rerere: fix comment on handle_file() helper
 - rerere: simplify check_one_conflict() helper function

 Code clean-up.

 Not ready to be reviewed yet.
 source: <[email-masked]>

* rj/status-bisect-while-rebase (2023-10-16) 1 commit
 - status: fix branch shown when not only bisecting

 "git status" is taught to show both the branch being bisected and
 being rebased when both are in effect at the same time.

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

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

* rs/parse-options-value-int (2023-09-18) 2 commits
 . parse-options: use and require int pointer for OPT_CMDMODE
 . parse-options: add int value pointer to struct option

 A bit of type safety for the "value" pointer used in the
 parse-options API.

 Retracted.
 cf. <[email-masked]>
 source: <[email-masked]>