summaryrefslogtreecommitdiff
path: root/Documentation/RelNotes/2.22.0.txt
blob: d7d230e5398b357d0b26aa4c95cc724e2925392c (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
Git 2.22 Release Notes
======================

Updates since v2.21
-------------------

UI, Workflows & Features

 * "git checkout --no-overlay" can be used to trigger a new mode of
   checking out paths out of the tree-ish, that allows paths that
   match the pathspec that are in the current index and working tree
   and are not in the tree-ish.

 * The %(trailers) formatter in "git log --format=..."  now allows to
   optionally pick trailers selectively by keyword, show only values,
   etc.

 * Four new configuration variables {author,committer}.{name,email}
   have been introduced to override user.{name,email} in more specific
   cases.

 * Command-line completion (in contrib/) learned to tab-complete the
   "git submodule absorbgitdirs" subcommand.

 * "git branch" learned a new subcommand "--show-current".

 * Output from "diff --cc" did not show the original paths when the
   merge involved renames.  A new option adds the paths in the
   original trees to the output.

 * The command line completion (in contrib/) has been taught to
   complete more subcommand parameters.

 * The final report from "git bisect" used to show the suspected
   culprit using a raw "diff-tree", with which there is no output for
   a merge commit.  This has been updated to use a more modern and
   human readable output that still is concise enough.

 * "git rebase --rebase-merges" replaces its old "--preserve-merges"
   option; the latter is now marked as deprecated.

 * Error message given while cloning with --recurse-submodules has
   been updated.

 * The completion helper code now pays attention to repository-local
   configuration (when available), which allows --list-cmds to honour
   a repository specific setting of completion.commands, for example.

 * "git mergetool" learned to offer Sublime Merge (smerge) as one of
   its backends.


Performance, Internal Implementation, Development Support etc.

 * The diff machinery, one of the oldest parts of the system, which
   long predates the parse-options API, uses fairly long and complex
   handcrafted option parser.  This is being rewritten to use the
   parse-options API.

 * The implementation of pack-redundant has been updated for
   performance in a repository with many packfiles.

 * A more structured way to obtain execution trace has been added.

 * "git prune" has been taught to take advantage of reachability
   bitmap when able.

 * The command line parser of "git commit-tree" has been rewritten to
   use the parse-options API.

 * Suggest GitGitGadget instead of submitGit as a way to submit
   patches based on GitHub PR to us.

 * The test framework has been updated to help developers by making it
   easier to run most of the tests under different versions of
   over-the-wire protocols.

 * Dev support update to make it easier to compare two formatted
   results from our documentation.

 * The scripted "git rebase" implementation has been retired.

 * "git multi-pack-index verify" did not scale well with the number of
   packfiles, which is being improved.

 * "git stash" has been rewritten in C.

 * The "check-docs" Makefile target to support developers has been
   updated.

 * The tests have been updated not to rely on the abbreviated option
   names the parse-options API offers, to protect us from an
   abbreviated form of an option that used to be unique within the
   command getting non-unique when a new option that share the same
   prefix is added.


Fixes since v2.21
-----------------

 * "git prune-packed" did not notice and complain against excess
   arguments given from the command line, which now it does.
   (merge 9b0bd87ed2 rj/prune-packed-excess-args later to maint).

 * Split-index fix.
   (merge 6e37c8ed3c nd/split-index-null-base-fix later to maint).

 * "git diff --no-index" may still want to access Git goodies like
   --ext-diff and --textconv, but so far these have been ignored,
   which has been corrected.
   (merge 287ab28bfa jk/diff-no-index-initialize later to maint).

 * Unify RPC code for smart http in protocol v0/v1 and v2, which fixes
   a bug in the latter (lack of authentication retry) and generally
   improves the code base.
   (merge a97d00799a jt/http-auth-proto-v2-fix later to maint).

 * The include file compat/bswap.h has been updated so that it is safe
   to (accidentally) include it more than once.
   (merge 33aa579a55 jk/guard-bswap-header later to maint).

 * The set of header files used by "make hdr-check" unconditionally
   included sha256/gcrypt.h, even when it is not used, causing the
   make target to fail.  We now skip it when GCRYPT_SHA256 is not in
   use.
   (merge f23aa18e7f rj/hdr-check-gcrypt-fix later to maint).

 * The Makefile uses 'find' utility to enumerate all the *.h header
   files, which is expensive on platforms with slow filesystems; it
   now optionally uses "ls-files" if working within a repository,
   which is a trick similar to how all sources are enumerated to run
   ETAGS on.
   (merge 92b88eba9f js/find-lib-h-with-ls-files-when-possible later to maint).

 * "git rebase" that was reimplemented in C did not set ORIG_HEAD
   correctly, which has been corrected.
   (merge cbd29ead92 js/rebase-orig-head-fix later to maint).

 * Dev support.
   (merge f545737144 js/stress-test-ui-tweak later to maint).

 * CFLAGS now can be tweaked when invoking Make while using
   DEVELOPER=YesPlease; this did not work well before.
   (merge 6d5d4b4e93 ab/makefile-help-devs-more later to maint).

 * "git fsck --connectivity-only" omits computation necessary to sift
   the objects that are not reachable from any of the refs into
   unreachable and dangling.  This is now enabled when dangling
   objects are requested (which is done by default, but can be
   overridden with the "--no-dangling" option).
   (merge 8d8c2a5aef jk/fsck-doc later to maint).

 * On platforms where "git fetch" is killed with SIGPIPE (e.g. OSX),
   the upload-pack that runs on the other end that hangs up after
   detecting an error could cause "git fetch" to die with a signal,
   which led to a flakey test.  "git fetch" now ignores SIGPIPE during
   the network portion of its operation (this is not a problem as we
   check the return status from our write(2)s).
   (merge 143588949c jk/no-sigpipe-during-network-transport later to maint).

 * A recent update broke "is this object available to us?" check for
   well-known objects like an empty tree (which should yield "yes",
   even when there is no on-disk object for an empty tree), which has
   been corrected.
   (merge f06ab027ef jk/virtual-objects-do-exist later to maint).

 * The setup code has been cleaned up to avoid leaks around the
   repository_format structure.
   (merge e8805af1c3 ma/clear-repository-format later to maint).

 * "git config --type=color ..." is meant to replace "git config --get-color"
   but there is a slight difference that wasn't documented, which is
   now fixed.
   (merge cd8e7593b9 jk/config-type-color-ends-with-lf later to maint).

 * When the "clean" filter can reduce the size of a huge file in the
   working tree down to a small "token" (a la Git LFS), there is no
   point in allocating a huge scratch area upfront, but the buffer is
   sized based on the original file size.  The convert mechanism now
   allocates very minimum and reallocates as it receives the output
   from the clean filter process.
   (merge 02156ab031 jh/resize-convert-scratch-buffer later to maint).

 * "git rebase" uses the refs/rewritten/ hierarchy to store its
   intermediate states, which inherently makes the hierarchy per
   worktree, but it didn't quite work well.
   (merge b9317d55a3 nd/rewritten-ref-is-per-worktree later to maint).

 * "git log -L<from>,<to>:<path>" with "-s" did not suppress the patch
   output as it should.  This has been corrected.
   (merge 05314efaea jk/line-log-with-patch later to maint).

 * "git worktree add" used to do a "find an available name with stat
   and then mkdir", which is race-prone.  This has been fixed by using
   mkdir and reacting to EEXIST in a loop.
   (merge 7af01f2367 ms/worktree-add-atomic-mkdir later to maint).

 * Build update for SHA-1 with collision detection.
   (merge 07a20f569b jk/sha1dc later to maint).

 * Build procedure has been fixed around use of asciidoctor instead of
   asciidoc.
   (merge 185f9a0ea0 ma/asciidoctor-fixes later to maint).

 * remote-http transport did not anonymize URLs reported in its error
   messages at places.
   (merge c1284b21f2 js/anonymize-remote-curl-diag later to maint).

 * Error messages given from the http transport have been updated so
   that they can be localized.
   (merge ed8b4132c8 js/remote-curl-i18n later to maint).

 * "git init" forgot to read platform-specific repository
   configuration, which made Windows port to ignore settings of
   core.hidedotfiles, for example.

 * A corner-case object name ambiguity while the sequencer machinery
   is working (e.g. "rebase -i -x") has been fixed.

 * "git format-patch" did not diagnose an error while opening the
   output file for the cover-letter, which has been corrected.
   (merge 2fe95f494c jc/format-patch-error-check later to maint).

 * "git checkout -f <branch>" while the index has an unmerged path
   incorrectly left some paths in an unmerged state, which has been
   corrected.

 * A corner case bug in the refs API has been corrected.
   (merge d3322eb28b jk/refs-double-abort later to maint).

 * Unicode update.
   (merge 584b62c37b bb/unicode-12 later to maint).

 * dumb-http walker has been updated to share more error recovery
   strategy with the normal codepath.

 * A buglet in configuration parser has been fixed.
   (merge 19e7fdaa58 nd/include-if-wildmatch later to maint).

 * The documentation for "git read-tree --reset -u" has been updated.
   (merge b5a0bd694c nd/read-tree-reset-doc later to maint).

 * Code cleanup, docfix, build fix, etc.
   (merge 11f470aee7 jc/test-yes-doc later to maint).
   (merge 90503a240b js/doc-symref-in-proto-v1 later to maint).
   (merge 5c326d1252 jk/unused-params later to maint).
   (merge 68cabbfda3 dl/doc-submodule-wo-subcommand later to maint).
   (merge 9903623761 ab/receive-pack-use-after-free-fix later to maint).
   (merge 1ede45e44b en/merge-options-doc later to maint).
   (merge 3e14dd2c8e rd/doc-hook-used-in-sample later to maint).
   (merge c271dc28fd nd/no-more-check-racy later to maint).
   (merge e6e15194a8 yb/utf-16le-bom-spellfix later to maint).
   (merge bb101aaf0c rd/attr.c-comment-typofix later to maint).
   (merge 716a5af812 rd/gc-prune-doc-fix later to maint).
   (merge 50b206371d js/untravis-windows later to maint).
   (merge dbf47215e3 js/rebase-recreate-merge later to maint).
   (merge 56cb2d30f8 dl/reset-doc-no-wrt-abbrev later to maint).
   (merge 64eca306a2 ja/dir-rename-doc-markup-fix later to maint).
   (merge af91b0230c dl/ignore-docs later to maint).
   (merge 59a06e947b ra/t3600-test-path-funcs later to maint).
   (merge e041d0781b ar/t4150-remove-cruft later to maint).
   (merge 8d75a1d183 ma/asciidoctor-fixes-more later to maint).
   (merge 74cc547b0f mh/pack-protocol-doc-fix later to maint).
   (merge ed31851fa6 ab/doc-misc-typofixes later to maint).
   (merge a7256debd4 nd/checkout-m-doc-update later to maint).
   (merge 3a9e1ad78d jt/t5551-protocol-v2-does-not-have-half-auth later to maint).
   (merge 0b918b75af sg/t5318-cleanup later to maint).
   (merge 68ed71b53c cb/doco-mono later to maint).
   (merge a34dca2451 nd/interpret-trailers-docfix later to maint).