Sixth batch
[git/git.git] / Documentation / RelNotes / 2.24.0.txt
1 Git 2.24 Release Notes
2 ======================
3
4 Updates since v2.23
5 -------------------
6
7 Backward compatibility note
8
9 * Although it is not officially deprecated, "filter-branch" is
10 showing its age and alternatives are available. From this release,
11 we started to discourage its uses and hint people about
12 filter-repo.
13
14 UI, Workflows & Features
15
16 * We now have an active interim maintainer for the Git-Gui part of
17 the system. Praise and thank Pratyush Yadav for volunteering.
18
19 * The command line parser learned "--end-of-options" notation; the
20 standard convention for scripters to have hardcoded set of options
21 first on the command line, and force the command to treat end-user
22 input as non-options, has been to use "--" as the delimiter, but
23 that would not work for commands that use "--" as a delimiter
24 between revs and pathspec.
25
26 * A mechanism to affect the default setting for a (related) group of
27 configuration variables is introduced.
28
29 * "git fetch" learned "--set-upstream" option to help those who first
30 clone from their private fork they intend to push to, add the true
31 upstream via "git remote add" and then "git fetch" from it.
32
33 * Device-tree files learned their own userdiff patterns.
34 (merge 3c81760bc6 sb/userdiff-dts later to maint).
35
36 * "git rebase --rebase-merges" learned to drive different merge
37 strategies and pass strategy specific options to them.
38
39 * A new "pre-merge-commit" hook has been introduced.
40
41 * Command line completion updates for "git -c var.name=val" have been
42 added.
43
44 * The lazy clone machinery has been taught that there can be more
45 than one promisor remote and consult them in order when downloading
46 missing objects on demand.
47
48 * The list-objects-filter API (used to create a sparse/lazy clone)
49 learned to take a combined filter specification.
50
51 * The documentation and tests for "git format-patch" have been
52 cleaned up.
53
54 * On Windows, the root level of UNC share is now allowed to be used
55 just like any other directory.
56
57 * The command line completion support (in contrib/) learned about the
58 "--skip" option of "git revert" and "git cherry-pick".
59
60 * "git rebase --keep-base <upstream>" tries to find the original base
61 of the topic being rebased and rebase on top of that same base,
62 which is useful when running the "git rebase -i" (and its limited
63 variant "git rebase -x").
64
65 The command also has learned to fast-forward in more cases where it
66 can instead of replaying to recreate identical commits.
67
68 * A configuration variable tells "git fetch" to write the commit
69 graph after finishing.
70
71
72 Performance, Internal Implementation, Development Support etc.
73
74 * The code to write commit-graph over given commit object names has
75 been made a bit more robust.
76
77 * The first line of verbose output from each test piece now carries
78 the test name and number to help scanning with eyeballs.
79
80 * Further clean-up of the initialization code.
81
82 * xmalloc() used to have a mechanism to ditch memory and address
83 space resources as the last resort upon seeing an allocation
84 failure from the underlying malloc(), which made the code complex
85 and thread-unsafe with dubious benefit, as major memory resource
86 users already do limit their uses with various other mechanisms.
87 It has been simplified away.
88
89 * Unnecessary full-tree diff in "git log -L" machinery has been
90 optimized away.
91
92 * The http transport lacked some optimization the native transports
93 learned to avoid unnecessary ref advertisement, which has been
94 corrected.
95
96 * Preparation for SHA-256 upgrade continues in the test department.
97 (merge 0c37c41d13 bc/hash-independent-tests-part-5 later to maint).
98
99 * The memory ownership model of the "git fast-import" got
100 straightened out.
101
102 * Output from trace2 subsystem is formatted more prettily now.
103
104 * The internal code originally invented for ".gitignore" processing
105 got reshuffled and renamed to make it less tied to "excluding" and
106 stress more that it is about "matching", as it has been reused for
107 things like sparse checkout specification that want to check if a
108 path is "included".
109
110 * "git stash" learned to write refreshed index back to disk.
111
112 * Coccinelle checks are done on more source files than before now.
113
114 * The cache-tree code has been taught to be less aggressive in
115 attempting to see if a tree object it computed already exists in
116 the repository.
117
118 * The code to parse and use the commit-graph file has been made more
119 robust against corrupted input.
120
121 * The hg-to-git script (in contrib/) has been updated to work with
122 Python 3.
123
124 * Update the way build artifacts in t/helper/ directory are ignored.
125
126
127 Fixes since v2.23
128 -----------------
129
130 * "git grep --recurse-submodules" that looks at the working tree
131 files looked at the contents in the index in submodules, instead of
132 files in the working tree.
133 (merge 6a289d45c0 mt/grep-submodules-working-tree later to maint).
134
135 * Codepaths to walk tree objects have been audited for integer
136 overflows and hardened.
137 (merge 5aa02f9868 jk/tree-walk-overflow later to maint).
138
139 * "git pack-refs" can lose refs that are created while running, which
140 is getting corrected.
141 (merge a613d4f817 sc/pack-refs-deletion-racefix later to maint).
142
143 * "git checkout" and "git restore" to re-populate the index from a
144 tree-ish (typically HEAD) did not work correctly for a path that
145 was removed and then added again with the intent-to-add bit, when
146 the corresponding working tree file was empty. This has been
147 corrected.
148
149 * Compilation fix.
150 (merge 70597e8386 rs/nedalloc-fixlets later to maint).
151
152 * "git gui" learned to call the clean-up procedure before exiting.
153 (merge 0d88f3d2c5 py/git-gui-do-quit later to maint).
154
155 * We promoted the "indent heuristics" that decides where to split
156 diff hunks from experimental to the default a few years ago, but
157 some stale documentation still marked it as experimental, which has
158 been corrected.
159 (merge 64e5e1fba1 sg/diff-indent-heuristic-non-experimental later to maint).
160
161 * Fix a mismerge that happened in 2.22 timeframe.
162 (merge acb7da05ac en/checkout-mismerge-fix later to maint).
163
164 * "git archive" recorded incorrect length in extended pax header in
165 some corner cases, which has been corrected.
166 (merge 71d41ff651 rs/pax-extended-header-length-fix later to maint).
167
168 * On-demand object fetching in lazy clone incorrectly tried to fetch
169 commits from submodule projects, while still working in the
170 superproject, which has been corrected.
171 (merge a63694f523 jt/diff-lazy-fetch-submodule-fix later to maint).
172
173 * Prepare get_short_oid() codepath to be thread-safe.
174 (merge 7cfcb16b0e rs/sort-oid-array-thread-safe later to maint).
175
176 * "for-each-ref" and friends that show refs did not protect themselves
177 against ancient tags that did not record tagger names when asked to
178 show "%(taggername)", which have been corrected.
179 (merge 8b3f33ef11 mp/for-each-ref-missing-name-or-email later to maint).
180
181 * The "git am" based backend of "git rebase" ignored the result of
182 updating ".gitattributes" done in one step when replaying
183 subsequent steps.
184 (merge 2c65d90f75 bc/reread-attributes-during-rebase later to maint).
185
186 * Tell cURL library to use the same malloc() implementation, with the
187 xmalloc() wrapper, as the rest of the system, for consistency.
188 (merge 93b980e58f cb/curl-use-xmalloc later to maint).
189
190 * Build fix to adjust .gitignore to unignore a path that we started to track.
191 (merge aac6ff7b5b js/visual-studio later to maint).
192
193 * A few implementation fixes in the notes API.
194 (merge 60fe477a0b mh/notes-duplicate-entries later to maint).
195
196 * Fix an earlier regression to "git push --all" which should have
197 been forbidden when the target remote repository is set to be a
198 mirror.
199 (merge 8e4c8af058 tg/push-all-in-mirror-forbidden later to maint).
200
201 * Fix an earlier regression in the test suite, which mistakenly
202 stopped running HTTPD tests.
203 (merge 3960290675 sg/git-test-boolean later to maint).
204
205 * "git rebase --autostash <upstream> <branch>", when <branch> is
206 different from the current branch, incorrectly moved the tip of the
207 current branch, which has been corrected.
208 (merge bf1e28e0ad bw/rebase-autostash-keep-current-branch later to maint).
209
210 * Update support for Asciidoctor documentation toolchain.
211 (merge 83b0b8953e ma/asciidoctor-refmiscinfo later to maint).
212
213 * Start using DocBook 5 (instead of DocBook 4.5) as Asciidoctor 2.0
214 no longer works with the older one.
215 (merge f6461b82b9 bc/doc-use-docbook-5 later to maint).
216
217 * The markup used in user-manual has been updated to work better with
218 asciidoctor.
219 (merge c4d2f6143a ma/user-manual-markup-update later to maint).
220
221 * Make sure the grep machinery does not abort when seeing a payload
222 that is not UTF-8 even when JIT is not in use with PCRE1.
223 (merge ad7c543e3b cb/skip-utf8-check-with-pcre1 later to maint).
224
225 * The name of the blob object that stores the filter specification
226 for sparse cloning/fetching was interpreted in a wrong place in the
227 code, causing Git to abort.
228
229 * "git log --decorate-refs-exclude=<pattern>" was incorrectly
230 overruled when the "--simplify-by-decoration" option is used, which
231 has been corrected.
232 (merge 0cc7380d88 rs/simplify-by-deco-with-deco-refs-exclude later to maint).
233
234 * The "upload-pack" (the counterpart of "git fetch") needs to disable
235 commit-graph when responding to a shallow clone/fetch request, but
236 the way this was done made Git panic, which has been corrected.
237
238 * The object traversal machinery has been optimized not to load tree
239 objects when we are only interested in commit history.
240 (merge 72ed80c784 jk/list-objects-optim-wo-trees later to maint).
241
242 * The object name parser for "Nth parent" syntax has been made more
243 robust against integer overflows.
244 (merge 59fa5f5a25 rs/nth-parent-parse later to maint).
245
246 * The code used in following tags in "git fetch" has been optimized.
247 (merge b7e2d8bca5 ms/fetch-follow-tag-optim later to maint).
248
249 * Regression fix for progress output.
250 (merge 2bb74b53a4 sg/progress-fix later to maint).
251
252 * A bug in merge-recursive code that triggers when a branch with a
253 symbolic link is merged with a branch that replaces it with a
254 directory has been fixed.
255 (merge 83e3ad3b12 jt/merge-recursive-symlink-is-not-a-dir-in-way later to maint).
256
257 * Other code cleanup, docfix, build fix, etc.
258 (merge d1387d3895 en/fast-import-merge-doc later to maint).
259 (merge 1c24a54ea4 bm/repository-layout-typofix later to maint).
260 (merge 415b770b88 ds/midx-expire-repack later to maint).
261 (merge 19800bdc3f nd/diff-parseopt later to maint).
262 (merge 58166c2e9d tg/t0021-racefix later to maint).
263 (merge 7027f508c7 dl/compat-cleanup later to maint).
264 (merge e770fbfeff jc/test-cleanup later to maint).
265 (merge 1fd881d404 rs/trace2-dst-warning later to maint).
266 (merge 7e92756751 mh/http-urlmatch-cleanup later to maint).
267 (merge 9784f97321 mh/release-commit-memory-fix later to maint).
268 (merge 60d198d022 tb/banned-vsprintf-namefix later to maint).
269 (merge 80e3658647 rs/help-unknown-ref-does-not-return later to maint).
270 (merge 0a8bc7068f dt/remote-helper-doc-re-lock-option later to maint).
271 (merge 27fd1e4ea7 en/merge-options-ff-and-friends later to maint).
272 (merge 502c386ff9 sg/clean-nested-repo-with-ignored later to maint).
273 (merge 26e3d1cbea am/mailmap-andrey-mazo later to maint).
274 (merge 47b27c96fa ss/get-time-cleanup later to maint).
275 (merge dd2e50a84e jk/commit-graph-cleanup later to maint).
276 (merge 4fd39c76e6 cs/pretty-formats-doc-typofix later to maint).
277 (merge 40e747e89d dl/submodule-set-branch later to maint).
278 (merge 689a146c91 rs/commit-graph-use-list-count later to maint).
279 (merge 0eb7c37a8a js/doc-patch-text later to maint).
280 (merge 4b3aa170d1 rs/nth-switch-code-simplification later to maint).
281 (merge 0d4304c124 ah/doc-submodule-ignore-submodules later to maint).
282 (merge af78249463 cc/svn-fe-py-shebang later to maint).
283 (merge 7bd97d6dff rs/alias-use-copy-array later to maint).
284 (merge c46ebc2496 sg/travis-help-debug later to maint).
285 (merge 24c681794f ps/my-first-contribution-alphasort later to maint).
286 (merge 75b2c15435 cb/do-not-use-test-cmp-with-a later to maint).
287 (merge cda0d497e3 bw/submodule-helper-usage-fix later to maint).