1 To: git@vger.kernel.org
2 Subject: What's cooking in git.git (Sep 2024, #07; Wed, 18)
3 X-master-at: 6531f31ef3bead57a3255fa08efa6e7553c5a9a7
4 X-next-at: cf0dbffa2232233e2e6152dc28148e12ec9aa900
5 Bcc: lwn@lwn.net, gitster@pobox.com
7 What's cooking in git.git (Sep 2024, #07; Wed, 18)
8 --------------------------------------------------
10 Here are the topics that have been cooking in my tree. Commits
11 prefixed with '+' are in 'next' (being in 'next' is a sign that a
12 topic is stable enough to be used and are candidate to be in a
13 future release). Commits prefixed with '-' are only in 'seen', and
14 aren't considered "accepted" at all and may be annotated with an URL
15 to a message that raises issues but they are no means exhaustive. A
16 topic without enough support may be discarded after a long period of
17 no activity (of course they can be resubmit when new interests
20 Copies of the source code to Git live in many repositories, and the
21 following is a list of the ones I push into or their mirrors. Some
22 repositories have only a subset of branches.
24 With maint, master, next, seen, todo:
26 git://git.kernel.org/pub/scm/git/git.git/
27 git://repo.or.cz/alt-git.git/
28 https://kernel.googlesource.com/pub/scm/git/git/
29 https://github.com/git/git/
30 https://gitlab.com/git-scm/git/
32 With all the integration branches and topics broken out:
34 https://github.com/gitster/git/
36 Even though the preformatted documentation in HTML and man format
37 are not sources, they are published in these repositories for
38 convenience (replace "htmldocs" with "manpages" for the manual
41 git://git.kernel.org/pub/scm/git/git-htmldocs.git/
42 https://github.com/gitster/git-htmldocs.git/
44 Release tarballs are available at:
46 https://www.kernel.org/pub/software/scm/git/
48 --------------------------------------------------
51 * jc/cmake-unit-test-updates (2024-09-18) 4 commits
52 - cmake: generalize the handling of the `UNIT_TEST_OBJS` list
53 - cmake: stop looking for `REFTABLE_TEST_OBJS` in the Makefile
54 - cmake: rename clar-related variables to avoid confusion
55 - Merge branch 'ps/reftable-exclude' into jc/cmake-unit-test-updates
56 (this branch uses ps/reftable-exclude.)
58 CMake adjustments for recent changes around unit tests.
61 source: <pull.1797.git.1726687769585.gitgitgadget@gmail.com>
63 --------------------------------------------------
64 [Graduated to 'master']
66 * es/chainlint-message-updates (2024-09-10) 3 commits
67 (merged to 'next' on 2024-09-11 at a3fd02a009)
68 + chainlint: reduce annotation noise-factor
69 + chainlint: make error messages self-explanatory
70 + chainlint: don't be fooled by "?!...?!" in test body
72 The error messages from the test script checker have been improved.
73 source: <20240910041013.68948-1-ericsunshine@charter.net>
76 * jc/ci-upload-artifact-and-linux32 (2024-09-09) 1 commit
77 (merged to 'next' on 2024-09-11 at 62991bef5b)
78 + ci: remove 'Upload failed tests' directories' step from linux32 jobs
79 (this branch is used by jk/ci-linux32-update.)
81 CI started failing completely for linux32 jobs, as the step to
82 upload failed test directory uses GitHub actions that is deprecated
83 and is now disabled. Remove the step so at least we will know if
84 the tests are passing.
85 source: <xmqqy140o2kb.fsf@gitster.g>
88 * jk/ci-linux32-update (2024-09-13) 5 commits
89 (merged to 'next' on 2024-09-13 at e937339388)
90 + ci: add Ubuntu 16.04 job to GitLab CI
91 + ci: use regular action versions for linux32 job
92 + ci: use more recent linux32 image
93 + ci: unify ubuntu and ubuntu32 dependencies
94 + ci: drop run-docker scripts
95 (this branch uses jc/ci-upload-artifact-and-linux32.)
98 source: <20240912094238.GA589050@coredump.intra.peff.net>
101 * ps/clar-unit-test (2024-09-10) 15 commits
102 (merged to 'next' on 2024-09-11 at ccc0289490)
103 + Makefile: rename clar-related variables to avoid confusion
104 (merged to 'next' on 2024-09-05 at 87fb0a399a)
105 + clar: add CMake support
106 + t/unit-tests: convert ctype tests to use clar
107 + t/unit-tests: convert strvec tests to use clar
108 + t/unit-tests: implement test driver
109 + Makefile: wire up the clar unit testing framework
110 + Makefile: do not use sparse on third-party sources
111 + Makefile: make hdr-check depend on generated headers
112 + Makefile: fix sparse dependency on GENERATED_H
113 + clar: stop including `shellapi.h` unnecessarily
114 + clar(win32): avoid compile error due to unused `fs_copy()`
115 + clar: avoid compile error with mingw-w64
116 + t/clar: fix compatibility with NonStop
117 + t: import the clar unit testing framework
118 + t: do not pass GIT_TEST_OPTS to unit tests with prove
120 Import clar unit tests framework libgit2 folks invented for our
122 cf. <d5b1c95b-cbdc-4711-849e-c2cfc67787ee@gmail.com>
123 source: <cover.1725459142.git.ps@pks.im>
125 --------------------------------------------------
128 * jk/diag-unexpected-remote-helper-death (2024-09-14) 1 commit
129 (merged to 'next' on 2024-09-16 at f2aa29beac)
130 + print an error when remote helpers die during capabilities
132 When a remote-helper dies before Git writes to it, SIGPIPE killed
133 Git silently. We now explain the situation a bit better to the end
134 user in our error message.
136 Will merge to 'master'.
137 source: <20240914064130.GA1284567@coredump.intra.peff.net>
140 * ak/typofixes (2024-09-16) 3 commits
141 (merged to 'next' on 2024-09-16 at 4bbdd5ce45)
148 Will merge to 'master'.
149 source: <20240915230522.129253-1-algonell@gmail.com>
152 * jk/jump-quickfix-fixes (2024-09-16) 2 commits
153 (merged to 'next' on 2024-09-16 at 53aa9e5b22)
154 + git-jump: ignore deleted files in diff mode
155 + git-jump: always specify column 1 for diff entries
157 A few usability fixes to "git jump" (in contrib/).
159 Will merge to 'master'.
160 source: <20240915111119.GA2017770@coredump.intra.peff.net>
163 * jk/t9001-deflake (2024-09-16) 1 commit
164 (merged to 'next' on 2024-09-16 at 285ebc4223)
165 + t9001: use a more distinct fake BugID
169 Will merge to 'master'.
170 source: <20240915113115.GA2019070@coredump.intra.peff.net>
173 * ps/apply-leakfix (2024-09-17) 6 commits
174 (merged to 'next' on 2024-09-18 at 99e318345e)
175 + apply: refactor `struct image` to use a `struct strbuf`
176 + apply: rename members that track line count and allocation length
177 + apply: refactor code to drop `line_allocated`
178 + apply: introduce macro and function to init images
179 + apply: rename functions operating on `struct image`
180 + apply: reorder functions to move image-related things together
182 "git apply" had custom buffer management code that predated before
183 use of strbuf got widespread, which has been updated to use strbuf,
184 which also plugged some memory leaks.
186 Will merge to 'master'.
187 source: <cover.1726567217.git.ps@pks.im>
190 * ps/leakfixes-part-7 (2024-09-16) 24 commits
191 - diffcore-break: fix leaking filespecs when merging broken pairs
192 - revision: fix leaking parents when simplifying commits
193 - builtin/maintenance: fix leak in `get_schedule_cmd()`
194 - builtin/maintenance: fix leaking config string
195 - promisor-remote: fix leaking partial clone filter
196 - grep: fix leaking grep pattern
197 - submodule: fix leaking submodule ODB paths
198 - trace2: destroy context stored in thread-local storage
199 - builtin/difftool: plug several trivial memory leaks
200 - builtin/repack: fix leaking configuration
201 - diffcore-order: fix leaking buffer when parsing orderfiles
202 - parse-options: free previous value of `OPTION_FILENAME`
203 - diff: fix leaking orderfile option
204 - builtin/pull: fix leaking "ff" option
205 - dir: fix off by one errors for ignored and untracked entries
206 - builtin/submodule--helper: fix leaking remote ref on errors
207 - t/helper: fix leaking subrepo in nested submodule config helper
208 - builtin/submodule--helper: fix leaking error buffer
209 - builtin/submodule--helper: clear child process when not running it
210 - submodule: fix leaking update strategy
211 - git: fix leaking argv when handling builtins
212 - builtin/help: fix leaking `html_path` when reading config multiple times
213 - builtin/help: fix dangling reference to `html_path`
214 - Merge branch 'ps/leakfixes-part-6' into ps/leakfixes-part-7
215 (this branch uses ps/leakfixes-part-6.)
220 source: <cover.1726484308.git.ps@pks.im>
223 * ps/reftable-alloc-failures (2024-09-16) 24 commits
224 - reftable: handle trivial allocation failures
225 - reftable/tree: handle allocation failures
226 - reftable/pq: handle allocation failures when adding entries
227 - reftable/block: handle allocation failures
228 - reftable/blocksource: handle allocation failures
229 - reftable/iter: handle allocation failures when creating indexed table iter
230 - reftable/stack: handle allocation failures in auto compaction
231 - reftable/stack: handle allocation failures in `stack_compact_range()`
232 - reftable/stack: handle allocation failures in `reftable_new_stack()`
233 - reftable/stack: handle allocation failures on reload
234 - reftable/reader: handle allocation failures in `reader_init_iter()`
235 - reftable/reader: handle allocation failures for unindexed reader
236 - reftable/merged: handle allocation failures in `merged_table_init_iter()`
237 - reftable/writer: handle allocation failures in `reftable_new_writer()`
238 - reftable/writer: handle allocation failures in `writer_index_hash()`
239 - reftable/record: handle allocation failures when decoding records
240 - reftable/record: handle allocation failures on copy
241 - reftable/basics: handle allocation failures in `parse_names()`
242 - reftable/basics: handle allocation failures in `reftable_calloc()`
243 - reftable: introduce `reftable_strdup()`
244 - reftable/basics: merge "publicbasics" into "basics"
245 - reftable/error: introduce out-of-memory error code
246 - Merge branch 'ps/reftable-exclude' into ps/reftable-alloc-failures
247 - Merge branch 'cp/unit-test-reftable-stack' into ps/reftable-alloc-failures
248 (this branch uses ps/reftable-exclude.)
250 The reftable library is now prepared to expect that the memory
251 allocation function given to it may fail to allocate and to deal
255 source: <cover.1726489647.git.ps@pks.im>
258 * bb/unicode-width-table-16 (2024-09-12) 1 commit
259 (merged to 'next' on 2024-09-13 at 87dc391469)
260 + unicode: update the width tables to Unicode 16
262 Update the character width table for Unicode 16.
264 Will merge to 'master'.
265 source: <20240912204047.1020213-1-dev+git@drbeat.li>
268 * jc/strbuf-commented-something (2024-09-12) 2 commits
269 - strbuf: retire strbuf_commented_lines()
270 - strbuf: retire strbuf_commented_addf()
272 Update two functions whose callers always pass the same global
273 variable to omit the redundant parameter and use the global in the
277 source: <20240912205301.1809355-1-gitster@pobox.com>
280 * jk/git-pm-bare-repo-fix (2024-09-13) 2 commits
281 (merged to 'next' on 2024-09-13 at 7f9bb8501c)
282 + Git.pm: use "rev-parse --absolute-git-dir" rather than perl code
283 + Git.pm: fix bare repository search with Directory option
285 In Git 2.39, Git.pm stopped working in a bare repository, which has
288 Will merge to 'master'.
289 source: <20240912223413.GA649897@coredump.intra.peff.net>
292 * jc/t5512-sigpipe-fix (2024-09-13) 1 commit
293 (merged to 'next' on 2024-09-16 at 96075b5dd1)
294 + t5512.40 sometimes dies by SIGPIPE
298 Will merge to 'master'.
299 source: <xmqqmskbwe1a.fsf@gitster.g>
302 * jk/interop-test-build-options (2024-09-12) 1 commit
303 (merged to 'next' on 2024-09-13 at 0ab66e77a1)
304 + t/interop: allow per-version make options
306 The support to customize build options to adjust for older versions
307 and/or older systems for the interop tests has been improved.
309 Will merge to 'master'.
310 source: <20240911061009.GA1538383@coredump.intra.peff.net>
313 * jk/no-openssl-with-openssl-sha1 (2024-09-12) 1 commit
314 (merged to 'next' on 2024-09-13 at 07f5e4856d)
315 + imap-send: handle NO_OPENSSL even when openssl exists
317 The "imap-send" now allows to be compiled with NO_OPENSSL and
318 OPENSSL_SHA1 defined together.
320 Will merge to 'master'.
321 source: <20240911061257.GA1538490@coredump.intra.peff.net>
324 * ma/test-libcurl-prereq (2024-09-11) 2 commits
325 (merged to 'next' on 2024-09-13 at 6d4ad6b054)
326 + t0211: add missing LIBCURL prereq
327 + t1517: add missing LIBCURL prereq
329 Test portability fix.
331 Will merge to 'master'.
332 source: <cover.1726049108.git.martin.agren@gmail.com>
335 * cc/promisor-remote-capability (2024-09-10) 4 commits
336 - promisor-remote: check advertised name or URL
337 - Add 'promisor-remote' capability to protocol v2
338 - strbuf: refactor strbuf_trim_trailing_ch()
339 - version: refactor strbuf_sanitize()
341 The v2 protocol learned to allow the server to advertise possible
342 promisor remotes, and the client to respond with what promissor
343 remotes it uses, so that the server side can omit objects that the
344 client can lazily obtain from these other promissor remotes.
347 source: <20240910163000.1985723-1-christian.couder@gmail.com>
350 * ds/pack-name-hash-tweak (2024-09-09) 4 commits
351 - p5313: add size comparison test
352 - p5314: add a size test for name-hash collisions
353 - git-repack: update usage to match docs
354 - pack-objects: add --full-name-hash option
356 In a repository with too many (more than --window size) similarly
357 named files, "git repack" would not find good delta-base candidate
358 and worse, it may not use a blob from exactly the same path as a
359 good delta-base candidate. Optionally replace the name hash so
360 that only blobs at the same path and nothing else are used as
361 delta-base candidate.
364 source: <pull.1785.git.1725890210.gitgitgadget@gmail.com>
367 * ps/reftable-exclude (2024-09-16) 7 commits
368 (merged to 'next' on 2024-09-18 at 1f00fce314)
369 + refs/reftable: wire up support for exclude patterns
370 + reftable/reader: make table iterator reseekable
371 + t/unit-tests: introduce reftable library
372 + Makefile: stop listing test library objects twice
373 + builtin/receive-pack: fix exclude patterns when announcing refs
374 + refs: properly apply exclude patterns to namespaced refs
375 + Merge branch 'cp/unit-test-reftable-stack' into ps/reftable-exclude
376 (this branch is used by jc/cmake-unit-test-updates and ps/reftable-alloc-failures.)
378 The reftable backend learned to more efficiently handle exclude
379 patterns while enumerating the refs.
381 Will merge to 'master'.
382 source: <cover.1726476401.git.ps@pks.im>
385 * pw/rebase-autostash-fix (2024-09-03) 1 commit
386 (merged to 'next' on 2024-09-13 at 6b41d66efd)
387 + rebase: apply and cleanup autostash when rebase fails to start
389 "git rebase --autostash" failed to resurrect the autostashed
390 changes when the command gets aborted after giving back control
391 asking for hlep in conflict resolution.
393 Will merge to 'master'.
394 source: <pull.1772.v2.git.1725289979450.gitgitgadget@gmail.com>
397 * jc/pass-repo-to-builtins (2024-09-13) 4 commits
398 (merged to 'next' on 2024-09-16 at 7711bb0214)
399 + add: pass in repo variable instead of global the_repository
400 + builtin: remove USE_THE_REPOSITORY for those without the_repository
401 + builtin: remove USE_THE_REPOSITORY_VARIABLE from builtin.h
402 + builtin: add a repository parameter for builtin functions
404 The convention to calling into built-in command implementation has
405 been updated to pass the repository, if known, together with the
408 Will merge to 'master'.
409 source: <pull.1778.v3.git.git.1726262177.gitgitgadget@gmail.com>
412 * tb/weak-sha1-for-tail-sum (2024-09-06) 9 commits
413 - csum-file.c: use fast SHA-1 implementation when available
414 - Makefile: allow specifying a SHA-1 for non-cryptographic uses
415 - hash.h: scaffolding for _fast hashing variants
416 - sha1: do not redefine `platform_SHA_CTX` and friends
417 - i5500-git-daemon.sh: use compile-able version of Git without OpenSSL
418 - pack-objects: use finalize_object_file() to rename pack/idx/etc
419 - finalize_object_file(): implement collision check
420 - finalize_object_file(): refactor unlink_or_warn() placement
421 - finalize_object_file(): check for name collision before renaming
423 The checksum at the tail of files are now computed without
424 collision detection protection.
427 cf. <ZugMUv1xbnjYH-el@pks.im>
428 source: <cover.1725651952.git.me@ttaylorr.com>
431 * ps/environ-wo-the-repository (2024-09-12) 21 commits
432 (merged to 'next' on 2024-09-16 at c08e3eb6b8)
433 + environment: stop storing "core.notesRef" globally
434 + environment: stop storing "core.warnAmbiguousRefs" globally
435 + environment: stop storing "core.preferSymlinkRefs" globally
436 + environment: stop storing "core.logAllRefUpdates" globally
437 + refs: stop modifying global `log_all_ref_updates` variable
438 + branch: stop modifying `log_all_ref_updates` variable
439 + repo-settings: track defaults close to `struct repo_settings`
440 + repo-settings: split out declarations into a standalone header
441 + environment: guard state depending on a repository
442 + environment: reorder header to split out `the_repository`-free section
443 + environment: move `set_git_dir()` and related into setup layer
444 + environment: make `get_git_namespace()` self-contained
445 + environment: move object database functions into object layer
446 + config: make dependency on repo in `read_early_config()` explicit
447 + config: document `read_early_config()` and `read_very_early_config()`
448 + environment: make `get_git_work_tree()` accept a repository
449 + environment: make `get_graft_file()` accept a repository
450 + environment: make `get_index_file()` accept a repository
451 + environment: make `get_object_directory()` accept a repository
452 + environment: make `get_git_common_dir()` accept a repository
453 + environment: make `get_git_dir()` accept a repository
457 Will merge to 'master'.
458 source: <cover.1726139990.git.ps@pks.im>
461 * gt/unit-test-oidset (2024-08-25) 1 commit
462 - unit-tests: add tests for oidset.h
467 source: <20240824172028.39419-1-shyamthakkar001@gmail.com>
470 * ps/leakfixes-part-6 (2024-09-05) 22 commits
471 (merged to 'next' on 2024-09-13 at 9be3125b10)
472 + builtin/repack: fix leaking keep-pack list
473 + merge-ort: fix two leaks when handling directory rename modifications
474 + match-trees: fix leaking prefixes in `shift_tree()`
475 + builtin/fmt-merge-msg: fix leaking buffers
476 + builtin/grep: fix leaking object context
477 + builtin/pack-objects: plug leaking list of keep-packs
478 + builtin/repack: fix leaking line buffer when packing promisors
479 + negotiator/skipping: fix leaking commit entries
480 + shallow: fix leaking members of `struct shallow_info`
481 + shallow: free grafts when unregistering them
482 + object: clear grafts when clearing parsed object pool
483 + gpg-interface: fix misdesigned signing key interfaces
484 + send-pack: fix leaking push cert nonce
485 + remote: fix leak in reachability check of a remote-tracking ref
486 + remote: fix leaking tracking refs
487 + builtin/submodule--helper: fix leaking refs on push-check
488 + submodule: fix leaking fetch task data
489 + upload-pack: fix leaking child process data on reachability checks
490 + builtin/push: fix leaking refspec query result
491 + send-pack: fix leaking common object IDs
492 + fetch-pack: fix memory leaks on fetch negotiation
493 + t/test-lib: allow skipping leak checks for passing tests
494 (this branch is used by ps/leakfixes-part-7.)
498 Will merge to 'master'.
499 source: <cover.1725530720.git.ps@pks.im>
502 * sj/ref-contents-check (2024-09-18) 5 commits
503 - ref: add symlink ref content check for files backend
504 - ref: add symref content check for files backend
505 - ref: add more strict checks for regular refs
506 - ref: port git-fsck(1) regular refs check for files backend
507 - ref: initialize "fsck_ref_report" with zero
509 "git fsck" learned to issue warnings on "curiously formatted" ref
510 contents that have always been taken valid but something Git
511 wouldn't have written itself (e.g., missing terminating end-of-line
512 after the full object name).
515 source: <ZuRzCyjQFilGhj8j@ArchLinux>
518 * tb/incremental-midx-part-2 (2024-08-28) 16 commits
519 - fixup! midx: implement writing incremental MIDX bitmaps
520 - midx: implement writing incremental MIDX bitmaps
521 - pack-bitmap.c: use `ewah_or_iterator` for type bitmap iterators
522 - pack-bitmap.c: keep track of each layer's type bitmaps
523 - ewah: implement `struct ewah_or_iterator`
524 - pack-bitmap.c: apply pseudo-merge commits with incremental MIDXs
525 - pack-bitmap.c: compute disk-usage with incremental MIDXs
526 - pack-bitmap.c: teach `rev-list --test-bitmap` about incremental MIDXs
527 - pack-bitmap.c: support bitmap pack-reuse with incremental MIDXs
528 - pack-bitmap.c: teach `show_objects_for_type()` about incremental MIDXs
529 - pack-bitmap.c: teach `bitmap_for_commit()` about incremental MIDXs
530 - pack-bitmap.c: open and store incremental bitmap layers
531 - pack-revindex: prepare for incremental MIDX bitmaps
532 - Documentation: describe incremental MIDX bitmaps
533 - Merge branch 'tb/pseudo-merge-bitmap-fixes' into tb/incremental-midx-part-2
534 - Merge branch 'tb/incremental-midx-part-1' into tb/incremental-midx-part-2
536 Incremental updates of multi-pack index files.
539 source: <cover.1723760847.git.me@ttaylorr.com>
542 * js/libgit-rust (2024-09-09) 7 commits
544 . Makefile: add option to build and test libgit-rs and libgit-rs-sys
545 . libgit: add higher-level libgit crate
546 . config: add git_configset_alloc() and git_configset_clear_and_free()
547 . libgit-sys: add repo initialization and config access
548 . libgit-sys: introduce Rust wrapper for libgit.a
549 . common-main: split init and exit code into new files
551 An rust binding to libgit.a functions has been introduced.
554 cf. <xmqqv7z8tjd7.fsf@gitster.g>
555 source: <20240906221853.257984-1-calvinwan@google.com>
558 * jc/too-many-arguments (2024-08-06) 4 commits
559 - miscellaneous: avoid "too many arguments"
560 - notes: avoid "too many arguments"
561 - cat-file: avoid "too many arguments"
562 - refs: avoid "too many arguments"
564 Error message clarification.
567 source: <20240806003539.3292562-1-gitster@pobox.com>
570 * ja/doc-synopsis-markup (2024-09-05) 3 commits
571 (merged to 'next' on 2024-09-16 at d471154a0b)
572 + doc: apply synopsis simplification on git-clone and git-init
573 + doc: update the guidelines to reflect the current formatting rules
574 + doc: introduce a synopsis typesetting
576 The way AsciiDoc is used for SYNOPSIS part of the manual pages has
577 been revamped. The sources, at least for the simple cases, got
578 vastly pleasant to work with.
580 Will merge to 'master'.
581 source: <pull.1766.v4.git.1725573126.gitgitgadget@gmail.com>
584 * ew/cat-file-optim (2024-08-25) 10 commits
585 - cat-file: use writev(2) if available
586 - cat-file: batch_write: use size_t for length
587 - cat-file: batch-command uses content_limit
588 - object_info: content_limit only applies to blobs
589 - packfile: packed_object_info avoids packed_to_object_type
590 - cat-file: use delta_base_cache entries directly
591 - packfile: inline cache_or_unpack_entry
592 - packfile: fix off-by-one in content_limit comparison
593 - packfile: allow content-limit for cat-file
594 - packfile: move sizep computation
596 "git cat-file --batch" has been optimized.
598 Waiting for review responses.
599 source: <20240823224630.1180772-1-e@80x24.org>