@@ -43,6 +43,19 @@ UI, Workflows & Features
4343 output has been optimized to reserve a column for marks (caret,
4444 question mark, or asterisk) only when such marks are actually shown.
4545
46+ * Option parsing with 'git rev-parse --parseopt' and in most 'git'
47+ subcommands has been updated to exit with 0 (instead of 129) when the
48+ help option ('-h' or '--help') is requested directly by the user,
49+ aligning with standard Unix convention.
50+
51+ * The '[includeIf "condition"]' conditional inclusion facility for
52+ configuration files has been taught to use the location of the
53+ worktree in its condition.
54+
55+ * The usage string and SYNOPSIS for 'git fast-export' have been
56+ standardized to make them consistent with each other and with other
57+ commands.
58+
4659
4760Performance, Internal Implementation, Development Support etc.
4861--------------------------------------------------------------
@@ -108,6 +121,91 @@ Performance, Internal Implementation, Development Support etc.
108121 the generated header file 'hook-list.h' is built before compiling
109122 files in 'builtin_sources' that depend on it.
110123
124+ * The repository discovery and repository configuration phases, which
125+ were previously intertwined in 'setup.c', have been split. Repository
126+ discovery has been updated to populate a 'struct repo_discovery'
127+ without modifying the repository state, which is then taken by
128+ repository configuration to initialize the repository, paving the way
129+ for clean unification of repository configuration.
130+
131+ * The 'SubmittingPatches' document has been updated to explicitly
132+ describe the expectation for contributors to retract or abandon their
133+ patch series when they are no longer pursuing it.
134+
135+ * The contributor guide has been updated to advise new contributors to
136+ trim irrelevant quoted text when replying to review comments, matching
137+ the existing advice given to reviewers.
138+
139+ * The build system has been updated to support building universal macOS
140+ binaries when 'Rust' is enabled, by compiling separate static archives
141+ for each target triple listed in 'RUST_TARGETS' and combining them
142+ using the macOS 'lipo' tool. The 'git-credential-osxkeychain' helper
143+ has been updated to link against '$(RUST_LIB)' when 'Rust' is enabled.
144+
145+ * The test suite has been updated to use the 'test_grep' helper instead
146+ of bare 'grep' for test assertions, allowing file contents to be
147+ printed on failure for easier debugging. A new 'greplint' linter has
148+ been introduced to detect and prevent new bare 'grep' assertions from
149+ being added to the test suite.
150+
151+ * The pipelines in 't1410-reflog.sh' have been replaced with the
152+ 'test_stdout_line_count' helper to avoid suppressing the exit code of
153+ 'git' commands, ensuring failures are not hidden from the test suite.
154+
155+ * The cache-scanning loop in 'next_cache_entry()' has been optimized
156+ to avoid rescanning already-unpacked index entries, preventing a
157+ quadratic performance slow-down when diffing the working tree
158+ against a commit with a pathspec matching early index entries.
159+
160+ * The global configuration variable 'ignore_case' (representing the
161+ 'core.ignorecase' configuration) has been migrated into 'struct
162+ repo_config_values' to tie it to a specific repository instance.
163+
164+ * The performance of ref updates and reads using the 'reftable' backend
165+ in the presence of many deletion tombstone records has been optimized
166+ by removing the tombstone suppression flag from the merged iterator
167+ and instead skipping tombstones at higher-level call sites where
168+ iteration bounds are known.
169+
170+ * Various code paths have been hardened against potential NULL-pointer
171+ dereferences and invalid file descriptor accesses flagged by
172+ Coverity.
173+
174+ * The in-tree 'b4' cover letter template has been updated to include the
175+ 'change-id' trailer, ensuring that sent tags generated by 'b4' contain
176+ the required tracking information for subsequent runs.
177+
178+ * 'git receive-pack' has been refactored to use ODB transaction
179+ interfaces instead of directly managing 'tmp_objdir' for staging
180+ incoming objects, bringing it closer to being ODB backend agnostic.
181+
182+ * The test script 't/t9811-git-p4-label-import.sh' has been
183+ modernized to use 'test_path_is_file' and 'test_path_is_missing'
184+ instead of raw 'test -f' and '! test -f' calls.
185+
186+ * A redundant strbuf_reset() call in the 'HAVE_GETDELIM' path of
187+ strbuf_getwholeline() has been removed, as getdelim() overwrites the
188+ buffer and the length is updated afterward.
189+
190+ * The object database enumeration interface odb_for_each_object() has
191+ been taught to accept object filters, allowing the underlying backends
192+ to optimize the traversal by using reachability bitmaps when
193+ available. 'git cat-file --batch-all-objects' has been updated to use
194+ this generic interface, simplifying its code and avoiding direct
195+ access to ODB backend internals.
196+
197+ * The test script 't/t1100-commit-tree-options.sh' has been modernized
198+ by converting test cases to the modern style (using single quotes and
199+ tab indentation) and moving the creation of the expected file inside
200+ the setup test so it runs under the protection of the test harness.
201+
202+ * The test script 't/t7614-merge-signoff.sh' has been updated to avoid
203+ suppressing the exit code of 'git' commands in a pipe.
204+
205+ * The 'git rev-list --no-walk' command has been corrected to restore
206+ pathspec filtering, which was lost when the streaming walk was
207+ refactored.
208+
111209
112210Fixes since v2.55
113211-----------------
@@ -215,3 +313,40 @@ Fixes since v2.55
215313 escape sequences that use colon-separated subfields (e.g., for
216314 256-color or true-color codes).
217315 (merge 3792b2aea4 mm/sideband-ansi-sgr-colon-fix later to maint).
316+
317+ * The 'reftable' code has been hardened against corrupted tables by
318+ fixing out-of-bounds writes, out-of-bounds reads, and abort calls
319+ during parsing.
320+ (merge ca93c27328 ps/reftable-hardening later to maint).
321+
322+ * A description in the release notes for Git 2.55.0 has been
323+ retroactively updated to clarify that Rust support is enabled by
324+ default, but still optional, and will become mandatory in Git 3.0.
325+ (merge 18b2009d14 jc/relnotes-2.55-rust-fix later to maint).
326+
327+ * The early-exit optimization in 'paint_down_to_common()' has been
328+ gated on the queue being generation-ordered, fixing a bug where
329+ 'git merge-base' (without '--all') could return incorrect results
330+ on repositories with v1 commit graphs and clock skew.
331+ (merge ae68032a8d kk/commit-reach-find-all-fix later to maint).
332+
333+ * The client-side parser of the server-advertised bundle-URI list has
334+ been updated to drain the remaining response in order to avoid
335+ protocol desynchronization when the server sends a misconfigured list.
336+ Also, the server-side has been taught to omit empty configuration
337+ values instead of sending invalid key-value lines.
338+ (merge 50de1169e4 tc/bundle-uri-empty-fix later to maint).
339+
340+ * The 'topo_levels' slab was propagated only to the topmost layer of a
341+ split commit-graph chain, causing topological levels for commits in
342+ base layers to be recomputed during incremental writes. This has been
343+ corrected.
344+
345+ * The stream-based object signature verification path has been
346+ corrected to avoid double-closing the stream on read errors.
347+ (merge cfd52a74a0 ps/odb-stream-double-close-fix later to maint).
348+
349+ * The '-i' shorthand for the '--init' option, which was accepted by the
350+ 'git submodule update' command until it was broken in a modernization
351+ of the option-parsing code, has been restored.
352+ (merge ff1da37f58 dm/submodule-update-i-shorthand later to maint).
0 commit comments