]> git.ipfire.org Git - thirdparty/git.git/blame - Documentation/RelNotes/2.44.0.txt
Merge branch 'jh/sparse-index-expand-to-path-fix'
[thirdparty/git.git] / Documentation / RelNotes / 2.44.0.txt
CommitLineData
1a87c842
JH
1Git v2.44 Release Notes
2=======================
3
e79552d1
JH
4Backward Compatibility Notes
5
6 * "git chekcout -B <branch>" used to allow switching to a branch that
7 is in use on another worktree, but this was by mistake. The users
8 need to use "--ignore-other-worktrees" option.
9
10
1a87c842
JH
11UI, Workflows & Features
12
13 * "git add" and "git stash" learned to support the ":(attr:...)"
14 magic pathspec.
15
16 * "git rebase --autosquash" is now enabled for non-interactive rebase,
17 but it is still incompatible with the apply backend.
18
624eb90f
JH
19 * Introduce "git replay", a tool meant on the server side without
20 working tree to recreate a history.
21
22 * "git merge-file" learned to take the "--diff-algorithm" option to
23 use algorithm different from the default "myers" diff.
24
055bb6e9
JH
25 * Command line completion (in contrib/) learned to complete path
26 arguments to the "add/set" subcommands of "git sparse-checkout"
27 better.
28
e79552d1
JH
29 * "git checkout -B <branch> [<start-point>]" allowed a branch that is
30 in use in another worktree to be updated and checked out, which
31 might be a bit unexpected. The rule has been tightened, which is a
32 breaking change. "--ignore-other-worktrees" option is required to
33 unbreak you, if you are used to the current behaviour that "-B"
34 overrides the safety.
d4dbce1d
JH
35
36 * The builtin_objectmode attribute is populated for each path
37 without adding anything in .gitattributes files, which would be
38 useful in magic pathspec, e.g., ":(attr:builtin_objectmode=100755)"
39 to limit to executables.
e79552d1 40
e02ecfcc
JH
41 * "git fetch" learned to pay attention to "fetch.all" configuration
42 variable, which pretends as if "--all" was passed from the command
43 line when no remote parameter was given.
44
45 * In addition to (rather cryptic) Security Identifiers, show username
46 and domain in the error message when we barf on mismatch between
47 the Git directory and the current user on Windows.
48
b50a608b
JH
49 * The error message given when "git branch -d branch" fails due to
50 commits unique to the branch has been split into an error and a new
51 conditional advice message.
52
53 * When given an existing but unreadable file as a configuration file,
54 gitweb behaved as if the file did not exist at all, but now it
55 errors out. This is a change that may break backward compatibility.
56
57 * When $HOME/.gitignore is missing but XDG config file available, we
58 should write into the latter, not former. "git gc" and "git
59 maintenance" wrote into a wrong "global config" file, which have
60 been corrected.
61
c5b45477
JH
62 * Define "special ref" as a very narrow set that consists of
63 FETCH_HEAD and MERGE_HEAD, and clarify everything else that used to
64 be classified as such are actually just pseudorefs.
65
bc7ee2e5
JH
66 * All conditional "advice" messages show how to turn them off, which
67 becomes repetitive. Setting advice.* configuration explicitly on
68 now omits the instruction part.
69
70 * The "disable repository discovery of a bare repository" check,
71 triggered by setting safe.bareRepository configuration variable to
72 'explicit', has been loosened to exclude the ".git/" directory inside
73 a non-bare repository from the check. So you can do "cd .git &&
74 git cmd" to run a Git command that works on a bare repository without
75 explicitly specifying $GIT_DIR now.
76
2a540e43
JH
77 * The completion script (in contrib/) learned more options that can
78 be used with "git log".
79
80 * The labels on conflict markers for the common ancestor, our version,
81 and the other version are available to custom 3-way merge driver
82 via %S, %X, and %Y placeholders.
83
235986be
JH
84 * The write codepath for the reftable data learned to honor
85 core.fsync configuration.
86
1a87c842
JH
87
88Performance, Internal Implementation, Development Support etc.
89
90 * Process to add some form of low-level unit tests has started.
91
92 * Add support for GitLab CI.
93
94 * "git for-each-ref --no-sort" still sorted the refs alphabetically
95 which paid non-trivial cost. It has been redefined to show output
96 in an unspecified order, to allow certain optimizations to take
97 advantage of.
98
624eb90f
JH
99 * Simplify API implementation to delete references by eliminating
100 duplication.
101
102 * Subject approxidate() and show_date() machinery to OSS-Fuzz.
103
e79552d1
JH
104 * A new helper to let us pretend that we called lstat() when we know
105 our cache_entry is up-to-date via fsmonitor.
106
107 * The optimization based on fsmonitor in the "diff --cached"
108 codepath is resurrected with the "fake-lstat" introduced earlier.
109
110 * Test balloon to use C99 "bool" type from <stdbool.h> has been
111 added.
112
113 * "git clone" has been prepared to allow cloning a repository with
114 non-default hash function into a repository that uses the reftable
115 backend.
116
d4dbce1d
JH
117 * Streaming spans of packfile data used to be done only from a
118 single, primary, pack in a repository with multiple packfiles. It
119 has been extended to allow reuse from other packfiles, too.
120
b50a608b
JH
121 * Comment updates to help developers not to attempt to modify
122 messages from plumbing commands that must stay constant.
123
124 It might make sense to reassess the plumbing needs every few years,
125 but that should be done as a separate effort.
126
127 * Move test-ctype helper to the unit-test framework.
128
129 * Instead of manually creating refs/ hierarchy on disk upon a
130 creation of a secondary worktree, which is only usable via the
131 files backend, use the refs API to populate it.
132
133 * CI for GitLab learned to drive macOS jobs.
134
135 * A few tests to "git commit -o <pathspec>" and "git commit -i
136 <pathspec>" has been added.
137
2a540e43
JH
138 * Tests on ref API are moved around to prepare for reftable.
139
235986be
JH
140 * The Makefile often had to say "-L$(path) -R$(path)" that repeats
141 the path to the same library directory for link time and runtime.
142 A Makefile template is used to reduce such repetition.
143
1a87c842
JH
144
145Fixes since v2.43
146-----------------
147
148 * The way CI testing used "prove" could lead to running the test
149 suite twice needlessly, which has been corrected.
150 (merge e7e03ef995 js/ci-discard-prove-state later to maint).
151
152 * Update ref-related tests.
153
154 * "git format-patch --encode-email-headers" ignored the option when
155 preparing the cover letter, which has been corrected.
156
157 * Newer versions of Getopt::Long started giving warnings against our
158 (ab)use of it in "git send-email". Bump the minimum version
159 requirement for Perl to 5.8.1 (from September 2002) to allow
160 simplifying our implementation.
161 (merge 6ff658cc78 tz/send-email-negatable-options later to maint).
162
624eb90f
JH
163 * Earlier we stopped relying on commit-graph that (still) records
164 information about commits that are lost from the object store,
165 which has negative performance implications. The default has been
166 flipped to disable this pessimization.
167 (merge b1df3b3867 ps/commit-graph-less-paranoid later to maint).
168
169 * Stale URLs have been updated to their current counterparts (or
170 archive.org) and HTTP links are replaced with working HTTPS links.
171 (merge 62b4f7b9c6 js/update-urls-in-doc-and-comment later to maint).
172
173 * trace2 streams used to record the URLs that potentially embed
174 authentication material, which has been corrected.
175 (merge 16fa3eebc0 jh/trace2-redact-auth later to maint).
176
055bb6e9
JH
177 * The sample pre-commit hook that tries to catch introduction of new
178 paths that use potentially non-portable characters did not notice
179 an existing path getting renamed to such a problematic path, when
180 rename detection was enabled.
181 (merge d9fd71fa2a jp/use-diff-index-in-pre-commit-sample later to maint).
182
183 * The command line parser for the "log" family of commands was too
184 loose when parsing certain numbers, e.g., silently ignoring the
185 extra 'q' in "git log -n 1q" without complaining, which has been
186 tightened up.
187 (merge 71a1e94821 jc/revision-parse-int later to maint).
188
189 * "git $cmd --end-of-options --rev -- --path" for some $cmd failed
190 to interpret "--rev" as a rev, and "--path" as a path. This was
191 fixed for many programs like "reset" and "checkout".
192 (merge 9385174627 jk/end-of-options later to maint).
193
194 * "git bisect reset" has been taught to clean up state files and refs
195 even when BISECT_START file is gone.
196 (merge daaa03e54c jk/bisect-reset-fix later to maint).
197
198 * Some codepaths did not correctly parse configuration variables
199 specified with valueless "true", which has been corrected.
200 (merge d49cb162fa jk/implicit-true later to maint).
201
e79552d1
JH
202 * Code clean-up for sanity checking of command line options for "git
203 show-ref".
204 (merge 7382497372 rs/show-ref-incompatible-options later to maint).
205
206 * The code to parse the From e-mail header has been updated to avoid
207 recursion.
208 (merge dee182941f jk/mailinfo-iterative-unquote-comment later to maint).
209
210 * "git fetch --atomic" issued an unnecessary empty error message,
211 which has been corrected.
212 (merge 18ce48918c jx/fetch-atomic-error-message-fix later to maint).
213
a26002b6
JH
214 * Command line completion script (in contrib/) learned to work better
215 with the reftable backend.
216 (merge 44dbb3bf29 sh/completion-with-reftable later to maint).
217
218 * "git status" is taught to show both the branch being bisected and
219 being rebased when both are in effect at the same time.
220 (merge 990adccbdf rj/status-bisect-while-rebase later to maint).
221
a54a84b3
JH
222 * "git archive --list extra garbage" silently ignored excess command
223 line parameters, which has been corrected.
224 (merge d6b6cd1393 jc/archive-list-with-extra-args later to maint).
225
226 * "git sparse-checkout set" added default patterns even when the
227 patterns are being fed from the standard input, which has been
228 corrected.
229 (merge 53ded839ae jc/sparse-checkout-set-default-fix later to maint).
230
231 * "git sparse-checkout (add|set) --[no-]cone --end-of-options" did
232 not handle "--end-of-options" correctly after a recent update.
233
d4dbce1d
JH
234 * Unlike other environment variables that took the usual
235 true/false/yes/no as well as 0/1, GIT_FLUSH only understood 0/1,
236 which has been corrected.
237 (merge 556e68032f cp/git-flush-is-an-env-bool later to maint).
238
186b115d
JH
239 * Clearing in-core repository (happens during e.g., "git fetch
240 --recurse-submodules" with commit graph enabled) made in-core
241 commit object in an inconsistent state by discarding the necessary
242 data from commit-graph too early, which has been corrected.
243 (merge d70f554cdf jk/commit-graph-slab-clear-fix later to maint).
244
c5b45477
JH
245 * Update to a new feature recently added, "git show-ref --exists".
246 (merge 0aabeaa562 tc/show-ref-exists-fix later to maint).
247
248 * oss-fuzz tests are built and run in CI.
249 (merge c4a9cf1df3 js/oss-fuzz-build-in-ci later to maint).
250
251 * Rename detection logic ignored the final line of a file if it is an
252 incomplete line.
253 (merge 1c5bc6971e en/diffcore-delta-final-line-fix later to maint).
254
bc7ee2e5
JH
255 * GitHub CI update.
256 (merge 0188b2c8e0 pb/ci-github-skip-logs-for-broken-tests later to maint).
257
258 * "git diff --no-rename A B" did not disable rename detection but did
259 not trigger an error from the command line parser.
260 (merge 457f96252f rs/parse-options-with-keep-unknown-abbrev-fix later to maint).
261
262 * "git archive --remote=<remote>" learned to talk over the smart
263 http (aka stateless) transport.
264 (merge 176cd68634 jx/remote-archive-over-smart-http later to maint).
265
2a540e43
JH
266 * Fetching via protocol v0 over Smart HTTP transport sometimes failed
267 to correctly auto-follow tags.
268 (merge fba732c462 jk/fetch-auto-tag-following-fix later to maint).
269
270 * The documentation for the --exclude-per-directory option marked it
271 as deprecated, which confused readers into thinking there may be a
272 plan to remove it in the future, which was not our intention.
273 (merge 0009542cab jc/ls-files-doc-update later to maint).
274
235986be
JH
275 * "git diff --no-index file1 file2" segfaulted while invoking the
276 external diff driver, which has been corrected.
277 (merge 85a9a63c92 jk/diff-external-with-no-index later to maint).
278
279 * Rewrite //-comments to /* comments */ in files whose comments
280 prevalently use the latter.
281 (merge de65079d7b jc/comment-style-fixes later to maint).
282
283 * Cirrus CI jobs started breaking because we specified version of
284 FreeBSD that is no longer available, which has been corrected.
285 (merge 81fffb66d3 cb/use-freebsd-13-2-at-cirrus-ci later to maint).
286
1a87c842 287 * Other code cleanup, docfix, build fix, etc.
624eb90f
JH
288 (merge 50f1abcff6 js/packfile-h-typofix later to maint).
289 (merge cbf498eb53 jb/reflog-expire-delete-dry-run-options later to maint).
290 (merge 7854bf4960 rs/i18n-cannot-be-used-together later to maint).
291 (merge cd3c28c53a rs/column-leakfix later to maint).
055bb6e9
JH
292 (merge 866a1b9026 ps/ref-tests-update-more later to maint).
293 (merge e4299d26d4 mk/doc-gitfile-more later to maint).
294 (merge 792b86283b rs/incompatible-options-messages later to maint).
295 (merge ea8f9494ab jk/config-cleanup later to maint).
e79552d1
JH
296 (merge d1bd3a8c34 jk/mailinfo-oob-read-fix later to maint).
297 (merge c0cadb0576 ps/reftable-fixes later to maint).
298 (merge 647b5e0998 ps/chainlint-self-check-update later to maint).
299 (merge 68fcebfb1a es/add-doc-list-short-form-of-all-in-synopsis later to maint).
300 (merge bc62d27d5c jc/doc-most-refs-are-not-that-special later to maint).
301 (merge 6d6f1cd7ee jc/doc-misspelt-refs-fix later to maint).
302 (merge 37e8d795be sp/test-i18ngrep later to maint).
303 (merge fbc6526ea6 rs/t6300-compressed-size-fix later to maint).
a26002b6
JH
304 (merge 45184afb4d rs/rebase-use-strvec-pushf later to maint).
305 (merge a762af3dfd jc/retire-cas-opt-name-constant later to maint).
306 (merge de7c27a186 la/trailer-cleanups later to maint).
307 (merge d44b517137 jc/orphan-unborn later to maint).
a54a84b3
JH
308 (merge 63956c553d ml/doc-merge-updates later to maint).
309 (merge d57c671a51 en/header-cleanup later to maint).
310 (merge 5b7eec4bc5 rs/fast-import-simplify-mempool-allocation later to maint).
d4dbce1d
JH
311 (merge 291873e5d6 js/contributor-docs-updates later to maint).
312 (merge 54d8a2531b jk/t1006-cat-file-objectsize-disk later to maint).
313 (merge 7033d5479b jx/sideband-chomp-newline-fix later to maint).
314 (merge 9cd30af991 ms/rebase-insnformat-doc-fix later to maint).
186b115d
JH
315 (merge 03bcc93769 cp/sideband-array-index-comment-fix later to maint).
316 (merge 993d38a066 jk/index-pack-lsan-false-positive-fix later to maint).
317 (merge 25aec06326 ib/rebase-reschedule-doc later to maint).
e02ecfcc
JH
318 (merge 5aea3955bc rj/clarify-branch-doc-m later to maint).
319 (merge 9cce3be2df bk/bisect-doc-fix later to maint).
b50a608b
JH
320 (merge 8f50984cf4 ne/doc-filter-blob-limit-fix later to maint).
321 (merge f10b0989b8 la/strvec-comment-fix later to maint).
322 (merge 8430b438f6 vd/fsck-submodule-url-test later to maint).
c5b45477
JH
323 (merge f10031fadd nb/rebase-x-shell-docfix later to maint).
324 (merge af3d2c160f jc/majordomo-to-subspace later to maint).
bc7ee2e5 325 (merge ee9895b0ff sd/negotiate-trace-fix later to maint).
2a540e43 326 (merge 976d0251ce jc/coc-whitespace-fix later to maint).
235986be
JH
327 (merge 9023198280 jt/p4-spell-re-with-raw-string later to maint).
328 (merge 36c9c44fa4 tb/pack-bitmap-drop-unused-struct-member later to maint).
329 (merge 19ed0dff8f js/win32-retry-pipe-write-on-enospc later to maint).
330 (merge 3cb4384683 jc/t0091-with-unknown-git later to maint).