1 Git v2.51 Release Notes
2 =======================
4 UI, Workflows & Features
5 ------------------------
7 * Userdiff patterns for the R language have been added.
9 * Documentation for "git send-email" has been updated with a bit more
10 credential helper and OAuth information.
12 * "git cat-file --batch" learns to understand %(objectmode) atom to
13 allow the caller to tell missing objects (due to repository
14 corruption) and submodules (whose commit objects are OK to be
17 * "git diff --no-index dirA dirB" can limit the comparison with
18 pathspec at the end of the command line, just like normal "git
21 * "git subtree" (in contrib/) learned to grok GPG signing its commits.
23 * "git whatchanged" that is longer to type than "git log --raw"
24 which is its modern rough equivalent has outlived its usefulness
25 more than 10 years ago. Plan to deprecate and remove it.
27 * An interchange format for stash entries is defined, and subcommand
28 of "git stash" to import/export has been added.
30 * "git merge/pull" has been taught the "--compact-summary" option to
31 use the compact-summary format, intead of diffstat, when showing
32 the summary of the incoming changes.
34 * "git imap-send" has been broken for a long time, which has been
35 resurrected and then taught to talk OAuth2.0 etc.
37 * Some error messages from "git imap-send" has been updated.
39 * When "git daemon" sees a signal while attempting to accept() a new
40 client, instead of retrying, it skipped it by mistake, which has
43 * The reftable ref backend has matured enough; Git 3.0 will make it
44 the default format in a newly created repositories by default.
46 * "netrc" credential helper has been improved to understand textual
47 service names (like smtp) in addition to the numeric port numbers
50 * Lift the limitation to use changed-path filter in "git log" so that
51 it can be used for a pathspec with multiple literal paths.
53 * Clean up the way how signature on commit objects are exported to
54 and imported from fast-import stream.
57 Performance, Internal Implementation, Development Support etc.
58 --------------------------------------------------------------
60 * "git pack-objects" learned to find delta bases from blobs at the
61 same path, using the --path-walk API.
63 * CodingGuidelines update.
65 * Add settings for Solaris 10 & 11.
67 * Meson-based build/test framework now understands TAP output
68 generated by our tests.
70 * "Do not explicitly initialize to zero" rule has been clarified in
71 the CodingGuidelines document.
73 * A test helper "test_seq" function learned the "-f <fmt>" option,
74 which allowed us to simplify a lot of test scripts.
76 * A lot of stale stuff has been removed from the contrib/ hierarchy.
78 * "git push" and "git fetch" are taught to update refs in batches to
81 * Some code paths in the "git prune" used to ignore passed in
82 repository object and used the_repository singleton instance
83 instead, which has been corrected.
85 * Update ".clang-format" and ".editorconfig" to match our style guide
88 * "make coccicheck" succeeds even when spatch made suggestions, which
89 has been updated to fail in such a case.
91 * Code clean-up around object access API.
93 * Define .precision to more canned parse-options type to avoid bugs
94 coming from using a variable with a wrong type to capture the
97 * Flipping the default hash function to SHA-256 at Git 3.0 boundary
100 * Declare weather-balloon we raised for "bool" type 18 months ago a
101 success and officially allow using the type in our codebase.
103 * GIT_TEST_INSTALLED was not honored in the recent topic related to
104 SHA256 hashes, which has been corrected.
106 * The pop_most_recent_commit() function can have quite expensive
107 worst case performance characteristics, which has been optimized by
108 using prio-queue data structure.
114 Unless otherwise noted, all the changes in 2.50.X maintenance track,
115 including security updates, are included in this release.
117 * A memory-leak in an error code path has been plugged.
118 (merge 7082da85cb ly/commit-graph-graph-write-leakfix later to maint).
120 * A memory-leak in an error code path has been plugged.
121 (merge aedebdb6b9 ly/fetch-pack-leakfix later to maint).
123 * Some leftover references to documentation source files that no
124 longer exist, due to recent ".txt" -> ".adoc" renaming, have been
126 (merge 3717a5775a jw/doc-txt-to-adoc-refs later to maint).
128 * "git stash -p <pathspec>" improvements.
129 (merge 468817bab2 pw/stash-p-pathspec-fixes later to maint).
131 * "git send-email" incremented its internal message counter when a
132 message was edited, which made logic that treats the first message
133 specially misbehave, which has been corrected.
134 (merge 2cc27b3501 ag/send-email-edit-threading-fix later to maint).
136 * "git stash" recorded a wrong branch name when submodules are
137 present in the current checkout, which has been corrected.
138 (merge ffb36c64f2 kj/stash-onbranch-submodule-fix later to maint).
140 * When asking to apply mailmap to both author and committer field
141 while showing a commit object, the field that appears later was not
142 correctly parsed and replaced, which has been corrected.
143 (merge abf94a283f sa/multi-mailmap-fix later to maint).
145 * "git maintenance" lacked the care "git gc" had to avoid holding
146 onto the repository lock for too long during packing refs, which
148 (merge 1b5074e614 ps/maintenance-ref-lock later to maint).
150 * Avoid regexp_constraint and instead use comparison_constraint when
151 listing functions to exclude from application of coccinelle rules,
152 as spatch can be built with different regexp engine X-<.
153 (merge f2ad545813 jc/cocci-avoid-regexp-constraint later to maint).
155 * Updating submodules from the upstream did not work well when
156 submodule's HEAD is detached, which has been improved.
157 (merge ca62f524c1 jk/submodule-remote-lookup-cleanup later to maint).
159 * Remove unnecessary check from "git daemon" code.
160 (merge 0c856224d2 cb/daemon-fd-check-fix later to maint).
162 * Use of sysctl() system call to learn the total RAM size used on
163 BSDs has been corrected.
164 (merge 781c1cf571 cb/total-ram-bsd-fix later to maint).
166 * Drop FreeBSD 4 support and declare that we support only FreeBSD 12
167 or later, which has memmem() supported.
168 (merge 0392f976a7 bs/config-mak-freebsd later to maint).
170 * A diff-filter with negative-only specification like "git log
171 --diff-filter=d" did not trigger correctly, which has been fixed.
172 (merge 375ac087c5 jk/all-negative-diff-filter-fix later to maint).
174 * A failure to open the index file for writing due to conflicting
175 access did not state what went wrong, which has been corrected.
176 (merge 9455397a5c hy/read-cache-lock-error-fix later to maint).
178 * Tempfile removal fix in the codepath to sign commits with SSH keys.
179 (merge 4498127b04 re/ssh-sign-buffer-fix later to maint).
181 * Code and test clean-up around string-list API.
182 (merge 6e5b26c3ff sj/string-list later to maint).
184 * "git apply -N" should start from the current index and register
185 only new files, but it instead started from an empty index, which
187 (merge 2b49d97fcb rp/apply-intent-to-add-fix later to maint).
189 * Leakfix with a new and a bit invasive test on pack-bitmap files.
190 (merge bfd5522e98 ly/load-bitmap-leakfix later to maint).
192 * "git fetch --prune" used to be O(n^2) expensive when there are many
193 refs, which has been corrected.
194 (merge 87d8d8c5d0 ph/fetch-prune-optim later to maint).
196 * When a ref creation at refs/heads/foo/bar fails, the files backend
197 now removes refs/heads/foo/ if the directory is otherwise not used.
198 (merge a3a7f20516 ps/refs-files-remove-empty-parent later to maint).
200 * "pack-objects" has been taught to avoid pointing into objects in
201 cruft packs from midx.
203 * "git remote" now detects remote names that overlap with each other
204 (e.g., remote nickname "outer" and "outer/inner" are used at the
205 same time), as it will lead to overlapping remote-tracking
207 (merge a5a727c448 jk/remote-avoid-overlapping-names later to maint).
209 * The gpg.program configuration variable, which names a pathname to
210 the (custom) GPG compatible program, can now be spelled with ~tilde
212 (merge 7d275cd5c0 jb/gpg-program-variable-is-a-pathname later to maint).
214 * Our <sane-ctype.h> header file relied on that the system-supplied
215 <ctype.h> header is not later included, which would override our
216 macro definitions, but "amazon linux" broke this assumption. Fix
217 this by preemptively including <ctype.h> near the beginning of
218 <sane-ctype.h> ourselves.
219 (merge 9d3b33125f ps/sane-ctype-workaround later to maint).
221 * Clean-up compat/bswap.h mess.
222 (merge f4ac32c03a ss/compat-bswap-revamp later to maint).
224 * Meson-based build did not handle libexecdir setting correctly,
225 which has been corrected.
226 (merge 056dbe8612 rj/meson-libexecdir-fix later to maint).
228 * Document that we do not require "real" name when signing your
230 (merge 1f0fed312a bc/contribution-under-non-real-names later to maint).
232 * "git commit" that concludes a conflicted merge failed to notice and remove
233 existing comment added automatically (like "# Conflicts:") when the
234 core.commentstring is set to 'auto'.
235 (merge 92b7c7c9f5 ac/auto-comment-char-fix later to maint).
237 * Other code cleanup, docfix, build fix, etc.
238 (merge b257adb571 lo/my-first-ow-doc-update later to maint).
239 (merge 8b34b6a220 ly/sequencer-update-squash-is-fixup-only later to maint).
240 (merge 5dceb8bd05 ly/do-not-localize-bug-messages later to maint).
241 (merge 61372dd613 ly/commit-buffer-reencode-leakfix later to maint).
242 (merge 81cd1eef7d ly/pack-bitmap-root-leakfix later to maint).
243 (merge bfc9f9cc64 ly/submodule-update-failure-leakfix later to maint).
244 (merge 65dff89c6b ma/doc-diff-cc-headers later to maint).
245 (merge efb61591ee jm/bundle-uri-debug-output-to-fp later to maint).
246 (merge a3d278bb64 ly/prepare-show-merge-leakfix later to maint).
247 (merge 1fde1c5daf ac/preload-index-wo-the-repository later to maint).
248 (merge 855cfc65ae rm/t2400-modernize later to maint).
249 (merge 2939494284 ly/run-builtin-use-passed-in-repo later to maint).
250 (merge ff73f375bb jg/mailinfo-leakfix later to maint).
251 (merge 996f14c02b jj/doc-branch-markup-fix later to maint).
252 (merge 1e77de1864 cb/ci-freebsd-update-to-14.3 later to maint).
253 (merge b0e9d25865 jk/fix-leak-send-pack later to maint).
254 (merge f3a9558c8c bs/remote-helpers-doc-markup-fix later to maint).
255 (merge c4e9775c60 kh/doc-config-subcommands later to maint).
256 (merge de404249ab ps/perlless-test-fixes later to maint).
257 (merge 953049eed8 ts/merge-orig-head-doc-fix later to maint).
258 (merge 0c83bbc704 rj/freebsd-sysinfo-build-fix later to maint).
259 (merge ad7780b38f ps/doc-pack-refs-auto-with-files-backend-fix later to maint).
260 (merge f4fa8a3687 rh/doc-glob-pathspec-fix later to maint).
261 (merge b27be108c8 ja/doc-git-log-markup later to maint).
262 (merge 14d7583beb pw/config-kvi-remove-path later to maint).