]> git.ipfire.org Git - thirdparty/git.git/blob - Documentation/RelNotes/2.26.0.txt
t4067: make rename detection test output raw diff
[thirdparty/git.git] / Documentation / RelNotes / 2.26.0.txt
1 Git 2.26 Release Notes
2 ======================
3
4 Updates since v2.25
5 -------------------
6
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
11 behaviour from the traditional machinery based on patch+apply.
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
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.
18
19
20 UI, Workflows & Features
21
22 * Sample credential helper for using .netrc has been updated to work
23 out of the box.
24
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
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
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
48 * "git config" learned to show in which "scope", in addition to in
49 which file, each config setting comes from.
50
51 * The basic 7 colors learned the brighter counterparts
52 (e.g. "brightred").
53
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
63 * "git rm" and "git stash" learns the new "--pathspec-from-file"
64 option.
65
66 * "git am --show-current-patch" is a way to show the piece of e-mail
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
75
76 Performance, Internal Implementation, Development Support etc.
77
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"
82 construct, but did not check "VAR= shell_function", which has been
83 corrected.
84
85 * Replace "git config --bool" calls with "git config --type=bool" in
86 sample templates.
87
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
95 * Warn programmers about pretend_object_file() that allows the code
96 to tentatively use in-core objects.
97
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
129 * Memory footprint and performance of "git name-rev" has been
130 improved.
131
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
145 * Underlying machinery of "git bisect--helper" is being refactored
146 into pieces that are more easily reused.
147
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.
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.
160
161 * Complete an update to tutorial that encourages "git switch" over
162 "git checkout" that was done only half-way.
163
164 * C pedantry ;-) fix.
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.
169
170 * Reduce unnecessary round-trip when running "ls-remote" over the
171 stateless RPC mechanism.
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.
176
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.
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.
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.
189
190 * Minor bugfixes to "git add -i" that has recently been rewritten in C.
191
192 * "git fetch --refmap=" option has got a better documentation.
193
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.
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.
213
214 * Futureproofing a test not to depend on the current implementation
215 detail.
216
217 * Running "git rm" on a submodule failed unnecessarily when
218 .gitmodules is only cache-dirty, which has been corrected.
219
220 * C pedantry ;-) fix.
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.
226
227 * Technical details of the bundle format has been documented.
228
229 * Unhelpful warning messages during documentation build have been squelched.
230
231 * "git rebase -i" identifies existing commits in its todo file with
232 their abbreviated object name, which could become ambiguous as it
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.
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.
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.
255
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
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
266 * Update to doc-diff.
267
268 * Doc markup fix.
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.
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.
276
277 * Fix for a bug revealed by a recent change to make the protocol v2
278 the default.
279
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.
303
304 * MinGW's poll() emulation has been improved.
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.
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
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.
319
320 * Other code cleanup, docfix, build fix, etc.
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).
323 (merge c513a958b6 ss/t6025-modernize later to maint).
324 (merge b441717256 dl/test-must-fail-fixes later to maint).
325 (merge d031049da3 mt/sparse-checkout-doc-update later to maint).
326 (merge 145136a95a jc/skip-prefix later to maint).
327 (merge 5290d45134 jk/alloc-cleanups later to maint).
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).
331 (merge de26f02db1 js/test-avoid-pipe later to maint).
332 (merge a2dc43414c es/doc-mentoring later to maint).
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).
337 (merge 240fc04f81 ag/rebase-remove-redundant-code later to maint).
338 (merge d68ce906c7 rs/commit-graph-code-simplification later to maint).
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).