]>
Commit | Line | Data |
---|---|---|
0aae918d JH |
1 | Git 2.23 Release Notes |
2 | ====================== | |
3 | ||
4 | Updates since v2.22 | |
5 | ------------------- | |
6 | ||
7 | Backward compatibility note | |
8 | ||
9 | * The "--base" option of "format-patch" computed the patch-ids for | |
10 | prerequisite patches in an unstable way, which has been updated to | |
11 | compute in a way that is compatible with "git patch-id --stable". | |
12 | ||
7ed20f59 JH |
13 | * The "git log" command by default behaves as if the --mailmap option |
14 | was given. | |
15 | ||
0aae918d JH |
16 | |
17 | UI, Workflows & Features | |
18 | ||
19 | * The "git fast-export/import" pair has been taught to handle commits | |
20 | with log messages in encoding other than UTF-8 better. | |
21 | ||
22 | * In recent versions of Git, per-worktree refs are exposed in | |
23 | refs/worktrees/<wtname>/ hierarchy, which means that worktree names | |
24 | must be a valid refname component. The code now sanitizes the names | |
25 | given to worktrees, to make sure these refs are well-formed. | |
26 | ||
27 | * "git merge" learned "--quit" option that cleans up the in-progress | |
28 | merge while leaving the working tree and the index still in a mess. | |
29 | ||
30 | * "git format-patch" learns a configuration to set the default for | |
31 | its --notes=<ref> option. | |
32 | ||
33 | * The code to show args with potential typo that cannot be | |
34 | interpreted as a commit-ish has been improved. | |
35 | ||
a6a95cd1 JH |
36 | * "git clone --recurse-submodules" learned to set up the submodules |
37 | to ignore commit object names recorded in the superproject gitlink | |
38 | and instead use the commits that happen to be at the tip of the | |
39 | remote-tracking branches from the get-go, by passing the new | |
40 | "--remote-submodules" option. | |
41 | ||
42 | * The pattern "git diff/grep" use to extract funcname and words | |
43 | boundary for Matlab has been extend to cover Octave, which is more | |
44 | or less equivalent. | |
45 | ||
46 | * "git help git" was hard to discover (well, at least for some | |
47 | people). | |
48 | ||
8dca754b JH |
49 | * The pattern "git diff/grep" use to extract funcname and words |
50 | boundary for Rust has been added. | |
51 | ||
6d5b2642 JH |
52 | * "git status" can be told a non-standard default value for the |
53 | "--[no-]ahead-behind" option with a new configuration variable | |
54 | status.aheadBehind. | |
55 | ||
56 | * "git fetch" and "git pull" reports when a fetch results in | |
57 | non-fast-forward updates to let the user notice unusual situation. | |
a45f5314 | 58 | The commands learned "--no-show-forced-updates" option to disable |
6d5b2642 JH |
59 | this safety feature. |
60 | ||
61 | * Two new commands "git switch" and "git restore" are introduced to | |
62 | split "checking out a branch to work on advancing its history" and | |
63 | "checking out paths out of the index and/or a tree-ish to work on | |
64 | advancing the current history" out of the single "git checkout" | |
65 | command. | |
66 | ||
67 | * "git branch --list" learned to always output the detached HEAD as | |
68 | the first item (when the HEAD is detached, of course), regardless | |
69 | of the locale. | |
70 | ||
71 | * The conditional inclusion mechanism learned to base the choice on | |
72 | the branch the HEAD currently is on. | |
73 | ||
a45f5314 | 74 | * "git rev-list --objects" learned the "--no-object-names" option to |
6d5b2642 JH |
75 | squelch the path to the object that is used as a grouping hint for |
76 | pack-objects. | |
77 | ||
78 | * A new tag.gpgSign configuration variable turns "git tag -a" into | |
79 | "git tag -s". | |
80 | ||
9c9b961d JH |
81 | * "git multi-pack-index" learned expire and repack subcommands. |
82 | ||
83 | * "git blame" learned to "ignore" commits in the history, whose | |
84 | effects (as well as their presence) get ignored. | |
85 | ||
86 | * "git cherry-pick/revert" learned a new "--skip" action. | |
87 | ||
88 | * The tips of refs from the alternate object store can be used as | |
89 | starting point for reachability computation now. | |
90 | ||
91 | * Extra blank lines in "git status" output have been reduced. | |
92 | ||
93 | * The commits in a repository can be described by multiple | |
94 | commit-graph files now, which allows the commit-graph files to be | |
95 | updated incrementally. | |
96 | ||
7b974e3e JH |
97 | * "git range-diff" output has been tweaked for easier identification |
98 | of which part of what file the patch shown is about. | |
99 | ||
0aae918d JH |
100 | |
101 | Performance, Internal Implementation, Development Support etc. | |
102 | ||
103 | * Update supporting parts of "git rebase" to remove code that should | |
104 | no longer be used. | |
105 | ||
106 | * Developer support to emulate unsatisfied prerequisites in tests to | |
a45f5314 | 107 | ensure that the remainder of the tests still succeeds when tests |
0aae918d JH |
108 | with prerequisites are skipped. |
109 | ||
110 | * "git update-server-info" learned not to rewrite the file with the | |
111 | same contents. | |
112 | ||
113 | * The way of specifying the path to find dynamic libraries at runtime | |
114 | has been simplified. The old default to pass -R/path/to/dir has been | |
115 | replaced with the new default to pass -Wl,-rpath,/path/to/dir, | |
116 | which is the more recent GCC uses. Those who need to build with an | |
117 | old GCC can still use "CC_LD_DYNPATH=-R" | |
118 | ||
a6a95cd1 JH |
119 | * Prepare use of reachability index in topological walker that works |
120 | on a range (A..B). | |
121 | ||
a45f5314 | 122 | * A new tutorial targeting specifically aspiring git-core |
a6a95cd1 JH |
123 | developers has been added. |
124 | ||
6d5b2642 JH |
125 | * Auto-detect how to tell HP-UX aCC where to use dynamically linked |
126 | libraries from at runtime. | |
127 | ||
128 | * "git mergetool" and its tests now spawn fewer subprocesses. | |
129 | ||
130 | * Dev support update to help tracing out tests. | |
131 | ||
132 | * Support to build with MSVC has been updated. | |
133 | ||
134 | * "git fetch" that grabs from a group of remotes learned to run the | |
135 | auto-gc only once at the very end. | |
a6a95cd1 | 136 | |
9d418600 JH |
137 | * A handful of Windows build patches have been upstreamed. |
138 | ||
9c9b961d JH |
139 | * The code to read state files used by the sequencer machinery for |
140 | "git status" has been made more robust against a corrupt or stale | |
141 | state files. | |
142 | ||
143 | * "git for-each-ref" with multiple patterns have been optimized. | |
144 | ||
145 | * The tree-walk API learned to pass an in-core repository | |
146 | instance throughout more codepaths. | |
147 | ||
148 | * When one step in multi step cherry-pick or revert is reset or | |
149 | committed, the command line prompt script failed to notice the | |
150 | current status, which has been improved. | |
151 | ||
7b974e3e JH |
152 | * Many GIT_TEST_* environment variables control various aspects of |
153 | how our tests are run, but a few followed "non-empty is true, empty | |
154 | or unset is false" while others followed the usual "there are a few | |
155 | ways to spell true, like yes, on, etc., and also ways to spell | |
156 | false, like no, off, etc." convention. | |
157 | ||
158 | * Adjust the dir-iterator API and apply it to the local clone | |
159 | optimization codepath. | |
160 | ||
161 | * We have been trying out a few language features outside c89; the | |
162 | coding guidelines document did not talk about them and instead had | |
163 | a blanket ban against them. | |
7b974e3e JH |
164 | |
165 | * A test helper has been introduced to optimize preparation of test | |
166 | repositories with many simple commits, and a handful of test | |
167 | scripts have been updated to use it. | |
168 | ||
0aae918d JH |
169 | |
170 | Fixes since v2.22 | |
171 | ----------------- | |
172 | ||
173 | * A relative pathname given to "git init --template=<path> <repo>" | |
174 | ought to be relative to the directory "git init" gets invoked in, | |
175 | but it instead was made relative to the repository, which has been | |
176 | corrected. | |
0aae918d JH |
177 | |
178 | * "git worktree add" used to fail when another worktree connected to | |
179 | the same repository was corrupt, which has been corrected. | |
0aae918d JH |
180 | |
181 | * The ownership rule for the file descriptor to fast-import remote | |
a45f5314 | 182 | backend was mixed up, leading to an unrelated file descriptor getting |
0aae918d | 183 | closed, which has been fixed. |
0aae918d JH |
184 | |
185 | * A "merge -c" instruction during "git rebase --rebase-merges" should | |
186 | give the user a chance to edit the log message, even when there is | |
187 | otherwise no need to create a new merge and replace the existing | |
188 | one (i.e. fast-forward instead), but did not. Which has been | |
189 | corrected. | |
190 | ||
a6a95cd1 | 191 | * Code cleanup and futureproof. |
a6a95cd1 JH |
192 | |
193 | * More parameter validation. | |
a6a95cd1 JH |
194 | |
195 | * "git update-server-info" used to leave stale packfiles in its | |
196 | output, which has been corrected. | |
a6a95cd1 JH |
197 | |
198 | * The server side support for "git fetch" used to show incorrect | |
199 | value for the HEAD symbolic ref when the namespace feature is in | |
200 | use, which has been corrected. | |
a6a95cd1 JH |
201 | |
202 | * "git am -i --resolved" segfaulted after trying to see a commit as | |
203 | if it were a tree, which has been corrected. | |
a6a95cd1 JH |
204 | |
205 | * "git bundle verify" needs to see if prerequisite objects exist in | |
206 | the receiving repository, but the command did not check if we are | |
207 | in a repository upfront, which has been corrected. | |
a6a95cd1 JH |
208 | |
209 | * "git merge --squash" is designed to update the working tree and the | |
210 | index without creating the commit, and this cannot be countermanded | |
211 | by adding the "--commit" option; the command now refuses to work | |
212 | when both options are given. | |
a6a95cd1 JH |
213 | |
214 | * The data collected by fsmonitor was not properly written back to | |
215 | the on-disk index file, breaking t7519 tests occasionally, which | |
216 | has been corrected. | |
a6a95cd1 JH |
217 | |
218 | * Update to Unicode 12.1 width table. | |
a6a95cd1 JH |
219 | |
220 | * The command line to invoke a "git cat-file" command from inside | |
221 | "git p4" was not properly quoted to protect a caret and running a | |
222 | broken command on Windows, which has been corrected. | |
a6a95cd1 JH |
223 | |
224 | * "git request-pull" learned to warn when the ref we ask them to pull | |
225 | from in the local repository and in the published repository are | |
226 | different. | |
a6a95cd1 JH |
227 | |
228 | * When creating a partial clone, the object filtering criteria is | |
229 | recorded for the origin of the clone, but this incorrectly used a | |
230 | hardcoded name "origin" to name that remote; it has been corrected | |
231 | to honor the "--origin <name>" option. | |
a6a95cd1 | 232 | |
8dca754b JH |
233 | * "git fetch" into a lazy clone forgot to fetch base objects that are |
234 | necessary to complete delta in a thin packfile, which has been | |
235 | corrected. | |
8dca754b JH |
236 | |
237 | * The filter_data used in the list-objects-filter (which manages a | |
238 | lazily sparse clone repository) did not use the dynamic array API | |
239 | correctly---'nr' is supposed to point at one past the last element | |
240 | of the array in use. This has been corrected. | |
8dca754b JH |
241 | |
242 | * The description about slashes in gitignore patterns (used to | |
243 | indicate things like "anchored to this level only" and "only | |
244 | matches directories") has been revamped. | |
8dca754b JH |
245 | |
246 | * The URL decoding code has been updated to avoid going past the end | |
247 | of the string while parsing %-<hex>-<hex> sequence. | |
8dca754b JH |
248 | |
249 | * The list of for-each like macros used by clang-format has been | |
250 | updated. | |
8dca754b | 251 | |
6d5b2642 JH |
252 | * "git branch --list" learned to show branches that are checked out |
253 | in other worktrees connected to the same repository prefixed with | |
254 | '+', similar to the way the currently checked out branch is shown | |
255 | with '*' in front. | |
256 | (merge 6e9381469e nb/branch-show-other-worktrees-head later to maint). | |
257 | ||
258 | * Code restructuring during 2.20 period broke fetching tags via | |
259 | "import" based transports. | |
6d5b2642 JH |
260 | |
261 | * The commit-graph file is now part of the "files that the runtime | |
262 | may keep open file descriptors on, all of which would need to be | |
263 | closed when done with the object store", and the file descriptor to | |
264 | an existing commit-graph file now is closed before "gc" finalizes a | |
265 | new instance to replace it. | |
6d5b2642 JH |
266 | |
267 | * "git checkout -p" needs to selectively apply a patch in reverse, | |
268 | which did not work well. | |
6d5b2642 JH |
269 | |
270 | * Code clean-up to avoid signed integer wraparounds during binary search. | |
6d5b2642 JH |
271 | |
272 | * "git interpret-trailers" always treated '#' as the comment | |
273 | character, regardless of core.commentChar setting, which has been | |
274 | corrected. | |
6d5b2642 JH |
275 | |
276 | * "git stash show 23" used to work, but no more after getting | |
277 | rewritten in C; this regression has been corrected. | |
6d5b2642 JH |
278 | |
279 | * "git rebase --abort" used to leave refs/rewritten/ when concluding | |
280 | "git rebase -r", which has been corrected. | |
6d5b2642 JH |
281 | |
282 | * An incorrect list of options was cached after command line | |
283 | completion failed (e.g. trying to complete a command that requires | |
284 | a repository outside one), which has been corrected. | |
6d5b2642 JH |
285 | |
286 | * The code to parse scaled numbers out of configuration files has | |
287 | been made more robust and also easier to follow. | |
6d5b2642 JH |
288 | |
289 | * The codepath to compute delta islands used to spew progress output | |
290 | without giving the callers any way to squelch it, which has been | |
291 | fixed. | |
6d5b2642 JH |
292 | |
293 | * Protocol capabilities that go over wire should never be translated, | |
294 | but it was incorrectly marked for translation, which has been | |
295 | corrected. The output of protocol capabilities for debugging has | |
296 | been tweaked a bit. | |
297 | ||
298 | * Use "Erase in Line" CSI sequence that is already used in the editor | |
299 | support to clear cruft in the progress output. | |
6d5b2642 JH |
300 | |
301 | * "git submodule foreach" did not protect command line options passed | |
302 | to the command to be run in each submodule correctly, when the | |
303 | "--recursive" option was in use. | |
6d5b2642 | 304 | |
9d418600 JH |
305 | * The configuration variable rebase.rescheduleFailedExec should be |
306 | effective only while running an interactive rebase and should not | |
a45f5314 | 307 | affect anything when running a non-interactive one, which was not |
9d418600 | 308 | the case. This has been corrected. |
9d418600 JH |
309 | |
310 | * The "git clone" documentation refers to command line options in its | |
311 | description in the short form; they have been replaced with long | |
312 | forms to make them more recognisable. | |
9d418600 | 313 | |
9c9b961d JH |
314 | * Generation of pack bitmaps are now disabled when .keep files exist, |
315 | as these are mutually exclusive features. | |
316 | (merge 7328482253 ew/repack-with-bitmaps-by-default later to maint). | |
317 | ||
7b974e3e JH |
318 | * "git rm" to resolve a conflicted path leaked an internal message |
319 | "needs merge" before actually removing the path, which was | |
320 | confusing. This has been corrected. | |
7b974e3e JH |
321 | |
322 | * "git stash --keep-index" did not work correctly on paths that have | |
323 | been removed, which has been fixed. | |
324 | (merge b932f6a5e8 tg/stash-keep-index-with-removed-paths later to maint). | |
325 | ||
326 | * Window 7 update ;-) | |
7b974e3e JH |
327 | |
328 | * A codepath that reads from GPG for signed object verification read | |
329 | past the end of allocated buffer, which has been fixed. | |
7b974e3e JH |
330 | |
331 | * "git clean" silently skipped a path when it cannot lstat() it; now | |
332 | it gives a warning. | |
7b974e3e JH |
333 | |
334 | * "git push --atomic" that goes over the transport-helper (namely, | |
335 | the smart http transport) failed to prevent refs to be pushed when | |
336 | it can locally tell that one of the ref update will fail without | |
337 | having to consult the other end, which has been corrected. | |
7b974e3e | 338 | |
026dd738 | 339 | * The internal diff machinery can be made to read out of bounds while |
a45f5314 | 340 | looking for --function-context line in a corner case, which has been |
026dd738 JH |
341 | corrected. |
342 | (merge b777f3fd61 jk/xdiff-clamp-funcname-context-index later to maint). | |
343 | ||
0aae918d | 344 | * Other code cleanup, docfix, build fix, etc. |
9c9b961d | 345 | (merge fbec05c210 cc/test-oidmap later to maint). |
f36d08d7 JH |
346 | (merge 7a06fb038c jk/no-system-includes-in-dot-c later to maint). |
347 | (merge 81ed2b405c cb/xdiff-no-system-includes-in-dot-c later to maint). | |
7c20df84 | 348 | (merge d61e6ce1dd sg/fsck-config-in-doc later to maint). |