What's cooking (2021/11 #05)

todo
Junio C Hamano 2021-11-19 21:48:16 -08:00
parent c96e9bd64c
commit 97045d8313
1 changed files with 203 additions and 126 deletions

View File

@ -1,10 +1,10 @@
To: git@vger.kernel.org
Bcc: lwn@lwn.net
Subject: What's cooking in git.git (Nov 2021, #04; Sun, 14)
Subject: What's cooking in git.git (Nov 2021, #05; Fri, 19)
X-master-at: cd3e606211bb1cf8bc57f7d76bab98cc17a150bc
X-next-at: ca35af825273b98fc8dc11527488952f5db8eb80
X-next-at: b44f4d0eb0c6319e109b5f54df97d96d0d6b46fd

What's cooking in git.git (Nov 2021, #04; Sun, 14)
What's cooking in git.git (Nov 2021, #05; Fri, 19)
--------------------------------------------------

Here are the topics that have been cooking in my tree. Commits
@ -18,19 +18,13 @@ useful"). Do not read too much into a topic being in (or not in)
'seen'. The ones marked with '.' do not appear in any of the
integration branches, but I am still holding onto them.

Git 2.34 (final) has been tagged with a few more regression fixes.
The tip of the 'master' branch is still at v2.34.0.

As we have been fairly aggressive to deliberately merge down many
topics that are under-reviewed, mostly due to reviewer fatigue and
limited reviewer bandwidth, it was expected that we'd see unexpected
breakages after things are in 'master', and it was quite nice to see
people found and squashed these problems fairly quickly.

Thank you all for finding, reporting and fixing them so quickly.
Before starting to queue new topics for the next cycle or merging
down topics in-flight, we'd wait about a week to see if people
encounter any more issues, and after that we'd restart the usual
cycle.
A few topics for regression fixes have been merged to 'next' and
will be merged to 'master' shortly. There are many topics listed as
"New" that are in 'seen', but I haven't read many of them (and I
shouldn't have anyway, before dealing with regression fixes) and
haven't gave any summary comments in this report, either, yet.

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
@ -61,72 +55,191 @@ Release tarballs are available at:
https://www.kernel.org/pub/software/scm/git/

--------------------------------------------------
[Graduated to 'master']
[New Topics]

* ab/fsck-unexpected-type (2021-11-11) 2 commits
(merged to 'next' on 2021-11-11 at f8c9666880)
+ object-file: free(*contents) only in read_loose_object() caller
+ object-file: fix SEGV on free() regression in v2.34.0-rc2
* ab/checkout-branch-info-leakfix (2021-11-18) 1 commit
- checkout: fix "branch info" memory leaks

Regression fix.
Leakfix.

Will merge to 'next'.


* ds/no-usable-cron-on-macos (2021-11-10) 1 commit
(merged to 'next' on 2021-11-10 at 18eb9c13bc)
+ maintenance: disable cron on macOS

"git maintenance run" learned to use system supplied scheduler
backend, but cron on macOS turns out to be unusable for this
purpose.
* ab/make-dependency (2021-11-18) 24 commits
- Makefile: move ".SUFFIXES" rule to shared.mak
- Makefile: define $(LIB_H) in terms of $(FIND_SOURCE_FILES)
- Makefile: disable GNU make built-in wildcard rules
- Makefile: use $(file) I/O instead of "FORCE" when possible
- Makefile: correct the dependency graph of hook-list.h
- Makefiles: add and use wildcard "mkdir -p" template
- Makefile: use $(wspfx) for $(QUIET...) in shared.mak
- Makefile: add "$(QUIET)" boilerplate to shared.mak
- Makefile: add a "TRACK_template" for GIT-*{FLAGS,DEFINES,...}
- Makefile: re-add and use the "shellquote" macros
- Makefile: move $(comma), $(empty) and $(space) to shared.mak
- Makefiles: add "shared.mak", move ".DELETE_ON_ERROR" to it
- Makefile: stop needing @@GIT_VERSION@@ in *.perl scripts
- Makefile: create a GIT-PYTHON-DEFINES, like "PERL"
- Makefile: correct "GIT-PERL-{DEFINES,HEADER}" dependency graph
- Makefile: adjust Perl-related comments & whitespace
- Makefile: change "ifndef NO_PERL" to "ifdef NO_PERL"
- Makefile: guard Perl-only variable assignments
- Makefile: remove "mv $@ $@+" dance redundant to .DELETE_ON_ERROR
- Makefile: clean perl/build/ even with NO_PERL=Y
- Makefile: use "=" not ":=" for po/* and perl/*
- Makefile: don't set up "perl/build" rules under NO_PERL=Y
- Makefile: don't invoke msgfmt with --statistics
- Merge branch 'ab/sh-retire-helper-functions' into ab/make-dependency
(this branch uses ab/sh-retire-helper-functions.)


* jc/fix-pull-ff-only-when-already-up-to-date (2021-10-29) 1 commit
(merged to 'next' on 2021-10-29 at ad4753e668)
+ pull: --ff-only should make it a noop when already-up-to-date
* ah/advice-pull-has-no-preference-between-rebase-and-merge (2021-11-19) 1 commit
- pull: don't say that merge is "the default strategy"

"git pull --ff-only" and "git pull --rebase --ff-only" should make
it a no-op to attempt pulling from a remote that is behind us, but
instead the command errored out by saying it was impossible to
fast-forward, which may technically be true, but not a useful thing
to diagnose as an error. This has been corrected.
The advice message given by "git pull" when the user hasn't made a
choice between merge and rebase still said that the merge is the
default, which no longer is the case. This has been corrected.

Will merge to 'next'.


* jk/ssh-signing-fix (2021-11-10) 1 commit
(merged to 'next' on 2021-11-10 at b6195caa04)
+ t/lib-gpg: avoid broken versions of ssh-keygen

Reject OpenSSH 8.7 whose "ssh-keygen -Y find-principals" is
unusable from running the ssh signature tests.
* ds/fetch-pull-with-sparse-index (2021-11-18) 3 commits
- ls-files: add --sparse option
- fetch/pull: use the sparse index
- Merge branch 'ld/sparse-diff-blame' into ds/fetch-pull-with-sparse-index
(this branch uses ld/sparse-diff-blame and vd/sparse-reset.)


* js/simple-ipc-cygwin-socket-fix (2021-11-10) 1 commit
(merged to 'next' on 2021-11-10 at 00788f076f)
+ simple-ipc: work around issues with Cygwin's Unix socket emulation
* ev/pull-already-up-to-date-is-noop (2021-11-18) 1 commit
(merged to 'next' on 2021-11-19 at 2d8f0cd000)
+ pull: should be noop when already-up-to-date

The way Cygwin emulates a unix-domain socket, on top of which the
simple-ipc mechanism is implemented, can race with the program on
the other side that wants to use the socket, and briefly make it
appear as a regular file before lstat(2) starts reporting it as a
socket. We now have a workaround on the side that connects to a
unix domain socket.
"git pull" with any strategy when the other side is behind us
should succeed as it is a no-op, but doesn't.

Will merge to 'master'.


* js/trace2-raise-format-version (2021-11-11) 1 commit
(merged to 'next' on 2021-11-11 at e7144ad963)
+ trace2: increment event format version

When we added a new event type to trace2 event stream, we forgot to
raise the format version number, which has been corrected.
* fs/ssh-signing-other-keytypes (2021-11-19) 2 commits
- ssh signing: make sign/amend test more resilient
- ssh signing: support non ssh-* keytypes


* ps/connectivity-optim (2021-11-11) 1 commit
(merged to 'next' on 2021-11-11 at 8b3dccbd68)
+ Revert "connected: do not sort input revisions"
* fs/test-prereq (2021-11-18) 2 commits
- test-lib: introduce required prereq for test runs
- test-lib: show missing prereq summary

Regression fix.

* jk/t5319-midx-corruption-test-deflake (2021-11-18) 1 commit
- t5319: corrupt more bytes of the midx checksum

Test fix.


* js/trace2-avoid-recursive-errors (2021-11-18) 1 commit
- trace2: disable tr2_dst before warning on write errors

trace2 error code path fix.


* pw/xdiff-classify-record-in-histogram (2021-11-18) 3 commits
- xdiff: simplify comparison
- xdiff: avoid unnecessary memory allocations
- diff histogram: intern strings

"diff --histogram" optimization.


* rs/mergesort (2021-11-18) 1 commit
- mergesort: avoid left shift overflow

Bitop fix for 32-bit boxes.


* xw/am-empty (2021-11-19) 3 commits
- SQUASH???
- am: support --empty=<option> to handle empty patches
- doc: git-format-patch: describe the option --always


* hk/ci-checkwhitespace-commentfix (2021-11-19) 1 commit
- ci(check-whitespace): update stale file top comments

Comment fix.


* hm/paint-hits-in-log-grep (2021-11-19) 1 commit
(merged to 'next' on 2021-11-19 at e146d25c7c)
+ Revert "grep/pcre2: fix an edge case concerning ascii patterns and UTF-8 data"

"git grep" looking in a blob that has non-UTF8 payload was
completely broken when linked with certain versions of PCREv2
library in the latest release.

Will merge to 'master'.


* jk/fetch-pack-avoid-sigpipe-to-index-pack (2021-11-19) 1 commit
- fetch-pack: ignore SIGPIPE when writing to index-pack

"git fetch", when received a bad packfile, can fail with SIGPIPE.
This wasn't wrong per-se, but we now detect the situation and fail
in a more predictable way.

Will merge to 'next'.


* jk/refs-g11-workaround (2021-11-19) 1 commit
- refs: work around gcc-11 warning with REF_HAVE_NEW

Workaround for a false-alarm by gcc-11

Will merge to 'next'.

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

* ar/submodule-update (2021-10-13) 9 commits
. submodule--helper: rename helper functions
. submodule--helper: remove unused helpers
. submodule: move core cmd_update() logic to C
. submodule--helper: run update using child process struct
. submodule--helper: allow setting superprefix for init_submodule()
. submodule--helper: refactor get_submodule_displaypath()
. submodule--helper: rename helpers for update-clone
. submodule--helper: get remote names from any repository
. submodule--helper: split up ensure_core_worktree()

Rewrite of "git submodule update" in C.

Kicked out of 'seen' to make room for es/superproject-aware-submodules
which is among the topics this topic stomps on.


* cf/fetch-set-upstream-while-detached (2021-07-06) 1 commit
- fetch: fix segfault on --set-upstream while on a detached HEAD

"git fetch --set-upstream" while on detached HEAD segfaulted
instead of noticing that such an operation did not make sense.

Getting tired of waiting for a reroll; will discard.

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

* mp/absorb-submodule-git-dir-upon-deinit (2021-11-19) 1 commit
- submodule: absorb git dir instead of dying on deinit

"git submodule deinit" for a submodule whose .git metadata
directory is embedded in its working tree refused to work, until
the submodule gets converted to use the "absorbed" form where the
metadata directory is stored in superproject, and a gitfile at the
top-level of the working tree of the submodule points at it. The
command is taught to convert such submodules to the absorbed form
as needed.

Will merge to 'next'?


* rj/receive-pack-avoid-sigpipe-during-status-reporting (2021-11-10) 1 commit
- receive-pack: ignore SIGPIPE while reporting status to client
@ -163,86 +276,45 @@ Release tarballs are available at:


* ab/update-submitting-patches (2021-11-13) 1 commit
- SubmittingPatches: fix Asciidoc syntax in "GitHub CI" section
(merged to 'next' on 2021-11-19 at b44f4d0eb0)
+ SubmittingPatches: fix Asciidoc syntax in "GitHub CI" section

Doc fix.

Will merge to 'next'.
Will merge to 'master'.


* bc/require-c99 (2021-11-14) 1 commit
* bc/require-c99 (2021-11-18) 1 commit
- git-compat-util: add a test balloon for C99 support

Weather balloon to break people with compilers that do not support
C99.


* jc/c99-var-decl-in-for-loop (2021-11-14) 1 commit
* jc/c99-var-decl-in-for-loop (2021-11-16) 1 commit
- revision: use C99 declaration of variable in for() loop

Weather balloon to break comiplers that do not grok variable
declaration in the for() loop.



* tl/midx-docfix (2021-11-14) 1 commit
* tl/midx-docfix (2021-11-18) 1 commit
- midx: fix a formatting issue in "multi-pack-index.txt"

Doc mark-up fix.

Will merge to 'next'.

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

* ar/submodule-update (2021-10-13) 9 commits
. submodule--helper: rename helper functions
. submodule--helper: remove unused helpers
. submodule: move core cmd_update() logic to C
. submodule--helper: run update using child process struct
. submodule--helper: allow setting superprefix for init_submodule()
. submodule--helper: refactor get_submodule_displaypath()
. submodule--helper: rename helpers for update-clone
. submodule--helper: get remote names from any repository
. submodule--helper: split up ensure_core_worktree()

Rewrite of "git submodule update" in C.

Kicked out of 'seen' to make room for es/superproject-aware-submodules
which is among the topics this topic stomps on.


* mp/absorb-submodule-git-dir-upon-deinit (2021-10-07) 1 commit
- submodule: absorb git dir instead of dying on deinit

"git submodule deinit" for a submodule whose .git metadata
directory is embedded in its working tree refused to work, until
the submodule gets converted to use the "absorbed" form where the
metadata directory is stored in superproject, and a gitfile at the
top-level of the working tree of the submodule points at it. The
command is taught to convert such submodules to the absorbed form
as needed.

Getting tired of waiting for a reroll; will discard.
cf. <xmqqwnmopqqk.fsf@gitster.g>


* cf/fetch-set-upstream-while-detached (2021-07-06) 1 commit
- fetch: fix segfault on --set-upstream while on a detached HEAD

"git fetch --set-upstream" while on detached HEAD segfaulted
instead of noticing that such an operation did not make sense.

Getting tired of waiting for a reroll; will discard.

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

* ak/fetch-not-overwrite-any-current-branch (2021-11-09) 4 commits
* ak/protect-any-current-branch (2021-11-15) 8 commits
- branch: protect branches checked out in all worktrees
- receive-pack: protect current branch for bare repository worktree
- receive-pack: clean dead code from update_worktree()
- fetch: protect branches checked out in all worktrees
- worktree: simplify find_shared_symref() memory ownership model
- branch: lowercase error messages
- receive-pack: lowercase error messages
- fetch: lowercase error messages

"git fetch" without the "--update-head-ok" option ought to protect
a checked out branch from getting updated, to prevent the working
@ -250,6 +322,9 @@ Release tarballs are available at:
before the use of "git worktree" got widespread, and only checked
the branch that was checked out in the current worktree, which has
been updated.
(originally called ak/fetch-not-overwrite-any-current-branch)

Will merge to 'next'?


* jk/test-bitmap-fix (2021-11-05) 1 commit
@ -441,6 +516,7 @@ Release tarballs are available at:
+ Makefile: remove $(NO_CURL) from $(SCRIPT_DEFINES)
+ Makefile: remove $(GIT_VERSION) from $(SCRIPT_DEFINES)
+ Makefile: move git-SCRIPT-DEFINES adjacent to $(SCRIPT_DEFINES)
(this branch is used by ab/make-dependency.)

Make a few helper functions unused and then lose them.

@ -487,13 +563,15 @@ Release tarballs are available at:
Will merge to 'next'?


* fs/ssh-signing-key-lifetime (2021-10-27) 8 commits
* fs/ssh-signing-key-lifetime (2021-11-18) 10 commits
- ssh signing: verify ssh-keygen in test prereq
- ssh signing: make fmt-merge-msg consider key lifetime
- ssh signing: make verify-tag consider key lifetime
- ssh signing: make git log verify key lifetime
- ssh signing: make verify-commit consider key lifetime
- ssh signing: add key lifetime test prereqs
- ssh signing: use sigc struct to pass payload
- Merge branch 'ad/ssh-signing-testfix' into fs/ssh-signing-key-lifetime
- Merge branch 'fs/ssh-signing-fix' into fs/ssh-signing-key-lifetime
- Merge branch 'fs/ssh-signing' into fs/ssh-signing-key-lifetime

@ -511,8 +589,7 @@ Release tarballs are available at:
on, and hint/nudge contributors to read others' changes.


* gc/remote-with-fewer-static-global-variables (2021-10-28) 6 commits
- remote: add struct repository parameter to external functions
* gc/remote-with-fewer-static-global-variables (2021-11-18) 5 commits
- remote: die if branch is not found in repository
- remote: remove the_repository->remote_state from static methods
- remote: use remote_state parameter internally
@ -605,16 +682,13 @@ Release tarballs are available at:
Will cook in 'next'.


* js/branch-track-inherit (2021-10-18) 1 commit
* js/branch-track-inherit (2021-11-18) 1 commit
- branch: add flags and config to inherit tracking

"git -c branch.autosetupmerge=inherit branch new old" makes "new"
to have the same upstream as the "old" branch, instead of marking
"old" itself as its upstream.

Under discussion.
cf. <87a6j6tbsv.fsf@gmgdl.gmail.com>


* jh/builtin-fsmonitor-part2 (2021-10-21) 29 commits
- t7527: test status with untracked-cache and fsmonitor--daemon
@ -654,7 +728,7 @@ Release tarballs are available at:
- blame: enable and test the sparse index
- diff: enable and test the sparse index
- Merge branch 'vd/sparse-reset' into ld/sparse-diff-blame
(this branch uses vd/sparse-reset.)
(this branch is used by ds/fetch-pull-with-sparse-index; uses vd/sparse-reset.)

Teach diff and blame to work well with sparse index.

@ -709,7 +783,7 @@ Release tarballs are available at:
- sparse-index: update command for expand/collapse test
- reset: preserve skip-worktree bit in mixed reset
- reset: rename is_missing to !is_in_reset_tree
(this branch is used by ld/sparse-diff-blame.)
(this branch is used by ds/fetch-pull-with-sparse-index and ld/sparse-diff-blame.)

Various operating modes of "git reset" have been made to work
better with the sparse index.
@ -739,7 +813,8 @@ Release tarballs are available at:
protect the fixes.


* es/superproject-aware-submodules (2021-11-04) 4 commits
* es/superproject-aware-submodules (2021-11-18) 5 commits
- submodule: use config to find superproject worktree
- submodule: record superproject gitdir during 'update'
- submodule: record superproject gitdir during absorbgitdirs
- introduce submodule.superprojectGitDir record
@ -790,8 +865,7 @@ Release tarballs are available at:
What's the status of this thing?


* js/scalar (2021-10-27) 15 commits
- scalar: accept -C and -c options before the subcommand
* js/scalar (2021-11-19) 17 commits
- scalar: implement the `version` command
- scalar: implement the `delete` command
- scalar: teach 'reconfigure' to optionally handle all registered enlistments
@ -803,9 +877,12 @@ Release tarballs are available at:
- scalar: let 'unregister' handle a deleted enlistment directory gracefully
- scalar: 'unregister' stops background maintenance
- scalar: 'register' sets recommended config and starts maintenance
- ci: also run the `scalar` tests
- cmake: optionally build `scalar`, too
- scalar: create test infrastructure
- scalar: start documenting the command
- scalar: create a rudimentary executable
- scalar: add a README with a roadmap

Add pieces from "scalar" to contrib/.