]> git.ipfire.org Git - thirdparty/git.git/blame - Documentation/RelNotes/2.42.0.txt
Merge branch 'jc/branch-parseopt-fix'
[thirdparty/git.git] / Documentation / RelNotes / 2.42.0.txt
CommitLineData
d7d8841f
JH
1Git v2.42 Release Notes
2=======================
3
4UI, Workflows & Features
5
6 * "git pack-refs" learns "--include" and "--exclude" to tweak the ref
7 hierarchy to be packed using pattern matching.
8
0bfa463d
JH
9 * 'git worktree add' learned how to create a worktree based on an
10 orphaned branch with `--orphan`.
11
6ff33418
JH
12 * "git pack-objects" learned to invoke a new hook program that
13 enumerates extra objects to be used as anchoring points to keep
14 otherwise unreachable objects in cruft packs.
15
a646b86c
JH
16 * Add more "git var" for toolsmiths to learn various locations Git is
17 configured with either via the configuration or hardcoded defaults.
18
061c5864
JH
19 * 'git notes append' was taught '--separator' to specify string to insert
20 between paragraphs.
21
830b4a04
JH
22 * The "git for-each-ref" family of commands learned placeholders
23 related to GPG signature verification.
24
5e238546
JH
25 * "git diff --no-index" learned to read from named pipes as if they
26 were regular files, to allow "git diff <(process) <(substitution)"
27 some shells support.
28
a80be152
JH
29 * Help newbies by suggesting that there are cases where force-pushing
30 is a valid and sensible thing to update a branch at a remote
31 repository, rather than reconciling with merge/rebase.
32
d7d8841f
JH
33
34Performance, Internal Implementation, Development Support etc.
35
36 * "git diff-tree" has been taught to take advantage of the
37 sparse-index feature.
38
6640c2d0
JH
39 * Clang's sanitizer implementation seems to work better than GCC's.
40 (merge d88d727143 jk/ci-use-clang-for-sanitizer-jobs later to maint).
41
0bfa463d
JH
42 * The object traversal using reachability bitmap done by
43 "pack-object" has been tweaked to take advantage of the fact that
44 using "boundary" commits as representative of all the uninteresting
45 ones can save quite a lot of object enumeration.
46
6ff33418
JH
47 * discover_git_directory() no longer touches the_repository.
48
49 * "git worktree" learned to work better with sparse index feature.
50
9748a682
JH
51 * When the external merge driver is killed by a signal, its output
52 should not be trusted as a resolution with conflicts that is
53 proposed by the driver, but the code did.
54
a646b86c
JH
55 * The set-up code for the get_revision() API now allows feeding
56 options like --all and --not in the --stdin mode.
57
061c5864
JH
58 * Move functions that are not about pure string manipulation out of
59 strbuf.[ch]
60
830b4a04
JH
61 * "imap-send" codepaths got cleaned up to get rid of unused
62 parameters.
63
e43f4fd0
JH
64 * Enumerating refs in the packed-refs file, while excluding refs that
65 match certain patterns, has been optimized.
66
a80be152
JH
67 * Mark-up unused parameters in the code so that we can eventually
68 enable -Wunused-parameter by default.
69
d7d8841f
JH
70
71Fixes since v2.41
72-----------------
73
74 * "git tag" learned to leave the "$GIT_DIR/TAG_EDITMSG" file when the
75 command failed, so that the user can salvage what they typed.
76 (merge 08c12ec1d0 kh/keep-tag-editmsg-upon-failure later to maint).
77
78 * The "-s" (silent, squelch) option of the "diff" family of commands
79 did not interact with other options that specify the output format
80 well. This has been cleaned up so that it will clear all the
81 formatting options given before.
82 (merge 9d484b92ed jc/diff-s-with-other-options later to maint).
83
84 * Update documentation regarding Coccinelle patches.
85 (merge 3bd0097cfc gc/doc-cocci-updates later to maint).
86
87 * Some atoms that can be used in "--format=<format>" for "git ls-tree"
88 were not supported by "git ls-files", even though they were relevant
89 in the context of the latter.
90 (merge 4d28c4f75f zh/ls-files-format-atoms later to maint).
91
6640c2d0
JH
92 * Document more pseudo-refs and teach the command line completion
93 machinery to complete AUTO_MERGE.
94 (merge 982ff3a649 pb/complete-and-document-auto-merge-and-friends later to maint).
95
96 * "git submodule" code trusted the data coming from the config (and
97 the in-tree .gitmodules file) too much without validating, leading
98 to NULL dereference if the user mucks with a repository (e.g.
99 submodule.<name>.url is removed). This has been corrected.
100 (merge fbc806acd1 tb/submodule-null-deref-fix later to maint).
101
102 * The value of config.worktree is per-repository, but has been kept
103 in a singleton global variable per process. This has been OK as
104 most Git operations interacted with a single repository at a time,
105 but not right for operations like recursive "grep" that want to
106 access multiple repositories from a single process without forking.
107
108 The global variable has been eliminated and made into a member in
109 the per-repository data structure.
110 (merge 3867f6d650 vd/worktree-config-is-per-repository later to maint).
111
112 * "git [-c log.follow=true] log [--follow] ':(glob)f**'" used to barf.
113 (merge 8260bc5902 jk/log-follow-with-non-literal-pathspec later to maint).
114
0bfa463d
JH
115 * Introduce a mechanism to disable replace refs globally and per
116 repository.
117 (merge 9c7d1b057f ds/disable-replace-refs later to maint).
118
119 * "git cat-file --batch" and friends learned "-Z" that uses NUL
120 delimiter for both input and output.
121 (merge f79e18849b ps/cat-file-null-output later to maint).
122
123 * The reimplemented "git add -i" did not honor color.ui configuration.
124 (merge 6f74648cea ds/add-i-color-configuration-fix later to maint).
125
126 * Compilation fix for platforms without D_TYPE in struct dirent.
127 (merge 03bf92b9bf as/dtype-compilation-fix later to maint).
128
129 * Suggest to refrain from using hex literals that are non-portable
130 when writing printf(1) format strings.
131 (merge f0b68f0546 jt/doc-use-octal-with-printf later to maint).
132
6ff33418
JH
133 * Simplify error message when run-command fails to start a command.
134 (merge 6d224ac286 rs/run-command-exec-error-on-noent later to maint).
135
136 * Gracefully deal with a stale MIDX file that lists a packfile that
137 no longer exists.
138 (merge 06f3867865 tb/open-midx-bitmap-fallback later to maint).
139
140 * Even when diff.ignoreSubmodules tells us to ignore submodule
141 changes, "git commit" with an index that already records changes to
142 submodules should include the submodule changes in the resulting
143 commit, but it did not.
144 (merge 5768478edc js/defeat-ignore-submodules-config-with-explicit-addition later to maint).
145
a9e066fa
JH
146 * When "git commit --trailer=..." invokes the interpret-trailers
147 machinery, it knows what it feeds to interpret-trailers is a full
148 log message without any patch, but failed to express that by
149 passing the "--no-divider" option, which has been corrected.
150 (merge be3d654343 jk/commit-use-no-divider-with-interpret-trailers later to maint).
151
152 * Avoid breakage of "git pack-objects --cruft" due to inconsistency
153 between the way the code enumerates packfiles in the repository.
154 (merge 73320e49ad tb/collect-pack-filenames-fix later to maint).
155
9748a682
JH
156 * We create .pack and then .idx, we consider only packfiles that have
157 .idx usable (those with only .pack are not ready yet), so we should
158 remove .idx before removing .pack for consistency.
159 (merge 0dd1324a73 ds/remove-idx-before-pack later to maint).
160
061c5864
JH
161 * Partially revert a sanity check that the rest of the config code
162 was not ready, to avoid triggering it in a corner case.
163 (merge a53f43f900 gc/config-partial-submodule-kvi-fix later to maint).
164
165 * "git apply" punts when it is fed too large a patch input; the error
166 message it gives when it happens has been clarified.
167 (merge 42612e18d2 pw/apply-too-large later to maint).
168
169 * During a cherry-pick or revert session that works on multiple
170 commits, "git status" did not give correct information, which has
171 been corrected.
172 (merge a096a889f4 jk/cherry-pick-revert-status later to maint).
173
aa9166bc
JH
174 * A few places failed to differenciate the case where the index is
175 truly empty (nothing added) and we haven't yet read from the
176 on-disk index file, which have been corrected.
177 (merge 2ee045eea1 js/empty-index-fixes later to maint).
178
830b4a04
JH
179 * "git bugreport" tests did not test what it wanted to test, which
180 has been corrected.
181 (merge 1aa92b8500 ma/t0091-fixup later to maint).
182
5e238546
JH
183 * Code snippets in a tutorial document no longer compiled after
184 recent header shuffling, which have been corrected.
185 (merge bbd7c7b7c0 vd/adjust-mfow-doc-to-updated-headers later to maint).
186
187 * "git ls-files '(attr:X)D/'" that triggers the common prefix
188 optimization codepath failed to read from "D/.gitattributes",
189 which has been corrected.
190 (merge f4a8fde057 jc/pathspec-match-with-common-prefix later to maint).
191
cba07a32
JH
192 * "git fsck --no-progress" still spewed noise from the commit-graph
193 subsystem, which has been corrected.
194 (merge 9281cd07f0 tb/fsck-no-progress later to maint).
195
a80be152
JH
196 * Various offset computation in the code that accesses the packfiles
197 and other data in the object layer has been hardened against
198 arithmetic overflow, especially on 32-bit systems.
199 (merge 9a25cad7e0 tb/object-access-overflow-protection later to maint).
200
201 * Names of MinGW header files are spelled in mixed case in some
202 source files, but the build host can be using case sensitive
203 filesystem with header files with their name spelled in all
204 lowercase.
205 (merge 4a53d0d0bc mh/mingw-case-sensitive-build later to maint).
206
207 * Update message mark-up for i18n in "git bundle".
208 (merge bbb6acd998 dk/bundle-i18n-more later to maint).
209
210 * "git tag --list --points-at X" showed tags that directly refers to
211 object X, but did not list a tag that points at such a tag, which
212 has been corrected.
213
d7d8841f
JH
214 * Other code cleanup, docfix, build fix, etc.
215 (merge 51f9d2e563 sa/doc-ls-remote later to maint).
216 (merge c6d26a9dda jk/format-patch-message-id-unleak later to maint).
6640c2d0
JH
217 (merge f7e063f326 ps/fetch-cleanups later to maint).
218 (merge e4cf013468 tl/quote-problematic-arg-for-clarity later to maint).
219 (merge 20025fdfc7 tz/test-ssh-verifytime-fix later to maint).
220 (merge e48a21df65 tz/test-fix-pthreads-prereq later to maint).
221 (merge 68b51172e3 mh/commit-reach-get-reachable-plug-leak later to maint).
222 (merge aeee1408ce kh/use-default-notes-doc later to maint).
223 (merge 3b8724bce6 jc/test-modernization later to maint).
224 (merge 447a3b7331 jc/test-modernization-2 later to maint).
225 (merge d57fa7fc73 la/doc-interpret-trailers later to maint).
0bfa463d
JH
226 (merge 548afb0d9a la/docs-typofixes later to maint).
227 (merge 3744ffcbcd rs/doc-ls-tree-hex-literal later to maint).
6ff33418
JH
228 (merge 6c26da8404 mh/credential-erase-improvements later to maint).
229 (merge 78e56cff69 tz/lib-gpg-prereq-fix later to maint).
230 (merge 80d32e84b5 rj/leakfixes later to maint).
061c5864
JH
231 (merge 0a868031ed pb/complete-diff-options later to maint).
232 (merge d4f28279ad jc/doc-hash-object-types later to maint).
aa9166bc
JH
233 (merge 1876a5ae15 ks/t4205-test-describe-with-abbrev-fix later to maint).
234 (merge 6e6a529b57 jk/fsck-indices-in-worktrees later to maint).
5e238546 235 (merge 3e81b896f7 rs/packet-length-simplify later to maint).
cba07a32 236 (merge 4c9cb51fe7 mh/doc-credential-helpers later to maint).