]>
Commit | Line | Data |
---|---|---|
bc7a3d4d JH |
1 | Git 2.26 Release Notes |
2 | ====================== | |
3 | ||
4 | Updates since v2.25 | |
5 | ------------------- | |
6 | ||
30e99403 JH |
7 | Backward compatibility notes |
8 | ||
9 | * "git rebase" uses a different backend that is based on the 'merge' | |
10 | machinery by default. There are a few known differences in the | |
7fcb9659 | 11 | behaviour from the traditional machinery based on patch+apply. |
30e99403 JH |
12 | |
13 | If your workflow is negatively affected by this change, please | |
14 | report it to git@vger.kernel.org so that we can take a look into | |
6c85aac6 JH |
15 | it. After doing so, you can set the 'rebase.backend' configuration |
16 | variable to 'apply', in order to use the old default behaviour in | |
17 | the meantime. | |
30e99403 JH |
18 | |
19 | ||
bc7a3d4d JH |
20 | UI, Workflows & Features |
21 | ||
22 | * Sample credential helper for using .netrc has been updated to work | |
23 | out of the box. | |
24 | ||
344ee187 JH |
25 | * gpg.minTrustLevel configuration variable has been introduced to |
26 | tell various signature verification codepaths the required minimum | |
27 | trust level. | |
28 | ||
29 | * The command line completion (in contrib/) learned to complete | |
30 | subcommands and arguments to "git worktree". | |
31 | ||
d8437c57 JH |
32 | * Disambiguation logic to tell revisions and pathspec apart has been |
33 | tweaked so that backslash-escaped glob special characters do not | |
34 | count in the "wildcards are pathspec" rule. | |
35 | ||
36 | * One effect of specifying where the GIT_DIR is (either with the | |
37 | environment variable, or with the "git --git-dir=<where> cmd" | |
38 | option) is to disable the repository discovery. This has been | |
39 | placed a bit more stress in the documentation, as new users often | |
40 | get confused. | |
41 | ||
7ae7e234 JH |
42 | * Two help messages given when "git add" notices the user gave it |
43 | nothing to add have been updated to use advise() API. | |
44 | ||
45 | * A new version of fsmonitor-watchman hook has been introduced, to | |
46 | avoid races. | |
47 | ||
51ebf55b JH |
48 | * "git config" learned to show in which "scope", in addition to in |
49 | which file, each config setting comes from. | |
50 | ||
2d2118b8 JH |
51 | * The basic 7 colors learned the brighter counterparts |
52 | (e.g. "brightred"). | |
53 | ||
076cbdcd JH |
54 | * "git sparse-checkout" learned a new "add" subcommand. |
55 | ||
56 | * A configuration element used for credential subsystem can now use | |
57 | wildcard pattern to specify for which set of URLs the entry | |
58 | applies. | |
59 | ||
60 | * "git clone --recurse-submodules --single-branch" now uses the same | |
61 | single-branch option when cloning the submodules. | |
62 | ||
b4374e96 JH |
63 | * "git rm" and "git stash" learns the new "--pathspec-from-file" |
64 | option. | |
65 | ||
7fcb9659 | 66 | * "git am --show-current-patch" is a way to show the piece of e-mail |
b4374e96 JH |
67 | for the stopped step, which is not suitable to directly feed "git |
68 | apply" (it is designed to be a good "git am" input). It learned a | |
69 | new option to show only the patch part. | |
70 | ||
71 | * Handling of conflicting renames in merge-recursive have further | |
72 | been made consistent with how existing codepaths try to mimic what | |
73 | is done to add/add conflicts. | |
74 | ||
bc7a3d4d JH |
75 | |
76 | Performance, Internal Implementation, Development Support etc. | |
77 | ||
344ee187 JH |
78 | * Tell .editorconfig that in this project, *.txt files are indented |
79 | with tabs. | |
80 | ||
81 | * The test-lint machinery knew to check "VAR=VAL shell_function" | |
7fcb9659 | 82 | construct, but did not check "VAR= shell_function", which has been |
344ee187 JH |
83 | corrected. |
84 | ||
85 | * Replace "git config --bool" calls with "git config --type=bool" in | |
86 | sample templates. | |
87 | ||
de93cc14 JH |
88 | * The effort to move "git-add--interactive" to C continues. |
89 | ||
90 | * Improve error message generation for "git submodule add". | |
91 | ||
92 | * Preparation of test scripts for the day when the object names will | |
93 | use SHA-256 continues. | |
94 | ||
d8437c57 JH |
95 | * Warn programmers about pretend_object_file() that allows the code |
96 | to tentatively use in-core objects. | |
97 | ||
7ae7e234 JH |
98 | * The way "git pack-objects" reuses objects stored in existing pack |
99 | to generate its result has been improved. | |
100 | ||
101 | * The transport protocol version 2 becomes the default one. | |
102 | ||
103 | * Traditionally, we avoided threaded grep while searching in objects | |
104 | (as opposed to files in the working tree) as accesses to the object | |
105 | layer is not thread-safe. This limitation is getting lifted. | |
106 | ||
107 | * "git rebase -i" (and friends) used to unnecessarily check out the | |
108 | tip of the branch to be rebased, which has been corrected. | |
109 | ||
110 | * A low-level API function get_oid(), that accepts various ways to | |
111 | name an object, used to issue end-user facing error messages | |
112 | without l10n, which has been updated to be translatable. | |
113 | ||
114 | * Unneeded connectivity check is now disabled in a partial clone when | |
115 | fetching into it. | |
116 | ||
117 | * Some rough edges in the sparse-checkout feature, especially around | |
118 | the cone mode, have been cleaned up. | |
119 | ||
120 | * The diff-* plumbing family of subcommands now pay attention to the | |
121 | diff.wsErrorHighlight configuration, which has been ignored before; | |
122 | this allows "git add -p" to also show the whitespace problems to | |
123 | the end user. | |
124 | ||
125 | * Some codepaths were given a repository instance as a parameter to | |
126 | work in the repository, but passed the_repository instance to its | |
127 | callees, which has been cleaned up (somewhat). | |
128 | ||
51ebf55b JH |
129 | * Memory footprint and performance of "git name-rev" has been |
130 | improved. | |
131 | ||
2f268890 JH |
132 | * The object reachability bitmap machinery and the partial cloning |
133 | machinery were not prepared to work well together, because some | |
134 | object-filtering criteria that partial clones use inherently rely | |
135 | on object traversal, but the bitmap machinery is an optimization | |
136 | to bypass that object traversal. There however are some cases | |
137 | where they can work together, and they were taught about them. | |
138 | ||
139 | * "git rebase" has learned to use the merge backend (i.e. the | |
140 | machinery that drives "rebase -i") by default, while allowing | |
141 | "--apply" option to use the "apply" backend (e.g. the moral | |
142 | equivalent of "format-patch piped to am"). The rebase.backend | |
143 | configuration variable can be set to customize. | |
144 | ||
076cbdcd JH |
145 | * Underlying machinery of "git bisect--helper" is being refactored |
146 | into pieces that are more easily reused. | |
147 | ||
bc7a3d4d JH |
148 | |
149 | Fixes since v2.25 | |
150 | ----------------- | |
151 | ||
152 | * "git commit" gives output similar to "git status" when there is | |
153 | nothing to commit, but without honoring the advise.statusHints | |
154 | configuration variable, which has been corrected. | |
bc7a3d4d JH |
155 | |
156 | * has_object_file() said "no" given an object registered to the | |
157 | system via pretend_object_file(), making it inconsistent with | |
158 | read_object_file(), causing lazy fetch to attempt fetching an | |
159 | empty tree from promisor remotes. | |
bc7a3d4d JH |
160 | |
161 | * Complete an update to tutorial that encourages "git switch" over | |
162 | "git checkout" that was done only half-way. | |
bc7a3d4d JH |
163 | |
164 | * C pedantry ;-) fix. | |
bc7a3d4d JH |
165 | |
166 | * The code that tries to skip over the entries for the paths in a | |
167 | single directory using the cache-tree was not careful enough | |
168 | against corrupt index file. | |
bc7a3d4d JH |
169 | |
170 | * Reduce unnecessary round-trip when running "ls-remote" over the | |
171 | stateless RPC mechanism. | |
bc7a3d4d JH |
172 | |
173 | * "git restore --staged" did not correctly update the cache-tree | |
174 | structure, resulting in bogus trees to be written afterwards, which | |
175 | has been corrected. | |
bc7a3d4d | 176 | |
344ee187 JH |
177 | * The code recently added to move to the entry beyond the ones in the |
178 | same directory in the index in the sparse-cone mode did not count | |
179 | the number of entries to skip over incorrectly, which has been | |
180 | corrected. | |
344ee187 JH |
181 | |
182 | * Rendering by "git log --graph" of ancestry lines leading to a merge | |
183 | commit were made suboptimal to waste vertical space a bit with a | |
184 | recent update, which has been corrected. | |
344ee187 JH |
185 | |
186 | * Work around test breakages caused by custom regex engine used in | |
187 | libasan, when address sanitizer is used with more recent versions | |
188 | of gcc and clang. | |
344ee187 JH |
189 | |
190 | * Minor bugfixes to "git add -i" that has recently been rewritten in C. | |
344ee187 JH |
191 | |
192 | * "git fetch --refmap=" option has got a better documentation. | |
344ee187 | 193 | |
de93cc14 JH |
194 | * "git checkout X" did not correctly fail when X is not a local |
195 | branch but could name more than one remote-tracking branches | |
196 | (i.e. to be dwimmed as the starting point to create a corresponding | |
197 | local branch), which has been corrected. | |
198 | (merge fa74180d08 am/checkout-file-and-ref-ref-ambiguity later to maint). | |
199 | ||
200 | * Corner case bugs in "git clean" that stems from a (necessarily for | |
201 | performance reasons) awkward calling convention in the directory | |
202 | enumeration API has been corrected. | |
de93cc14 JH |
203 | |
204 | * A fetch that is told to recursively fetch updates in submodules | |
205 | inevitably produces reams of output, and it becomes hard to spot | |
206 | error messages. The command has been taught to enumerate | |
207 | submodules that had errors at the end of the operation. | |
208 | (merge 0222540827 es/fetch-show-failed-submodules-atend later to maint). | |
209 | ||
210 | * The "--recurse-submodules" option of various subcommands did not | |
211 | work well when run in an alternate worktree, which has been | |
212 | corrected. | |
de93cc14 | 213 | |
d8437c57 JH |
214 | * Futureproofing a test not to depend on the current implementation |
215 | detail. | |
d8437c57 JH |
216 | |
217 | * Running "git rm" on a submodule failed unnecessarily when | |
218 | .gitmodules is only cache-dirty, which has been corrected. | |
d8437c57 JH |
219 | |
220 | * C pedantry ;-) fix. | |
d8437c57 JH |
221 | |
222 | * "git grep --no-index" should not get affected by the contents of | |
223 | the .gitmodules file but when "--recurse-submodules" is given or | |
224 | the "submodule.recurse" variable is set, it did. Now these | |
225 | settings are ignored in the "--no-index" mode. | |
d8437c57 JH |
226 | |
227 | * Technical details of the bundle format has been documented. | |
d8437c57 JH |
228 | |
229 | * Unhelpful warning messages during documentation build have been squelched. | |
d8437c57 | 230 | |
7ae7e234 | 231 | * "git rebase -i" identifies existing commits in its todo file with |
7fcb9659 | 232 | their abbreviated object name, which could become ambiguous as it |
7ae7e234 JH |
233 | goes to create new commits, and has a mechanism to avoid ambiguity |
234 | in the main part of its execution. A few other cases however were | |
235 | not covered by the protection against ambiguity, which has been | |
236 | corrected. | |
7ae7e234 JH |
237 | |
238 | * Allow the rebase.missingCommitsCheck configuration to kick in when | |
239 | "rebase --edit-todo" and "rebase --continue" restarts the procedure. | |
240 | (merge 5a5445d878 ag/edit-todo-drop-check later to maint). | |
241 | ||
242 | * The way "git submodule status" reports an initialized but not yet | |
243 | populated submodule has not been reimplemented correctly when a | |
244 | part of the "git submodule" command was rewritten in C, which has | |
245 | been corrected. | |
246 | (merge f38c92452d pk/status-of-uncloned-submodule later to maint). | |
247 | ||
248 | * The code to automatically shrink the fan-out in the notes tree had | |
249 | an off-by-one bug, which has been killed. | |
7ae7e234 JH |
250 | |
251 | * The index-pack code now diagnoses a bad input packstream that | |
252 | records the same object twice when it is used as delta base; the | |
253 | code used to declare a software bug when encountering such an | |
254 | input, but it is an input error. | |
be8661a3 | 255 | |
7ae7e234 JH |
256 | |
257 | * The code to compute the commit-graph has been taught to use a more | |
258 | robust way to tell if two object directories refer to the same | |
259 | thing. | |
260 | (merge a7df60cac8 tb/commit-graph-object-dir later to maint). | |
261 | ||
2d2118b8 JH |
262 | * "git remote rename X Y" needs to adjust configuration variables |
263 | (e.g. branch.<name>.remote) whose value used to be X to Y. | |
264 | branch.<name>.pushRemote is now also updated. | |
265 | ||
2f268890 | 266 | * Update to doc-diff. |
2f268890 JH |
267 | |
268 | * Doc markup fix. | |
2f268890 JH |
269 | |
270 | * "git check-ignore" did not work when the given path is explicitly | |
271 | marked as not ignored with a negative entry in the .gitignore file. | |
2f268890 JH |
272 | |
273 | * The merge-recursive machinery failed to refresh the cache entry for | |
274 | a merge result in a couple of places, resulting in an unnecessary | |
275 | merge failure, which has been fixed. | |
2f268890 JH |
276 | |
277 | * Fix for a bug revealed by a recent change to make the protocol v2 | |
278 | the default. | |
2f268890 | 279 | |
076cbdcd JH |
280 | * In rare cases "git worktree add <path>" could think that <path> |
281 | was already a registered worktree even when it wasn't and refuse | |
282 | to add the new worktree. This has been corrected. | |
283 | (merge bb69b3b009 es/worktree-avoid-duplication-fix later to maint). | |
284 | ||
285 | * "git push" should stop from updating a branch that is checked out | |
286 | when receive.denyCurrentBranch configuration is set, but it failed | |
287 | to pay attention to checkouts in secondary worktrees. This has | |
288 | been corrected. | |
289 | (merge 4d864895a2 hv/receive-denycurrent-everywhere later to maint). | |
290 | ||
291 | * "git rebase BASE BRANCH" rebased/updated the tip of BRANCH and | |
292 | checked it out, even when the BRANCH is checked out in a different | |
293 | worktree. This has been corrected. | |
294 | (merge b5cabb4a96 es/do-not-let-rebase-switch-to-protected-branch later to maint). | |
295 | ||
296 | * "git describe" in a repository with multiple root commits sometimes | |
297 | gave up looking for the best tag to describe a given commit with | |
298 | too early, which has been adjusted. | |
299 | ||
300 | * "git merge signed-tag" while lacking the public key started to say | |
301 | "No signature", which was utterly wrong. This regression has been | |
302 | reverted. | |
076cbdcd | 303 | |
b4374e96 | 304 | * MinGW's poll() emulation has been improved. |
b4374e96 JH |
305 | |
306 | * "git show" and others gave an object name in raw format in its | |
307 | error output, which has been corrected to give it in hex. | |
b4374e96 JH |
308 | |
309 | * "git fetch" over HTTP walker protocol did not show any progress | |
310 | output. We inherently do not know how much work remains, but still | |
311 | we can show something not to bore users. | |
312 | (merge 7655b4119d rs/show-progress-in-dumb-http-fetch later to maint). | |
313 | ||
30e99403 JH |
314 | * Both "git ls-remote -h" and "git grep -h" give short usage help, |
315 | like any other Git subcommand, but it is not unreasonable to expect | |
316 | that the former would behave the same as "git ls-remote --head" | |
317 | (there is no other sensible behaviour for the latter). The | |
318 | documentation has been updated in an attempt to clarify this. | |
30e99403 | 319 | |
bc7a3d4d | 320 | * Other code cleanup, docfix, build fix, etc. |
344ee187 JH |
321 | (merge d0d0a357a1 am/update-pathspec-f-f-tests later to maint). |
322 | (merge f94f7bd00d am/test-pathspec-f-f-error-cases later to maint). | |
344ee187 | 323 | (merge c513a958b6 ss/t6025-modernize later to maint). |
de93cc14 JH |
324 | (merge b441717256 dl/test-must-fail-fixes later to maint). |
325 | (merge d031049da3 mt/sparse-checkout-doc-update later to maint). | |
d8437c57 | 326 | (merge 145136a95a jc/skip-prefix later to maint). |
7ae7e234 | 327 | (merge 5290d45134 jk/alloc-cleanups later to maint). |
51ebf55b JH |
328 | (merge 7a9f8ca805 rs/parse-options-concat-dup later to maint). |
329 | (merge 517b60564e rs/strbuf-insertstr later to maint). | |
330 | (merge f696a2b1c8 jk/mailinfo-cleanup later to maint). | |
51ebf55b | 331 | (merge de26f02db1 js/test-avoid-pipe later to maint). |
2d2118b8 | 332 | (merge a2dc43414c es/doc-mentoring later to maint). |
2f268890 JH |
333 | (merge 02bbbe9df9 es/worktree-cleanup later to maint). |
334 | (merge 2ce6d075fa rs/micro-cleanups later to maint). | |
335 | (merge 27f182b3fc rs/blame-typefix-for-fingerprint later to maint). | |
336 | (merge 3c29e21eb0 ma/test-cleanup later to maint). | |
076cbdcd | 337 | (merge 240fc04f81 ag/rebase-remove-redundant-code later to maint). |
076cbdcd | 338 | (merge d68ce906c7 rs/commit-graph-code-simplification later to maint). |
b4374e96 JH |
339 | (merge a51d9e8f07 rj/t1050-use-test-path-is-file later to maint). |
340 | (merge fd0bc17557 kk/complete-diff-color-moved later to maint). | |
341 | (merge 65bf820d0e en/test-cleanup later to maint). |