]>
Commit | Line | Data |
---|---|---|
745f6812 JH |
1 | Git 2.24 Release Notes |
2 | ====================== | |
3 | ||
4 | Updates since v2.23 | |
5 | ------------------- | |
6 | ||
7 | Backward compatibility note | |
8 | ||
bc12974a JH |
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. | |
745f6812 JH |
13 | |
14 | UI, Workflows & Features | |
15 | ||
4c861400 JH |
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 | ||
f1d4a282 JH |
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). | |
745f6812 | 35 | |
4c861400 JH |
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 | ||
bc12974a JH |
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 | ||
08da6496 JH |
71 | * "git add -i" has been taught to show the total number of hunks and |
72 | the hunks that has been processed so far when showing prompts. | |
73 | ||
745f6812 JH |
74 | |
75 | Performance, Internal Implementation, Development Support etc. | |
76 | ||
77 | * The code to write commit-graph over given commit object names has | |
78 | been made a bit more robust. | |
79 | ||
80 | * The first line of verbose output from each test piece now carries | |
81 | the test name and number to help scanning with eyeballs. | |
82 | ||
f1d4a282 JH |
83 | * Further clean-up of the initialization code. |
84 | ||
4c861400 JH |
85 | * xmalloc() used to have a mechanism to ditch memory and address |
86 | space resources as the last resort upon seeing an allocation | |
87 | failure from the underlying malloc(), which made the code complex | |
88 | and thread-unsafe with dubious benefit, as major memory resource | |
89 | users already do limit their uses with various other mechanisms. | |
90 | It has been simplified away. | |
91 | ||
92 | * Unnecessary full-tree diff in "git log -L" machinery has been | |
93 | optimized away. | |
94 | ||
95 | * The http transport lacked some optimization the native transports | |
96 | learned to avoid unnecessary ref advertisement, which has been | |
97 | corrected. | |
98 | ||
bc12974a JH |
99 | * Preparation for SHA-256 upgrade continues in the test department. |
100 | (merge 0c37c41d13 bc/hash-independent-tests-part-5 later to maint). | |
101 | ||
102 | * The memory ownership model of the "git fast-import" got | |
103 | straightened out. | |
104 | ||
105 | * Output from trace2 subsystem is formatted more prettily now. | |
106 | ||
107 | * The internal code originally invented for ".gitignore" processing | |
108 | got reshuffled and renamed to make it less tied to "excluding" and | |
109 | stress more that it is about "matching", as it has been reused for | |
110 | things like sparse checkout specification that want to check if a | |
111 | path is "included". | |
112 | ||
b744c3af JH |
113 | * "git stash" learned to write refreshed index back to disk. |
114 | ||
115 | * Coccinelle checks are done on more source files than before now. | |
116 | ||
117 | * The cache-tree code has been taught to be less aggressive in | |
118 | attempting to see if a tree object it computed already exists in | |
119 | the repository. | |
120 | ||
121 | * The code to parse and use the commit-graph file has been made more | |
122 | robust against corrupted input. | |
123 | ||
124 | * The hg-to-git script (in contrib/) has been updated to work with | |
125 | Python 3. | |
126 | ||
127 | * Update the way build artifacts in t/helper/ directory are ignored. | |
bc12974a | 128 | |
08da6496 JH |
129 | * Preparation for SHA-256 upgrade continues. |
130 | ||
745f6812 JH |
131 | |
132 | Fixes since v2.23 | |
133 | ----------------- | |
134 | ||
135 | * "git grep --recurse-submodules" that looks at the working tree | |
136 | files looked at the contents in the index in submodules, instead of | |
137 | files in the working tree. | |
138 | (merge 6a289d45c0 mt/grep-submodules-working-tree later to maint). | |
139 | ||
140 | * Codepaths to walk tree objects have been audited for integer | |
141 | overflows and hardened. | |
142 | (merge 5aa02f9868 jk/tree-walk-overflow later to maint). | |
143 | ||
144 | * "git pack-refs" can lose refs that are created while running, which | |
145 | is getting corrected. | |
146 | (merge a613d4f817 sc/pack-refs-deletion-racefix later to maint). | |
147 | ||
148 | * "git checkout" and "git restore" to re-populate the index from a | |
149 | tree-ish (typically HEAD) did not work correctly for a path that | |
150 | was removed and then added again with the intent-to-add bit, when | |
151 | the corresponding working tree file was empty. This has been | |
152 | corrected. | |
153 | ||
154 | * Compilation fix. | |
155 | (merge 70597e8386 rs/nedalloc-fixlets later to maint). | |
156 | ||
f1d4a282 JH |
157 | * "git gui" learned to call the clean-up procedure before exiting. |
158 | (merge 0d88f3d2c5 py/git-gui-do-quit later to maint). | |
159 | ||
160 | * We promoted the "indent heuristics" that decides where to split | |
161 | diff hunks from experimental to the default a few years ago, but | |
162 | some stale documentation still marked it as experimental, which has | |
163 | been corrected. | |
164 | (merge 64e5e1fba1 sg/diff-indent-heuristic-non-experimental later to maint). | |
165 | ||
166 | * Fix a mismerge that happened in 2.22 timeframe. | |
167 | (merge acb7da05ac en/checkout-mismerge-fix later to maint). | |
168 | ||
169 | * "git archive" recorded incorrect length in extended pax header in | |
170 | some corner cases, which has been corrected. | |
171 | (merge 71d41ff651 rs/pax-extended-header-length-fix later to maint). | |
172 | ||
173 | * On-demand object fetching in lazy clone incorrectly tried to fetch | |
174 | commits from submodule projects, while still working in the | |
175 | superproject, which has been corrected. | |
176 | (merge a63694f523 jt/diff-lazy-fetch-submodule-fix later to maint). | |
177 | ||
178 | * Prepare get_short_oid() codepath to be thread-safe. | |
179 | (merge 7cfcb16b0e rs/sort-oid-array-thread-safe later to maint). | |
180 | ||
181 | * "for-each-ref" and friends that show refs did not protect themselves | |
182 | against ancient tags that did not record tagger names when asked to | |
183 | show "%(taggername)", which have been corrected. | |
184 | (merge 8b3f33ef11 mp/for-each-ref-missing-name-or-email later to maint). | |
185 | ||
186 | * The "git am" based backend of "git rebase" ignored the result of | |
187 | updating ".gitattributes" done in one step when replaying | |
188 | subsequent steps. | |
189 | (merge 2c65d90f75 bc/reread-attributes-during-rebase later to maint). | |
190 | ||
4c861400 JH |
191 | * Tell cURL library to use the same malloc() implementation, with the |
192 | xmalloc() wrapper, as the rest of the system, for consistency. | |
193 | (merge 93b980e58f cb/curl-use-xmalloc later to maint). | |
194 | ||
bc12974a JH |
195 | * Build fix to adjust .gitignore to unignore a path that we started to track. |
196 | (merge aac6ff7b5b js/visual-studio later to maint). | |
197 | ||
198 | * A few implementation fixes in the notes API. | |
199 | (merge 60fe477a0b mh/notes-duplicate-entries later to maint). | |
200 | ||
201 | * Fix an earlier regression to "git push --all" which should have | |
202 | been forbidden when the target remote repository is set to be a | |
203 | mirror. | |
204 | (merge 8e4c8af058 tg/push-all-in-mirror-forbidden later to maint). | |
205 | ||
206 | * Fix an earlier regression in the test suite, which mistakenly | |
207 | stopped running HTTPD tests. | |
208 | (merge 3960290675 sg/git-test-boolean later to maint). | |
209 | ||
210 | * "git rebase --autostash <upstream> <branch>", when <branch> is | |
211 | different from the current branch, incorrectly moved the tip of the | |
212 | current branch, which has been corrected. | |
213 | (merge bf1e28e0ad bw/rebase-autostash-keep-current-branch later to maint). | |
214 | ||
c90b652a JH |
215 | * Update support for Asciidoctor documentation toolchain. |
216 | (merge 83b0b8953e ma/asciidoctor-refmiscinfo later to maint). | |
217 | ||
218 | * Start using DocBook 5 (instead of DocBook 4.5) as Asciidoctor 2.0 | |
219 | no longer works with the older one. | |
220 | (merge f6461b82b9 bc/doc-use-docbook-5 later to maint). | |
221 | ||
222 | * The markup used in user-manual has been updated to work better with | |
223 | asciidoctor. | |
224 | (merge c4d2f6143a ma/user-manual-markup-update later to maint). | |
225 | ||
226 | * Make sure the grep machinery does not abort when seeing a payload | |
227 | that is not UTF-8 even when JIT is not in use with PCRE1. | |
228 | (merge ad7c543e3b cb/skip-utf8-check-with-pcre1 later to maint). | |
229 | ||
b744c3af JH |
230 | * The name of the blob object that stores the filter specification |
231 | for sparse cloning/fetching was interpreted in a wrong place in the | |
232 | code, causing Git to abort. | |
233 | ||
234 | * "git log --decorate-refs-exclude=<pattern>" was incorrectly | |
235 | overruled when the "--simplify-by-decoration" option is used, which | |
236 | has been corrected. | |
237 | (merge 0cc7380d88 rs/simplify-by-deco-with-deco-refs-exclude later to maint). | |
238 | ||
239 | * The "upload-pack" (the counterpart of "git fetch") needs to disable | |
240 | commit-graph when responding to a shallow clone/fetch request, but | |
241 | the way this was done made Git panic, which has been corrected. | |
242 | ||
243 | * The object traversal machinery has been optimized not to load tree | |
244 | objects when we are only interested in commit history. | |
245 | (merge 72ed80c784 jk/list-objects-optim-wo-trees later to maint). | |
246 | ||
247 | * The object name parser for "Nth parent" syntax has been made more | |
248 | robust against integer overflows. | |
249 | (merge 59fa5f5a25 rs/nth-parent-parse later to maint). | |
250 | ||
251 | * The code used in following tags in "git fetch" has been optimized. | |
252 | (merge b7e2d8bca5 ms/fetch-follow-tag-optim later to maint). | |
253 | ||
254 | * Regression fix for progress output. | |
255 | (merge 2bb74b53a4 sg/progress-fix later to maint). | |
256 | ||
257 | * A bug in merge-recursive code that triggers when a branch with a | |
258 | symbolic link is merged with a branch that replaces it with a | |
259 | directory has been fixed. | |
260 | (merge 83e3ad3b12 jt/merge-recursive-symlink-is-not-a-dir-in-way later to maint). | |
261 | ||
70bf0b75 JH |
262 | * The rename detection logic sorts a list of rename source candidates |
263 | by similarity to pick the best candidate, which means that a tie | |
264 | between sources with the same similarity is broken by the original | |
265 | location in the original candidate list (which is sorted by path). | |
266 | Force the sorting by similarity done with a stable sort, which is | |
267 | not promised by system supplied qsort(3), to ensure consistent | |
268 | results across platforms. | |
269 | (merge 2049b8dc65 js/diff-rename-force-stable-sort later to maint). | |
270 | ||
271 | * The code to skip "UTF" and "UTF-" prefix, when computing an advice | |
272 | message, did not work correctly when the prefix was "UTF", which | |
273 | has been fixed. | |
274 | (merge b181676ce9 rs/convert-fix-utf-without-dash later to maint). | |
275 | ||
08da6496 JH |
276 | * The author names taken from SVN repositories may have extra leading |
277 | or trailing whitespaces, which are now munged away. | |
278 | (merge 4ddd4bddb1 tk/git-svn-trim-author-name later to maint). | |
279 | ||
280 | * "git rebase -i" showed a wrong HEAD while "reword" open the editor. | |
281 | (merge b0a3186140 pw/rebase-i-show-HEAD-to-reword later to maint). | |
282 | ||
283 | * A few simplification and bugfixes to PCRE interface. | |
284 | (merge c581e4a749 ab/pcre-jit-fixes later to maint). | |
285 | ||
286 | * PCRE fixes. | |
287 | (merge ff61681b46 cb/pcre1-cleanup later to maint). | |
288 | ||
289 | * "git range-diff" segfaulted when diff.noprefix configuration was | |
290 | used, as it blindly expected the patch it internally generates to | |
291 | have the standard a/ and b/ prefixes. The command now forces the | |
292 | internal patch to be built without any prefix, not to be affected | |
293 | by any end-user configuration. | |
294 | (merge 937b76ed49 js/range-diff-noprefix later to maint). | |
295 | ||
296 | * "git stash apply" in a subdirectory of a secondary worktree failed | |
297 | to access the worktree correctly, which has been corrected. | |
298 | (merge dfd557c978 js/stash-apply-in-secondary-worktree later to maint). | |
299 | ||
745f6812 JH |
300 | * Other code cleanup, docfix, build fix, etc. |
301 | (merge d1387d3895 en/fast-import-merge-doc later to maint). | |
f1d4a282 JH |
302 | (merge 1c24a54ea4 bm/repository-layout-typofix later to maint). |
303 | (merge 415b770b88 ds/midx-expire-repack later to maint). | |
304 | (merge 19800bdc3f nd/diff-parseopt later to maint). | |
305 | (merge 58166c2e9d tg/t0021-racefix later to maint). | |
bc12974a JH |
306 | (merge 7027f508c7 dl/compat-cleanup later to maint). |
307 | (merge e770fbfeff jc/test-cleanup later to maint). | |
308 | (merge 1fd881d404 rs/trace2-dst-warning later to maint). | |
309 | (merge 7e92756751 mh/http-urlmatch-cleanup later to maint). | |
310 | (merge 9784f97321 mh/release-commit-memory-fix later to maint). | |
311 | (merge 60d198d022 tb/banned-vsprintf-namefix later to maint). | |
312 | (merge 80e3658647 rs/help-unknown-ref-does-not-return later to maint). | |
313 | (merge 0a8bc7068f dt/remote-helper-doc-re-lock-option later to maint). | |
314 | (merge 27fd1e4ea7 en/merge-options-ff-and-friends later to maint). | |
315 | (merge 502c386ff9 sg/clean-nested-repo-with-ignored later to maint). | |
c90b652a | 316 | (merge 26e3d1cbea am/mailmap-andrey-mazo later to maint). |
b744c3af JH |
317 | (merge 47b27c96fa ss/get-time-cleanup later to maint). |
318 | (merge dd2e50a84e jk/commit-graph-cleanup later to maint). | |
319 | (merge 4fd39c76e6 cs/pretty-formats-doc-typofix later to maint). | |
320 | (merge 40e747e89d dl/submodule-set-branch later to maint). | |
321 | (merge 689a146c91 rs/commit-graph-use-list-count later to maint). | |
322 | (merge 0eb7c37a8a js/doc-patch-text later to maint). | |
323 | (merge 4b3aa170d1 rs/nth-switch-code-simplification later to maint). | |
324 | (merge 0d4304c124 ah/doc-submodule-ignore-submodules later to maint). | |
325 | (merge af78249463 cc/svn-fe-py-shebang later to maint). | |
326 | (merge 7bd97d6dff rs/alias-use-copy-array later to maint). | |
327 | (merge c46ebc2496 sg/travis-help-debug later to maint). | |
328 | (merge 24c681794f ps/my-first-contribution-alphasort later to maint). | |
329 | (merge 75b2c15435 cb/do-not-use-test-cmp-with-a later to maint). | |
330 | (merge cda0d497e3 bw/submodule-helper-usage-fix later to maint). | |
70bf0b75 JH |
331 | (merge fe0ed5d5e9 am/visual-studio-config-fix later to maint). |
332 | (merge 2e09c01232 sg/name-rev-cutoff-underflow-fix later to maint). | |
333 | (merge ddb3c856f3 as/shallow-slab-use-fix later to maint). | |
334 | (merge 71f4960b91 js/mingw-spawn-with-spaces-in-path later to maint). | |
335 | (merge 53d687bf5f ah/cleanups later to maint). | |
336 | (merge f537485fa5 rs/test-remove-useless-debugging-cat later to maint). | |
08da6496 | 337 | (merge 11a3d3aadd dl/rev-list-doc-cleanup later to maint). |