]>
Commit | Line | Data |
---|---|---|
1d1c4a87 JH |
1 | Git 2.30 Release Notes |
2 | ====================== | |
3 | ||
4 | Updates since v2.29 | |
5 | ------------------- | |
6 | ||
7 | UI, Workflows & Features | |
8 | ||
f9b6481a JH |
9 | * Userdiff for PHP update. |
10 | ||
11 | * Userdiff for Rust update. | |
12 | ||
13 | * Userdiff for CSS update. | |
14 | ||
15 | * The command line completion script (in contrib/) learned that "git | |
16 | stash show" takes the options "git diff" takes. | |
17 | ||
18 | * "git worktree list" now shows if each worktree is locked. This | |
19 | possibly may open us to show other kinds of states in the future. | |
20 | ||
21 | * "git maintenance", an extended big brother of "git gc", continues | |
22 | to evolve. | |
23 | ||
24 | * "git push --force-with-lease[=<ref>]" can easily be misused to lose | |
25 | commits unless the user takes good care of their own "git fetch". | |
26 | A new option "--force-if-includes" attempts to ensure that what is | |
27 | being force-pushed was created after examining the commit at the | |
28 | tip of the remote ref that is about to be force-replaced. | |
29 | ||
30 | * "git clone" learned clone.defaultremotename configuration variable | |
31 | to customize what nickname to use to call the remote the repository | |
32 | was cloned from. | |
33 | ||
34 | * "git checkout" learned to use checkout.guess configuration variable | |
35 | and enable/disable its "--[no-]guess" option accordingly. | |
36 | ||
e2850a27 JH |
37 | * "git resurrect" script (in contrib/) learned that the object names |
38 | may be longer than 40-hex depending on the hash function in use. | |
39 | ||
7f7ebe05 JH |
40 | * "git diff A...B" learned "git diff --merge-base A B", which is a |
41 | longer short-hand to say the same thing. | |
42 | ||
43 | * A sample 'push-to-checkout' hook, that performs the same as | |
44 | what the built-in default action does, has been added. | |
45 | ||
46 | * "git diff" family of commands learned the "-I<regex>" option to | |
47 | ignore hunks whose changed lines all match the given pattern. | |
48 | ||
49 | * The userdiff pattern learned to identify the function definition in | |
50 | POSIX shells and bash. | |
51 | ||
e4d83eee JH |
52 | * "git checkout-index" did not consistently signal an error with its |
53 | exit status, but now it does. | |
54 | ||
55 | * A commit and tag object may have CR at the end of each and | |
56 | every line (you can create such an object with hash-object or | |
57 | using --cleanup=verbatim to decline the default clean-up | |
58 | action), but it would make it impossible to have a blank line | |
59 | to separate the title from the body of the message. We are now | |
60 | more lenient and accept a line with lone CR on it as a blank line, | |
61 | too. | |
62 | ||
63 | * Exit codes from "git remote add" etc. were not usable by scripted | |
64 | callers, but now they are. | |
65 | ||
faefdd61 JH |
66 | * "git archive" now allows compression level higher than "-9" |
67 | when generating tar.gz output. | |
68 | ||
e4d83eee JH |
69 | * Zsh autocompletion (in contrib/) update. |
70 | ||
b291b0a6 JH |
71 | * The maximum length of output filenames "git format-patch" creates |
72 | has become configurable (used to be capped at 64). | |
73 | ||
74 | * "git rev-parse" learned the "--end-of-options" to help scripts to | |
75 | safely take a parameter that is supposed to be a revision, e.g. | |
76 | "git rev-parse --verify -q --end-of-options $rev". | |
77 | ||
e67fbf92 JH |
78 | * The command line completion script (in contrib/) learned to expand |
79 | commands that are alias of alias. | |
80 | ||
1d1c4a87 JH |
81 | |
82 | Performance, Internal Implementation, Development Support etc. | |
83 | ||
f9b6481a JH |
84 | * Use "git archive" more to produce the release tarball. |
85 | ||
e2850a27 JH |
86 | * GitHub Actions automated test improvement to skip tests on a tree |
87 | identical to what has already been tested. | |
f9b6481a | 88 | |
7f7ebe05 JH |
89 | * Test-coverage for running commit-graph task "git maintenance" has |
90 | been extended. | |
91 | ||
92 | * Our test scripts can be told to run only individual pieces while | |
93 | skipping others with the "--run=..." option; they were taught to | |
94 | take a substring of test title, in addition to numbers, to name the | |
95 | test pieces to run. | |
96 | ||
97 | * Adjust tests so that they won't scream when the default initial | |
98 | branch name is changed to 'main'. | |
99 | ||
e4d83eee JH |
100 | * Rewriting "git bisect" in C continues. |
101 | ||
102 | * More preliminary tests have been added to document desired outcome | |
103 | of various "directory rename" situations. | |
104 | ||
105 | * Micro clean-up of a couple of test scripts. | |
106 | ||
107 | * "git diff" and other commands that share the same machinery to | |
108 | compare with working tree files have been taught to take advantage | |
109 | of the fsmonitor data when available. | |
110 | ||
111 | * The code to detect premature EOF in the sideband demultiplexer has | |
112 | been cleaned up. | |
113 | ||
114 | * Test scripts are being prepared to transition of the default branch | |
115 | name to 'main'. | |
116 | ||
faefdd61 JH |
117 | * "git fetch --depth=<n>" over the stateless RPC / smart HTTP |
118 | transport handled EOF from the client poorly at the server end. | |
e4d83eee | 119 | |
b291b0a6 JH |
120 | * A specialization of hashmap that uses a string as key has been |
121 | introduced. Hopefully it will see wider use over time. | |
122 | ||
e67fbf92 JH |
123 | * "git bisect start/next" in a large span of history spends a lot of |
124 | time trying to come up with exactly the half-way point; this can be | |
125 | optimized by stopping when we see a commit that is close enough to | |
126 | the half-way point. | |
127 | ||
128 | * A lazily defined test prerequisite can now be defined in terms of | |
129 | another lazily defined test prerequisite. | |
130 | ||
72ffeb99 JH |
131 | * Expectation for the original contributor after responding to a |
132 | review comment to use the explanation in a patch update has been | |
133 | described. | |
134 | ||
135 | * Multiple "credential-store" backends can race to lock the same | |
136 | file, causing everybody else but one to fail---reattempt locking | |
137 | with some timeout to reduce the rate of the failure. | |
138 | ||
1d1c4a87 JH |
139 | |
140 | Fixes since v2.29 | |
141 | ----------------- | |
142 | ||
143 | * In 2.29, "--committer-date-is-author-date" option of "rebase" and | |
144 | "am" subcommands lost the e-mail address by mistake, which has been | |
145 | corrected. | |
146 | (merge 5f35edd9d7 jk/committer-date-is-author-date-fix later to maint). | |
147 | ||
f9b6481a JH |
148 | * "git checkout -p A...B [-- <path>]" did not work, even though the |
149 | same command without "-p" correctly used the merge-base between | |
150 | commits A and B. | |
151 | (merge 35166b1fb5 dl/checkout-p-merge-base later to maint). | |
152 | ||
7f7ebe05 JH |
153 | * The side-band status report can be sent at the same time as the |
154 | primary payload multiplexed, but the demultiplexer on the receiving | |
155 | end incorrectly split a single status report into two, which has | |
156 | been corrected. | |
157 | (merge 712b0377db js/avoid-split-sideband-message later to maint). | |
158 | ||
159 | * "git fast-import" wasted a lot of memory when many marks were in use. | |
160 | (merge 3f018ec716 jk/fast-import-marks-alloc-fix later to maint). | |
161 | ||
162 | * A test helper "test_cmp A B" was taught to diagnose missing files A | |
163 | or B as a bug in test, but some tests legitimately wanted to notice | |
164 | a failure to even create file B as an error, in addition to leaving | |
165 | the expected result in it, and were misdiagnosed as a bug. This | |
166 | has been corrected. | |
167 | (merge 262d5ad5a5 es/test-cmp-typocatcher later to maint). | |
168 | ||
169 | * When "git commit-graph" detects the same commit recorded more than | |
170 | once while it is merging the layers, it used to die. The code now | |
171 | ignores all but one of them and continues. | |
172 | (merge 85102ac71b ds/commit-graph-merging-fix later to maint). | |
173 | ||
174 | * The meaning of a Signed-off-by trailer can vary from project to | |
175 | project; this and also what it means to this project has been | |
176 | clarified in the documentation. | |
177 | (merge 3abd4a67d9 bk/sob-dco later to maint). | |
178 | ||
179 | * "git credential' didn't honor the core.askPass configuration | |
180 | variable (among other things), which has been corrected. | |
181 | (merge 567ad2c0f9 tk/credential-config later to maint). | |
182 | ||
183 | * Dev support to catch a tentative definition of a variable in our C | |
184 | code as an error. | |
185 | (merge 5539183622 jk/no-common later to maint). | |
186 | ||
187 | * "git rebase --rebase-merges" did not correctly pass --gpg-sign | |
188 | command line option to underlying "git merge" when replaying a merge | |
189 | using non-default merge strategy or when replaying an octopus merge | |
190 | (because replaying a two-head merge with the default strategy was | |
191 | done in a separate codepath, the problem did not trigger for most | |
192 | users), which has been corrected. | |
193 | (merge 43ad4f2eca sc/sequencer-gpg-octopus later to maint). | |
194 | ||
195 | * "git apply -R" did not handle patches that touch the same path | |
196 | twice correctly, which has been corrected. This is most relevant | |
197 | in a patch that changes a path from a regular file to a symbolic | |
198 | link (and vice versa). | |
199 | (merge b0f266de11 jt/apply-reverse-twice later to maint). | |
200 | ||
201 | * A recent oid->hash conversion missed one spot, breaking "git svn". | |
202 | (merge 03bb366de4 bc/svn-hash-oid-fix later to maint). | |
203 | ||
e31aba42 JH |
204 | * The documentation on the "--abbrev=<n>" option did not say the |
205 | output may be longer than "<n>" hexdigits, which has been | |
206 | clarified. | |
207 | (merge cda34e0d0c jc/abbrev-doc later to maint). | |
208 | ||
209 | * "git p4" now honors init.defaultBranch configuration. | |
210 | (merge 1b09d1917f js/p4-default-branch later to maint). | |
211 | ||
212 | * Recently the format of an internal state file "rebase -i" uses has | |
213 | been tightened up for consistency, which would hurt those who start | |
214 | "rebase -i" with old git and then continue with new git. Loosen | |
215 | the reader side a bit (which we may want to tighten again in a year | |
216 | or so). | |
217 | (merge c779386182 jc/sequencer-stopped-sha-simplify later to maint). | |
218 | ||
faefdd61 JH |
219 | * The code to see if "git stash drop" can safely remove refs/stash |
220 | has been made more carerful. | |
221 | (merge 4f44c5659b rs/empty-reflog-check-fix later to maint). | |
222 | ||
223 | * "git log -L<range>:<path>" is documented to take no pathspec, but | |
224 | this was not enforced by the command line option parser, which has | |
225 | been corrected. | |
226 | (merge 39664cb0ac jc/line-log-takes-no-pathspec later to maint). | |
227 | ||
228 | * "git format-patch --output=there" did not work as expected and | |
229 | instead crashed. The option is now supported. | |
230 | (merge dc1672dd10 jk/format-patch-output later to maint). | |
231 | ||
232 | * Define ARM64 compiled with MSVC to be little-endian. | |
233 | (merge 0c038fc65a dg/bswap-msvc later to maint). | |
234 | ||
235 | * "git rebase -i" did not store ORIG_HEAD correctly. | |
236 | (merge 8843302307 pw/rebase-i-orig-head later to maint). | |
237 | ||
238 | * "git blame -L :funcname -- path" did not work well for a path for | |
239 | which a userdiff driver is defined. | |
240 | ||
241 | * "make DEVELOPER=1 sparse" used to run sparse and let it emit | |
242 | warnings; now such warnings will cause an error. | |
243 | (merge 521dc56270 jc/sparse-error-for-developer-build later to maint). | |
244 | ||
245 | * "git blame --ignore-revs-file=<file>" learned to ignore a | |
246 | non-existent object name in the input, instead of complaining. | |
247 | (merge c714d05875 jc/blame-ignore-fix later to maint). | |
248 | ||
b291b0a6 JH |
249 | * Running "git diff" while allowing external diff in a state with |
250 | unmerged paths used to segfault, which has been corrected. | |
251 | (merge d66851806f jk/diff-release-filespec-fix later to maint). | |
252 | ||
253 | * Build configuration cleanup. | |
254 | (merge b990f02fd8 ab/config-mak-uname-simplify later to maint). | |
255 | ||
256 | * Fix regression introduced when nvimdiff support in mergetool was added. | |
257 | (merge 12026f46e7 pd/mergetool-nvimdiff later to maint). | |
258 | ||
e67fbf92 JH |
259 | * The exchange between receive-pack and proc-receive hook did not |
260 | carefully check for errors. | |
261 | ||
262 | * The code was not prepared to deal with pack .idx file that is | |
263 | larger than 4GB. | |
264 | (merge 81c4c5cf2e jk/4gb-idx later to maint). | |
265 | ||
266 | * "git fetch" did not work correctly with nested submodules where the | |
267 | innermost submodule that is not of interest got updated in the | |
268 | upstream, which has been corrected. | |
269 | (merge 1b7ac4e6d4 pk/subsub-fetch-fix later to maint). | |
270 | ||
271 | * Since jgit does not yet work with SHA-256 repositories, mark the | |
272 | tests that uses it not to run unless we are testing with ShA-1 | |
273 | repositories. | |
274 | (merge ea699b4adc sg/t5310-jgit-wants-sha1 later to maint). | |
275 | ||
72ffeb99 JH |
276 | * Config parser fix for "git notes". |
277 | (merge 45fef1599a na/notes-displayref-is-not-boolean later to maint). | |
278 | ||
279 | * Move a definition of compatibility wrapper from cache.h to | |
280 | git-compat-util.h | |
281 | (merge a76b138daa hn/sleep-millisec-decl later to maint). | |
282 | ||
283 | * Error message fix. | |
284 | (merge eaf5341538 km/stash-error-message-fix later to maint). | |
285 | ||
1d1c4a87 JH |
286 | * Other code cleanup, docfix, build fix, etc. |
287 | (merge 3e0a5dc9af cc/doc-filter-branch-typofix later to maint). | |
f9b6481a JH |
288 | (merge 32c83afc2c cw/ci-ghwf-check-ws-errors later to maint). |
289 | (merge 5eb2ed691b rs/tighten-callers-of-deref-tag later to maint). | |
7f7ebe05 JH |
290 | (merge 6db29ab213 jk/fast-import-marks-cleanup later to maint). |
291 | (merge e5cf6d3df4 nk/dir-c-comment-update later to maint). | |
292 | (merge 5710dcce74 jk/report-fn-typedef later to maint). | |
293 | (merge 9a82db1056 en/sequencer-rollback-lock-cleanup later to maint). | |
294 | (merge 4e1bee9a99 js/t7006-cleanup later to maint). | |
295 | (merge f5bcde6c58 es/tutorial-mention-asciidoc-early later to maint). | |
e31aba42 JH |
296 | (merge 714d491af0 so/format-patch-doc-on-default-diff-format later to maint). |
297 | (merge 0795df4b9b rs/clear-commit-marks-in-repo later to maint). | |
298 | (merge 9542d56379 sd/prompt-local-variable later to maint). | |
299 | (merge 06d43fad18 rs/pack-write-hashwrite-simplify later to maint). | |
300 | (merge b7e20b4373 mc/typofix later to maint). | |
301 | (merge f6bcd9a8a4 js/test-whitespace-fixes later to maint). | |
302 | (merge 53b67a801b js/test-file-size later to maint). | |
e67fbf92 JH |
303 | (merge 970909c2a7 rs/hashwrite-be64 later to maint). |
304 | (merge 5a923bb1f0 ma/list-object-filter-opt-msgfix later to maint). | |
305 | (merge 1c3e412916 rs/archive-plug-leak-refname later to maint). | |
306 | (merge d44e5267ea rs/plug-diff-cache-leak later to maint). | |
72ffeb99 JH |
307 | (merge 793c1464d3 ab/gc-keep-base-option later to maint). |
308 | (merge b86339b12b mt/worktree-error-message-fix later to maint). | |
309 | (merge e01ae2a4a7 js/pull-rebase-use-advise later to maint). |