What's cooking in git.git (Sep 2023, #08; Mon, 25)
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).
With Contributors' Summit happening this week, the early part of the week may be slower than usual (my response time will certainly be longer).
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/
--------------------------------------------------
[New Topics]
* jx/remote-archive-over-smart-http (2023-09-25) 3 commits
- archive: support remote archive from stateless transport
- transport-helper: run do_take_over in connect_helper
- transport-helper: no connection restriction in connect_helper
"git archive --remote=<remote>" learned to talk over the smart http (aka stateless) transport.
Expecting a reroll.
cf. <CANYiYbFkG+CvrNFBkdNewZs7ADROVsjd051SDQsU0zVq8eBhew@mail.gmail.com>
source: <[email protected]>
* jx/sideband-chomp-newline-fix (2023-09-25) 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: <CANYiYbF+Xmk4rCNLMJe+i_CFafg8=QU5vbXWNUZbOVsDLTe5QQ@mail.gmail.com>
* ks/ref-filter-mailmap (2023-09-25) 3 commits
- ref-filter: add mailmap support
- t/t6300: introduce test_bad_atom
- t/t6300: cleanup test_atom
"git for-each-ref" and friends learn to apply mailmap to authorname and other fields.
Will merge to 'next'.
source: <[email protected]>
* ps/revision-cmdline-stdin-not (2023-09-25) 1 commit
- revision: make pseudo-opt flags read via stdin behave consistently
"git rev-list --stdin" learned to take non-revisions (like "--not") recently from the standard input, but the way such a "--not" was handled was quite confusing, which has been rethought. This is potentially a change that breaks backward compatibility.
Will merge to 'next'?
source: <6221acd2796853144f8e84081655fbc79fdc6634.1695646898.git.ps@pks.im>
* ty/merge-tree-strategy-options (2023-09-25) 1 commit
- merge-tree: add -X strategy option
"git merge-tree" learned to take strategy backend specific options via the "-X" option, like "git merge" does.
Will merge to 'next'?
source: <[email protected]>
--------------------------------------------------
[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 protected]>
source: <[email protected]>
* 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 protected]>
--------------------------------------------------
[Cooking]
* hy/doc-show-is-like-log-not-diff-tree (2023-09-20) 1 commit (merged to 'next' on 2023-09-22 at 5492c03eae)
+ show doc: redirect user to git log manual instead of git diff-tree
Doc update.
Will merge to 'master'.
source: <[email protected]>
* jc/alias-completion (2023-09-20) 1 commit
(merged to 'next' on 2023-09-22 at 1d069e900b)
+ completion: loosen and document the requirement around completing alias
The command line completion script (in contrib/) can be told to complete aliases by including ": git <cmd> ;" in the alias to tell it that the alias should be completed similar to how "git <cmd>" is completed. The parsing code for the alias as been loosened to allow ';' without an extra space before it.
Will merge to 'master'.
cf. <[email protected]>
source: <[email protected]>
* jk/test-pass-ubsan-options-to-http-test (2023-09-21) 1 commit (merged to 'next' on 2023-09-22 at bbe2f75937)
+ test-lib: set UBSAN_OPTIONS to match ASan
UBSAN options were not propagated through the test framework to git run via the httpd, unlike ASAN options, which has been corrected.
Will merge to 'master'.
source: <[email protected]>
* ob/am-msgfix (2023-09-21) 1 commit
(merged to 'next' on 2023-09-22 at 7f7589a06a)
+ am: fix error message in parse_opt_show_current_patch()
The parameters to generate an error message have been corrected.
Will merge to 'master'.
source: <[email protected]>
* js/ci-coverity (2023-09-25) 7 commits
- SQUASH???
- coverity: detect and report when the token or project is incorrect
- coverity: allow running on macOS
- coverity: support building on Windows
- coverity: allow overriding the Coverity project
- coverity: cache the Coverity Build Tool
- ci: add a GitHub workflow to submit Coverity scans
GitHub CI workflow has learned to trigger Coverity check.
Looking good.
source: <[email protected]>
* js/doc-status-with-submodules-mark-up-fix (2023-09-22) 1 commit (merged to 'next' on 2023-09-25 at 7ed318fc91)
+ Documentation/git-status: add missing line breaks
Docfix.
Will merge to 'master'.
source: <[email protected]>
* 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.
source: <[email protected]>
* ml/git-gui-exec-path-fix (2023-09-18) 3 commits
(merged to 'next' on 2023-09-19 at 0565b0b14b)
+ Merge git-gui into ml/git-gui-exec-path-fix
+ git-gui - use git-hook, honor core.hooksPath
+ git-gui - re-enable use of hook scripts
Fix recent regression in Git-GUI that fails to run hook scripts at all.
Will merge to 'master'.
* ds/stat-name-width-configuration (2023-09-18) 1 commit (merged to 'next' on 2023-09-22 at dbf5bd96e8)
+ diff --stat: add config option to limit filename width
"git diff" learned diff.statNameWidth configuration variable, to give the default width for the name part in the "--stat" output.
Will merge to 'master'.
source: <87badb12f040d1c66cd9b89074d3de5015a45983.1694446743.git.dsimic@manjaro.org>
* jk/fsmonitor-unused-parameter (2023-09-18) 8 commits (merged to 'next' on 2023-09-19 at bd06505f9e)
+ run-command: mark unused parameters in start_bg_wait callbacks
+ fsmonitor: mark unused hashmap callback parameters
+ fsmonitor/darwin: mark unused parameters in system callback
+ fsmonitor: mark unused parameters in stub functions
+ fsmonitor/win32: mark unused parameter in fsm_os__incompatible()
+ fsmonitor: mark some maybe-unused parameters
+ fsmonitor/win32: drop unused parameters
+ fsmonitor: prefer repo_git_path() to git_pathdup()
Unused parameters in fsmonitor related code paths have been marked as such.
Will merge to 'master'.
source: <[email protected]>
* 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 protected]>
* kn/rev-list-ignore-missing-links (2023-09-20) 1 commit
- revision: add --ignore-missing-links user option
Surface the .ignore_missing_links bit that stops the revision traversal from stopping and dying when encountering a missing object to a new command line option of "git rev-list", so that the objects that are required but are missing can be enumerated.
Waiting for review response.
source: <[email protected]>
* kh/range-diff-notes (2023-09-19) 1 commit
(merged to 'next' on 2023-09-22 at ac04978b4b)
+ range-diff: treat notes like log
"git range-diff --notes=foo" compared "log --notes=foo --notes" of the two ranges, instead of using just the specified notes tree.
Will merge to 'master'.
source: <6e114271a2e7d2323193bd58bb307f60101942ce.1695154855.git.code@khaugsbakk.name>
* 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.
Comments?
source: <[email protected]>
* so/diff-merges-d (2023-09-11) 2 commits
- diff-merges: introduce '-d' option
- diff-merges: improve --diff-merges documentation
Teach a new "-d" option that shows the patch against the first parent for merge commits (which is "--diff-merges=first-parent -p").
Letting a less useful combination of options squat on short-and-sweet "-d" feels dubious.
source: <[email protected]>
* cc/repack-sift-filtered-objects-to-separate-pack (2023-09-25) 10 commits
- SQUASH??? t0080 is already taken
- 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
- pack-bitmap-write: rebuild using new bitmap when remapping
- 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.
Looking better.
source: <[email protected]>
* 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 protected]>
source: <[email protected]>
* cw/git-std-lib (2023-09-11) 7 commits
- SQUASH???
- git-std-lib: add test file to call git-std-lib.a functions
- git-std-lib: introduce git standard library
- parse: create new library for parsing strings and env values
- config: correct bad boolean env value error message
- wrapper: remove dependency to Git-specific internal file
- hex-ll: split out functionality from hex
Another libification effort.
Needs more work.
cf. <[email protected]>
cf. <[email protected]>
source: <[email protected]>
* cc/git-replay (2023-09-07) 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
Waiting for review response.
cf. <[email protected]>
cf. <[email protected]>
cf. <[email protected]>
May want to wait until tb/repack-existing-packs-cleanup stabilizes.
source: <[email protected]>
* la/trailer-test-and-doc-updates (2023-09-07) 13 commits
- trailer doc: <token> is a <key> or <keyAlias>, not both
- trailer doc: separator within key suppresses default separator
- trailer doc: emphasize the effect of configuration variables
- trailer --unfold help: prefer "reformat" over "join"
- trailer --parse docs: add explanation for its usefulness
- trailer --only-input: prefer "configuration variables" over "rules"
- trailer --parse help: expose aliased options
- trailer --no-divider help: describe usual "---" meaning
- trailer: trailer location is a place, not an action
- trailer doc: narrow down scope of --where and related flags
- trailer: add tests to check defaulting behavior with --no-* flags
- trailer test description: this tests --where=after, not --where=before
- trailer tests: make test cases self-contained
Test coverage for trailers has been improved.
source: <[email protected]>
* js/doc-unit-tests (2023-08-17) 3 commits
- 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.
Waiting for review response.
cf. <[email protected]>
source: <[email protected]>
* js/doc-unit-tests-with-cmake (2023-09-25) 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.
Waiting for the base topic to settle.
source: <[email protected]>
* tb/path-filter-fix (2023-08-30) 15 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
- t/t4216-log-bloom.sh: harden test_bloom_filters_not_used()
- 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
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.
Still being discussed.
cf. <[email protected]>
cf. <[email protected]> cf. <[email protected]>
source: <[email protected]>
* 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 (this branch uses jc/unresolve-removal.)
Code clean-up.
Not ready to be reviewed yet.
source: <[email protected]>
* jc/unresolve-removal (2023-07-31) 7 commits
(merged to 'next' on 2023-09-25 at 0563c8d8a1)
+ checkout: allow "checkout -m path" to unmerge removed paths
+ checkout/restore: add basic tests for --merge
+ checkout/restore: refuse unmerging paths unless checking out of the index
+ update-index: remove stale fallback code for "--unresolve"
+ update-index: use unmerge_index_entry() to support removal
+ resolve-undo: allow resurrecting conflicted state that resolved to deletion
+ update-index: do not read HEAD and MERGE_HEAD unconditionally (this branch is used by jc/rerere-cleanup.)
"checkout --merge -- path" and "update-index --unresolve path" did not resurrect conflicted state that was resolved to remove path, but now they do.
Will merge to 'master'.
source: <[email protected]>
* rj/status-bisect-while-rebase (2023-08-01) 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.
cf. <[email protected]>
source: <[email protected]>
--------------------------------------------------
[Discarded]
* tb/ci-coverity (2023-09-21) 1 commit
. .github/workflows: add coverity action
GitHub CI workflow has learned to trigger Coverity check.
Superseded by the js/ci-coverity topic.
source: <b23951c569660e1891a7fb3ad2c2ea1952897bd7.1695332105.git.me@ttaylorr.com>
Quoted 10 lines · Junio C Hamano
* ks/ref-filter-mailmap (2023-09-25) 3 commits
- ref-filter: add mailmap support
- t/t6300: introducetest_bad_atom
- t/t6300: cleanuptest_atom"git for-each-ref" and friends learn to apply mailmap to authorname and other fields.
Will merge to 'next'.
source: <[email protected]>
Great!
Quoted 10 lines
* ps/revision-cmdline-stdin-not (2023-09-25) 1 commit
- revision: make pseudo-opt flags read via stdin behave consistently"git rev-list --stdin" learned to take non-revisions (like "--not") recently from the standard input, but the way such a "--not" was handled was quite confusing, which has been rethought. This is potentially a change that breaks backward compatibility.
Will merge to 'next'?
source: <6221acd2796853144f8e84081655fbc79fdc6634.1695646898.git.ps@pks.im>
The patch LGTM too.
Quoted 2 lines
* cc/repack-sift-filtered-objects-to-separate-pack (2023-09-25) 10 commits
- SQUASH??? t0080 is already taken
Yeah, it's taken by js/doc-unit-tests. I am Ok with using t0081 or something else if someone has a better suggestion. Not sure if I should resend a v8 or if you would be Ok with just squashing this yourself when merging.
Quoted 33 lines
- gc: add
gc.repackFilterToconfig option
- repack: implement--filter-tofor storing filtered out objects
- gc: addgc.repackFilterconfig option
- repack: add--filter=<filter-spec>option
- pack-bitmap-write: rebuild using new bitmap when remapping
- repack: refactor finding pack prefix
- repack: refactor finishing pack-objects command
- t/helper: add 'find-pack' test-tool
- pack-objects: allow--filterwithout--stdout"git repack" machinery learns to pay attention to the "--filter=" option.
Looking better.
source: <[email protected]>* cc/git-replay (2023-09-07) 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: introducepick_regular_commit()
- replay:die()instead of failingassert()
- replay: start usingparse_optionsAPI
- replay: introduce new builtin
- t6429: remove switching aspects of fast-rebase
Quoted 4 lines
Waiting for review response.
cf. <[email protected]> cf. <[email protected]> cf. <[email protected]>
As no one replied to Dscho and Derrick seems to not be working on Git anymore, I think I will just send a new version implementing Dscho's suggestions.
Quoted 2 lines
May want to wait until tb/repack-existing-packs-cleanup stabilizes.
source: <[email protected]>
Not sure I understand this. Did you mistake the "replay" series with the "repack --filter" series? In any case tb/repack-existing-packs-cleanup was merged to master.