@@ -56,6 +56,26 @@ UI, Workflows & Features
5656 standardized to make them consistent with each other and with other
5757 commands.
5858
59+ * 'git log --graph' has been modified to visually distinguish parentless
60+ 'root' commits (and commits that become roots due to history
61+ simplification) by indenting them, preventing them from appearing
62+ falsely related to unrelated commits rendered immediately above them.
63+
64+ * Userdiff patterns for Swift have been added, with support for
65+ Swift-specific constructs such as attributes, modifiers, failable
66+ initializers, and generics.
67+
68+ * Configuration file locking has been updated to retry for a short
69+ period, avoiding failures when multiple processes attempt to update
70+ the configuration simultaneously.
71+
72+ * The 'remote-object-info' command has been added to 'git cat-file
73+ --batch-command', allowing clients to request object metadata
74+ (currently size) from a remote server via protocol v2 without
75+ downloading the entire object. Format placeholders are dynamically
76+ filtered on the client based on server-advertised capabilities,
77+ returning empty strings for inapplicable or unsupported fields.
78+
5979
6080Performance, Internal Implementation, Development Support etc.
6181--------------------------------------------------------------
@@ -206,6 +226,60 @@ Performance, Internal Implementation, Development Support etc.
206226 pathspec filtering, which was lost when the streaming walk was
207227 refactored.
208228
229+ * The ref subsystem and the worktree API have been refactored to pass a
230+ repository pointer down the call chain, allowing them to drop
231+ references to the global 'the_repository' variable. As part of this,
232+ the handling of the 'core.packedRefsTimeout' configuration has been
233+ moved into the per-repository ref store structure.
234+
235+ * 'git branch --contains' and 'git for-each-ref --contains' have been
236+ optimized to use the memoized commit traversal previously used only by
237+ 'git tag --contains', significantly speeding up connectivity checks
238+ across many candidate refs with shared history.
239+
240+ * The passing of push destination specifications in the 'remote-curl'
241+ helper has been simplified by removing the explicit 'count' parameter
242+ and relying on the NULL-termination of the array.
243+
244+ * The dependency on the global 'the_repository' variable in the
245+ 'refspec.c' API has been removed by passing the hash algorithm
246+ explicitly to refspec-parsing functions and storing it in 'struct
247+ refspec'.
248+
249+ * The enumeration of untracked and ignored files in 'git status' has
250+ been optimized by avoiding quadratic complexity when inserting into
251+ string lists, reducing the construction cost from O(n^2) to O(n log
252+ n).
253+
254+ * The copy_file() and copy_file_with_time() functions have been
255+ refactored to take a repository parameter, allowing the removal of the
256+ implicit dependency on the global 'the_repository' variable in
257+ 'copy.c'.
258+
259+ * The tempfile and lockfile APIs have been refactored to stop depending
260+ on the 'the_repository' global variable, and their callers have been
261+ updated to use the repository-aware variants.
262+
263+ * The 'trust_executable_bit' (coming from the 'core.filemode'
264+ configuration) has been migrated into 'struct repo_config_values' to
265+ tie it to a specific repository instance.
266+
267+ * The 'excludes_file' and various other global configuration variables
268+ (including 'editor_program', 'pager_program', 'askpass_program', and
269+ 'push_default') have been migrated into the per-repository structure.
270+
271+ * The 'git stash push' command has been optimized to avoid unnecessary
272+ sparse index expansion when pathspecs are wholly inside the
273+ sparse-checkout cone. Also, a potential out-of-bounds read in the
274+ sparse-index expansion check helper pathspec_needs_expanded_index()
275+ has been fixed by consistently using the parsed, prefixed path.
276+
277+ * The logic to write loose objects has been refactored and moved from
278+ 'object-file.c' to the loose backend source file 'odb/source-loose.c',
279+ making the loose backend more self-contained. This is achieved by
280+ first refactoring force_object_loose() to use generic ODB write
281+ interfaces instead of loose-backend internals.
282+
209283
210284Fixes since v2.55
211285-----------------
@@ -350,3 +424,24 @@ Fixes since v2.55
350424 'git submodule update' command until it was broken in a modernization
351425 of the option-parsing code, has been restored.
352426 (merge ff1da37f58 dm/submodule-update-i-shorthand later to maint).
427+
428+ * An accidental use of the '%zu' format specifier in 'git
429+ submodule--helper' has been corrected to use 'PRIuMAX' and cast the
430+ value to 'uintmax_t' to avoid portability issues.
431+ (merge 3279c13c00 jc/submodule-helper-avoid-zu later to maint).
432+
433+ * The rebase post-rewrite notes-copying logic has been corrected. When
434+ a commit is dropped during rebase (e.g., because its changes are
435+ already upstream), it is no longer recorded as rewritten, preventing
436+ its notes from being copied to an unrelated commit.
437+ (merge 42554b78fd pw/rebase-drop-notes-with-commit later to maint).
438+
439+ * A few memory problems in the Rust interface to C hash functions have
440+ been corrected. The 'Clone' implementation of 'CryptoHasher' now
441+ properly initializes the context before cloning, and its 'Drop'
442+ implementation now discards the context to prevent leaks.
443+
444+ * The object ID shortening and linking in the 'commitdiff' view of
445+ 'gitweb' has been corrected to work even when the index line carries
446+ a trailing file mode.
447+ (merge fda513d6fe tl/gitweb-shorten-hashes-with-modes later to maint).
0 commit comments