The sixteenth batch
[git/gitster.git] / Documentation / RelNotes / 2.51.0.adoc
blob5e254541b5f182a0561fa0c133f633abb91af0fb
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.
56  * Remove unsupported, unused, and unsupportable old option from "git
57    log".
59  * Document recently added "git imap-send --list" with an example.
61  * "git pull" learned to pay attention to pull.autostash configuration
62    variable, which overrides rebase/merge.autostash.
65 Performance, Internal Implementation, Development Support etc.
66 --------------------------------------------------------------
68  * "git pack-objects" learned to find delta bases from blobs at the
69    same path, using the --path-walk API.
71  * CodingGuidelines update.
73  * Add settings for Solaris 10 & 11.
75  * Meson-based build/test framework now understands TAP output
76    generated by our tests.
78  * "Do not explicitly initialize to zero" rule has been clarified in
79    the CodingGuidelines document.
81  * A test helper "test_seq" function learned the "-f <fmt>" option,
82    which allowed us to simplify a lot of test scripts.
84  * A lot of stale stuff has been removed from the contrib/ hierarchy.
86  * "git push" and "git fetch" are taught to update refs in batches to
87    gain performance.
89  * Some code paths in the "git prune" used to ignore passed in
90    repository object and used the_repository singleton instance
91    instead, which has been corrected.
93  * Update ".clang-format" and ".editorconfig" to match our style guide
94    a bit better.
96  * "make coccicheck" succeeds even when spatch made suggestions, which
97    has been updated to fail in such a case.
99  * Code clean-up around object access API.
101  * Define .precision to more canned parse-options type to avoid bugs
102    coming from using a variable with a wrong type to capture the
103    parsed values.
105  * Flipping the default hash function to SHA-256 at Git 3.0 boundary
106    is planned.
108  * Declare weather-balloon we raised for "bool" type 18 months ago a
109    success and officially allow using the type in our codebase.
111  * GIT_TEST_INSTALLED was not honored in the recent topic related to
112    SHA256 hashes, which has been corrected.
114  * The pop_most_recent_commit() function can have quite expensive
115    worst case performance characteristics, which has been optimized by
116    using prio-queue data structure.
118  * Move structure definition from unrelated header file to where it
119    belongs.
121  * To help our developers, document what C99 language features are
122    being considered for adoption, in addition to what past experiments
123    have already decided.
125  * The reftable unit tests are now ported to the "clar" unit testing
126    framework.
129 Fixes since v2.50
130 -----------------
132 Unless otherwise noted, all the changes in 2.50.X maintenance track,
133 including security updates, are included in this release.
135  * A memory-leak in an error code path has been plugged.
136    (merge 7082da85cb ly/commit-graph-graph-write-leakfix later to maint).
138  * A memory-leak in an error code path has been plugged.
139    (merge aedebdb6b9 ly/fetch-pack-leakfix later to maint).
141  * Some leftover references to documentation source files that no
142    longer exist, due to recent ".txt" -> ".adoc" renaming, have been
143    corrected.
144    (merge 3717a5775a jw/doc-txt-to-adoc-refs later to maint).
146  * "git stash -p <pathspec>" improvements.
147    (merge 468817bab2 pw/stash-p-pathspec-fixes later to maint).
149  * "git send-email" incremented its internal message counter when a
150    message was edited, which made logic that treats the first message
151    specially misbehave, which has been corrected.
152    (merge 2cc27b3501 ag/send-email-edit-threading-fix later to maint).
154  * "git stash" recorded a wrong branch name when submodules are
155    present in the current checkout, which has been corrected.
156    (merge ffb36c64f2 kj/stash-onbranch-submodule-fix later to maint).
158  * When asking to apply mailmap to both author and committer field
159    while showing a commit object, the field that appears later was not
160    correctly parsed and replaced, which has been corrected.
161    (merge abf94a283f sa/multi-mailmap-fix later to maint).
163  * "git maintenance" lacked the care "git gc" had to avoid holding
164    onto the repository lock for too long during packing refs, which
165    has been remedied.
166    (merge 1b5074e614 ps/maintenance-ref-lock later to maint).
168  * Avoid regexp_constraint and instead use comparison_constraint when
169    listing functions to exclude from application of coccinelle rules,
170    as spatch can be built with different regexp engine X-<.
171    (merge f2ad545813 jc/cocci-avoid-regexp-constraint later to maint).
173  * Updating submodules from the upstream did not work well when
174    submodule's HEAD is detached, which has been improved.
175    (merge ca62f524c1 jk/submodule-remote-lookup-cleanup later to maint).
177  * Remove unnecessary check from "git daemon" code.
178    (merge 0c856224d2 cb/daemon-fd-check-fix later to maint).
180  * Use of sysctl() system call to learn the total RAM size used on
181    BSDs has been corrected.
182    (merge 781c1cf571 cb/total-ram-bsd-fix later to maint).
184  * Drop FreeBSD 4 support and declare that we support only FreeBSD 12
185    or later, which has memmem() supported.
186    (merge 0392f976a7 bs/config-mak-freebsd later to maint).
188  * A diff-filter with negative-only specification like "git log
189    --diff-filter=d" did not trigger correctly, which has been fixed.
190    (merge 375ac087c5 jk/all-negative-diff-filter-fix later to maint).
192  * A failure to open the index file for writing due to conflicting
193    access did not state what went wrong, which has been corrected.
194    (merge 9455397a5c hy/read-cache-lock-error-fix later to maint).
196  * Tempfile removal fix in the codepath to sign commits with SSH keys.
197    (merge 4498127b04 re/ssh-sign-buffer-fix later to maint).
199  * Code and test clean-up around string-list API.
200    (merge 6e5b26c3ff sj/string-list later to maint).
202  * "git apply -N" should start from the current index and register
203    only new files, but it instead started from an empty index, which
204    has been corrected.
205    (merge 2b49d97fcb rp/apply-intent-to-add-fix later to maint).
207  * Leakfix with a new and a bit invasive test on pack-bitmap files.
208    (merge bfd5522e98 ly/load-bitmap-leakfix later to maint).
210  * "git fetch --prune" used to be O(n^2) expensive when there are many
211    refs, which has been corrected.
212    (merge 87d8d8c5d0 ph/fetch-prune-optim later to maint).
214  * When a ref creation at refs/heads/foo/bar fails, the files backend
215    now removes refs/heads/foo/ if the directory is otherwise not used.
216    (merge a3a7f20516 ps/refs-files-remove-empty-parent later to maint).
218  * "pack-objects" has been taught to avoid pointing into objects in
219    cruft packs from midx.
221  * "git remote" now detects remote names that overlap with each other
222    (e.g., remote nickname "outer" and "outer/inner" are used at the
223    same time), as it will lead to overlapping remote-tracking
224    branches.
225    (merge a5a727c448 jk/remote-avoid-overlapping-names later to maint).
227  * The gpg.program configuration variable, which names a pathname to
228    the (custom) GPG compatible program, can now be spelled with ~tilde
229    expansion.
230    (merge 7d275cd5c0 jb/gpg-program-variable-is-a-pathname later to maint).
232  * Our <sane-ctype.h> header file relied on that the system-supplied
233    <ctype.h> header is not later included, which would override our
234    macro definitions, but "amazon linux" broke this assumption.  Fix
235    this by preemptively including <ctype.h> near the beginning of
236    <sane-ctype.h> ourselves.
237    (merge 9d3b33125f ps/sane-ctype-workaround later to maint).
239  * Clean-up compat/bswap.h mess.
240    (merge f4ac32c03a ss/compat-bswap-revamp later to maint).
242  * Meson-based build did not handle libexecdir setting correctly,
243    which has been corrected.
244    (merge 056dbe8612 rj/meson-libexecdir-fix later to maint).
246  * Document that we do not require "real" name when signing your
247    patches off.
248    (merge 1f0fed312a bc/contribution-under-non-real-names later to maint).
250  * "git commit" that concludes a conflicted merge failed to notice and remove
251    existing comment added automatically (like "# Conflicts:") when the
252    core.commentstring is set to 'auto'.
253    (merge 92b7c7c9f5 ac/auto-comment-char-fix later to maint).
255  * Other code cleanup, docfix, build fix, etc.
256    (merge b257adb571 lo/my-first-ow-doc-update later to maint).
257    (merge 8b34b6a220 ly/sequencer-update-squash-is-fixup-only later to maint).
258    (merge 5dceb8bd05 ly/do-not-localize-bug-messages later to maint).
259    (merge 61372dd613 ly/commit-buffer-reencode-leakfix later to maint).
260    (merge 81cd1eef7d ly/pack-bitmap-root-leakfix later to maint).
261    (merge bfc9f9cc64 ly/submodule-update-failure-leakfix later to maint).
262    (merge 65dff89c6b ma/doc-diff-cc-headers later to maint).
263    (merge efb61591ee jm/bundle-uri-debug-output-to-fp later to maint).
264    (merge a3d278bb64 ly/prepare-show-merge-leakfix later to maint).
265    (merge 1fde1c5daf ac/preload-index-wo-the-repository later to maint).
266    (merge 855cfc65ae rm/t2400-modernize later to maint).
267    (merge 2939494284 ly/run-builtin-use-passed-in-repo later to maint).
268    (merge ff73f375bb jg/mailinfo-leakfix later to maint).
269    (merge 996f14c02b jj/doc-branch-markup-fix later to maint).
270    (merge 1e77de1864 cb/ci-freebsd-update-to-14.3 later to maint).
271    (merge b0e9d25865 jk/fix-leak-send-pack later to maint).
272    (merge f3a9558c8c bs/remote-helpers-doc-markup-fix later to maint).
273    (merge c4e9775c60 kh/doc-config-subcommands later to maint).
274    (merge de404249ab ps/perlless-test-fixes later to maint).
275    (merge 953049eed8 ts/merge-orig-head-doc-fix later to maint).
276    (merge 0c83bbc704 rj/freebsd-sysinfo-build-fix later to maint).
277    (merge ad7780b38f ps/doc-pack-refs-auto-with-files-backend-fix later to maint).
278    (merge f4fa8a3687 rh/doc-glob-pathspec-fix later to maint).
279    (merge b27be108c8 ja/doc-git-log-markup later to maint).
280    (merge 14d7583beb pw/config-kvi-remove-path later to maint).
281    (merge f31abb421d jc/do-not-scan-argv-without-parsing later to maint).
282    (merge 26552cb62a jk/unleak-reflog-expire-entry later to maint).
283    (merge 339d95fda9 jc/ci-print-test-failures-fix later to maint).
284    (merge 8c3add51a8 cb/meson-avoid-broken-macos-pcre2 later to maint).