summaryrefslogtreecommitdiff
path: root/Documentation/RelNotes/2.51.0.adoc
blob: 5e254541b5f182a0561fa0c133f633abb91af0fb (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
Git v2.51 Release Notes
=======================

UI, Workflows & Features
------------------------

 * Userdiff patterns for the R language have been added.

 * Documentation for "git send-email" has been updated with a bit more
   credential helper and OAuth information.

 * "git cat-file --batch" learns to understand %(objectmode) atom to
   allow the caller to tell missing objects (due to repository
   corruption) and submodules (whose commit objects are OK to be
   missing) apart.

 * "git diff --no-index dirA dirB" can limit the comparison with
   pathspec at the end of the command line, just like normal "git
   diff".

 * "git subtree" (in contrib/) learned to grok GPG signing its commits.

 * "git whatchanged" that is longer to type than "git log --raw"
   which is its modern rough equivalent has outlived its usefulness
   more than 10 years ago.  Plan to deprecate and remove it.

 * An interchange format for stash entries is defined, and subcommand
   of "git stash" to import/export has been added.

 * "git merge/pull" has been taught the "--compact-summary" option to
   use the compact-summary format, intead of diffstat, when showing
   the summary of the incoming changes.

 * "git imap-send" has been broken for a long time, which has been
   resurrected and then taught to talk OAuth2.0 etc.

 * Some error messages from "git imap-send" has been updated.

 * When "git daemon" sees a signal while attempting to accept() a new
   client, instead of retrying, it skipped it by mistake, which has
   been corrected.

 * The reftable ref backend has matured enough; Git 3.0 will make it
   the default format in a newly created repositories by default.

 * "netrc" credential helper has been improved to understand textual
   service names (like smtp) in addition to the numeric port numbers
   (like 25).

 * Lift the limitation to use changed-path filter in "git log" so that
   it can be used for a pathspec with multiple literal paths.

 * Clean up the way how signature on commit objects are exported to
   and imported from fast-import stream.

 * Remove unsupported, unused, and unsupportable old option from "git
   log".

 * Document recently added "git imap-send --list" with an example.

 * "git pull" learned to pay attention to pull.autostash configuration
   variable, which overrides rebase/merge.autostash.


Performance, Internal Implementation, Development Support etc.
--------------------------------------------------------------

 * "git pack-objects" learned to find delta bases from blobs at the
   same path, using the --path-walk API.

 * CodingGuidelines update.

 * Add settings for Solaris 10 & 11.

 * Meson-based build/test framework now understands TAP output
   generated by our tests.

 * "Do not explicitly initialize to zero" rule has been clarified in
   the CodingGuidelines document.

 * A test helper "test_seq" function learned the "-f <fmt>" option,
   which allowed us to simplify a lot of test scripts.

 * A lot of stale stuff has been removed from the contrib/ hierarchy.

 * "git push" and "git fetch" are taught to update refs in batches to
   gain performance.

 * Some code paths in the "git prune" used to ignore passed in
   repository object and used the_repository singleton instance
   instead, which has been corrected.

 * Update ".clang-format" and ".editorconfig" to match our style guide
   a bit better.

 * "make coccicheck" succeeds even when spatch made suggestions, which
   has been updated to fail in such a case.

 * Code clean-up around object access API.

 * Define .precision to more canned parse-options type to avoid bugs
   coming from using a variable with a wrong type to capture the
   parsed values.

 * Flipping the default hash function to SHA-256 at Git 3.0 boundary
   is planned.

 * Declare weather-balloon we raised for "bool" type 18 months ago a
   success and officially allow using the type in our codebase.

 * GIT_TEST_INSTALLED was not honored in the recent topic related to
   SHA256 hashes, which has been corrected.

 * The pop_most_recent_commit() function can have quite expensive
   worst case performance characteristics, which has been optimized by
   using prio-queue data structure.

 * Move structure definition from unrelated header file to where it
   belongs.

 * To help our developers, document what C99 language features are
   being considered for adoption, in addition to what past experiments
   have already decided.

 * The reftable unit tests are now ported to the "clar" unit testing
   framework.


Fixes since v2.50
-----------------

Unless otherwise noted, all the changes in 2.50.X maintenance track,
including security updates, are included in this release.

 * A memory-leak in an error code path has been plugged.
   (merge 7082da85cb ly/commit-graph-graph-write-leakfix later to maint).

 * A memory-leak in an error code path has been plugged.
   (merge aedebdb6b9 ly/fetch-pack-leakfix later to maint).

 * Some leftover references to documentation source files that no
   longer exist, due to recent ".txt" -> ".adoc" renaming, have been
   corrected.
   (merge 3717a5775a jw/doc-txt-to-adoc-refs later to maint).

 * "git stash -p <pathspec>" improvements.
   (merge 468817bab2 pw/stash-p-pathspec-fixes later to maint).

 * "git send-email" incremented its internal message counter when a
   message was edited, which made logic that treats the first message
   specially misbehave, which has been corrected.
   (merge 2cc27b3501 ag/send-email-edit-threading-fix later to maint).

 * "git stash" recorded a wrong branch name when submodules are
   present in the current checkout, which has been corrected.
   (merge ffb36c64f2 kj/stash-onbranch-submodule-fix later to maint).

 * When asking to apply mailmap to both author and committer field
   while showing a commit object, the field that appears later was not
   correctly parsed and replaced, which has been corrected.
   (merge abf94a283f sa/multi-mailmap-fix later to maint).

 * "git maintenance" lacked the care "git gc" had to avoid holding
   onto the repository lock for too long during packing refs, which
   has been remedied.
   (merge 1b5074e614 ps/maintenance-ref-lock later to maint).

 * Avoid regexp_constraint and instead use comparison_constraint when
   listing functions to exclude from application of coccinelle rules,
   as spatch can be built with different regexp engine X-<.
   (merge f2ad545813 jc/cocci-avoid-regexp-constraint later to maint).

 * Updating submodules from the upstream did not work well when
   submodule's HEAD is detached, which has been improved.
   (merge ca62f524c1 jk/submodule-remote-lookup-cleanup later to maint).

 * Remove unnecessary check from "git daemon" code.
   (merge 0c856224d2 cb/daemon-fd-check-fix later to maint).

 * Use of sysctl() system call to learn the total RAM size used on
   BSDs has been corrected.
   (merge 781c1cf571 cb/total-ram-bsd-fix later to maint).

 * Drop FreeBSD 4 support and declare that we support only FreeBSD 12
   or later, which has memmem() supported.
   (merge 0392f976a7 bs/config-mak-freebsd later to maint).

 * A diff-filter with negative-only specification like "git log
   --diff-filter=d" did not trigger correctly, which has been fixed.
   (merge 375ac087c5 jk/all-negative-diff-filter-fix later to maint).

 * A failure to open the index file for writing due to conflicting
   access did not state what went wrong, which has been corrected.
   (merge 9455397a5c hy/read-cache-lock-error-fix later to maint).

 * Tempfile removal fix in the codepath to sign commits with SSH keys.
   (merge 4498127b04 re/ssh-sign-buffer-fix later to maint).

 * Code and test clean-up around string-list API.
   (merge 6e5b26c3ff sj/string-list later to maint).

 * "git apply -N" should start from the current index and register
   only new files, but it instead started from an empty index, which
   has been corrected.
   (merge 2b49d97fcb rp/apply-intent-to-add-fix later to maint).

 * Leakfix with a new and a bit invasive test on pack-bitmap files.
   (merge bfd5522e98 ly/load-bitmap-leakfix later to maint).

 * "git fetch --prune" used to be O(n^2) expensive when there are many
   refs, which has been corrected.
   (merge 87d8d8c5d0 ph/fetch-prune-optim later to maint).

 * When a ref creation at refs/heads/foo/bar fails, the files backend
   now removes refs/heads/foo/ if the directory is otherwise not used.
   (merge a3a7f20516 ps/refs-files-remove-empty-parent later to maint).

 * "pack-objects" has been taught to avoid pointing into objects in
   cruft packs from midx.

 * "git remote" now detects remote names that overlap with each other
   (e.g., remote nickname "outer" and "outer/inner" are used at the
   same time), as it will lead to overlapping remote-tracking
   branches.
   (merge a5a727c448 jk/remote-avoid-overlapping-names later to maint).

 * The gpg.program configuration variable, which names a pathname to
   the (custom) GPG compatible program, can now be spelled with ~tilde
   expansion.
   (merge 7d275cd5c0 jb/gpg-program-variable-is-a-pathname later to maint).

 * Our <sane-ctype.h> header file relied on that the system-supplied
   <ctype.h> header is not later included, which would override our
   macro definitions, but "amazon linux" broke this assumption.  Fix
   this by preemptively including <ctype.h> near the beginning of
   <sane-ctype.h> ourselves.
   (merge 9d3b33125f ps/sane-ctype-workaround later to maint).

 * Clean-up compat/bswap.h mess.
   (merge f4ac32c03a ss/compat-bswap-revamp later to maint).

 * Meson-based build did not handle libexecdir setting correctly,
   which has been corrected.
   (merge 056dbe8612 rj/meson-libexecdir-fix later to maint).

 * Document that we do not require "real" name when signing your
   patches off.
   (merge 1f0fed312a bc/contribution-under-non-real-names later to maint).

 * "git commit" that concludes a conflicted merge failed to notice and remove
   existing comment added automatically (like "# Conflicts:") when the
   core.commentstring is set to 'auto'.
   (merge 92b7c7c9f5 ac/auto-comment-char-fix later to maint).

 * Other code cleanup, docfix, build fix, etc.
   (merge b257adb571 lo/my-first-ow-doc-update later to maint).
   (merge 8b34b6a220 ly/sequencer-update-squash-is-fixup-only later to maint).
   (merge 5dceb8bd05 ly/do-not-localize-bug-messages later to maint).
   (merge 61372dd613 ly/commit-buffer-reencode-leakfix later to maint).
   (merge 81cd1eef7d ly/pack-bitmap-root-leakfix later to maint).
   (merge bfc9f9cc64 ly/submodule-update-failure-leakfix later to maint).
   (merge 65dff89c6b ma/doc-diff-cc-headers later to maint).
   (merge efb61591ee jm/bundle-uri-debug-output-to-fp later to maint).
   (merge a3d278bb64 ly/prepare-show-merge-leakfix later to maint).
   (merge 1fde1c5daf ac/preload-index-wo-the-repository later to maint).
   (merge 855cfc65ae rm/t2400-modernize later to maint).
   (merge 2939494284 ly/run-builtin-use-passed-in-repo later to maint).
   (merge ff73f375bb jg/mailinfo-leakfix later to maint).
   (merge 996f14c02b jj/doc-branch-markup-fix later to maint).
   (merge 1e77de1864 cb/ci-freebsd-update-to-14.3 later to maint).
   (merge b0e9d25865 jk/fix-leak-send-pack later to maint).
   (merge f3a9558c8c bs/remote-helpers-doc-markup-fix later to maint).
   (merge c4e9775c60 kh/doc-config-subcommands later to maint).
   (merge de404249ab ps/perlless-test-fixes later to maint).
   (merge 953049eed8 ts/merge-orig-head-doc-fix later to maint).
   (merge 0c83bbc704 rj/freebsd-sysinfo-build-fix later to maint).
   (merge ad7780b38f ps/doc-pack-refs-auto-with-files-backend-fix later to maint).
   (merge f4fa8a3687 rh/doc-glob-pathspec-fix later to maint).
   (merge b27be108c8 ja/doc-git-log-markup later to maint).
   (merge 14d7583beb pw/config-kvi-remove-path later to maint).
   (merge f31abb421d jc/do-not-scan-argv-without-parsing later to maint).
   (merge 26552cb62a jk/unleak-reflog-expire-entry later to maint).
   (merge 339d95fda9 jc/ci-print-test-failures-fix later to maint).
   (merge 8c3add51a8 cb/meson-avoid-broken-macos-pcre2 later to maint).