The fifteenth batch
[git.git] / Documentation / RelNotes / 2.51.0.adoc
blobf9e6a54109a7b8082cb4b5bba0ad85a449d70697
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
15    missing) apart.
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
19    diff".
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
41    been corrected.
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
48    (like 25).
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
79    gain performance.
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
86    a bit better.
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
95    parsed values.
97  * Flipping the default hash function to SHA-256 at Git 3.0 boundary
98    is planned.
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.
111 Fixes since v2.50
112 -----------------
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
125    corrected.
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
147    has been remedied.
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
186    has been corrected.
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
206    branches.
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
211    expansion.
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
229    patches off.
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).