]> git.ipfire.org Git - thirdparty/git.git/blame - Documentation/RelNotes/2.44.0.txt
Merge branch 'pb/complete-config'
[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
5216f8f5
JH
87 * The "--fsck-objects" option of "git index-pack" now can take the
88 optional parameter to tweak severity of different fsck errors.
89
90 * The wincred credential backend has been taught to support oauth
91 refresh token the same way as credential-cache and
92 credential-libsecret backends.
93
ad1a6695
JH
94 * Command line completion support (in contrib/) has been
95 updated for "git bisect".
96
97 * "git branch" and friends learned to use the formatted text as
98 sorting key, not the underlying timestamp value, when the --sort
99 option is used with author or committer timestamp with a format
100 specifier (e.g., "--sort=creatordate:format:%H:%M:%S").
101
1a87c842
JH
102
103Performance, Internal Implementation, Development Support etc.
104
105 * Process to add some form of low-level unit tests has started.
106
107 * Add support for GitLab CI.
108
109 * "git for-each-ref --no-sort" still sorted the refs alphabetically
110 which paid non-trivial cost. It has been redefined to show output
111 in an unspecified order, to allow certain optimizations to take
112 advantage of.
113
624eb90f
JH
114 * Simplify API implementation to delete references by eliminating
115 duplication.
116
117 * Subject approxidate() and show_date() machinery to OSS-Fuzz.
118
e79552d1
JH
119 * A new helper to let us pretend that we called lstat() when we know
120 our cache_entry is up-to-date via fsmonitor.
121
122 * The optimization based on fsmonitor in the "diff --cached"
123 codepath is resurrected with the "fake-lstat" introduced earlier.
124
125 * Test balloon to use C99 "bool" type from <stdbool.h> has been
126 added.
127
128 * "git clone" has been prepared to allow cloning a repository with
129 non-default hash function into a repository that uses the reftable
130 backend.
131
d4dbce1d
JH
132 * Streaming spans of packfile data used to be done only from a
133 single, primary, pack in a repository with multiple packfiles. It
134 has been extended to allow reuse from other packfiles, too.
135
b50a608b
JH
136 * Comment updates to help developers not to attempt to modify
137 messages from plumbing commands that must stay constant.
138
139 It might make sense to reassess the plumbing needs every few years,
140 but that should be done as a separate effort.
141
142 * Move test-ctype helper to the unit-test framework.
143
144 * Instead of manually creating refs/ hierarchy on disk upon a
145 creation of a secondary worktree, which is only usable via the
146 files backend, use the refs API to populate it.
147
148 * CI for GitLab learned to drive macOS jobs.
149
150 * A few tests to "git commit -o <pathspec>" and "git commit -i
151 <pathspec>" has been added.
152
2a540e43
JH
153 * Tests on ref API are moved around to prepare for reftable.
154
235986be
JH
155 * The Makefile often had to say "-L$(path) -R$(path)" that repeats
156 the path to the same library directory for link time and runtime.
157 A Makefile template is used to reduce such repetition.
158
5216f8f5
JH
159 * The priority queue test has been migrated to the unit testing
160 framework.
161
ad1a6695
JH
162 * Setting `feature.experimental` opts the user into multi-pack reuse
163 experiment
164
4cde9f07
JH
165 * Squelch node.js 16 deprecation warnings from GitHub Actions CI
166 by updating actions/github-script and actions/checkout that use
167 node.js 20.
168
169 * The mechanism to report the filename in the source code, used by
170 the unit-test machinery, assumed that the compiler expanded __FILE__
171 to the path to the source given to the $(CC), but some compilers
172 give full path, breaking the output. This has been corrected.
173
1a87c842
JH
174
175Fixes since v2.43
176-----------------
177
178 * The way CI testing used "prove" could lead to running the test
179 suite twice needlessly, which has been corrected.
1a87c842
JH
180
181 * Update ref-related tests.
182
183 * "git format-patch --encode-email-headers" ignored the option when
184 preparing the cover letter, which has been corrected.
185
186 * Newer versions of Getopt::Long started giving warnings against our
187 (ab)use of it in "git send-email". Bump the minimum version
188 requirement for Perl to 5.8.1 (from September 2002) to allow
189 simplifying our implementation.
1a87c842 190
624eb90f
JH
191 * Earlier we stopped relying on commit-graph that (still) records
192 information about commits that are lost from the object store,
193 which has negative performance implications. The default has been
194 flipped to disable this pessimization.
624eb90f
JH
195
196 * Stale URLs have been updated to their current counterparts (or
197 archive.org) and HTTP links are replaced with working HTTPS links.
624eb90f
JH
198
199 * trace2 streams used to record the URLs that potentially embed
200 authentication material, which has been corrected.
624eb90f 201
055bb6e9
JH
202 * The sample pre-commit hook that tries to catch introduction of new
203 paths that use potentially non-portable characters did not notice
204 an existing path getting renamed to such a problematic path, when
205 rename detection was enabled.
055bb6e9
JH
206
207 * The command line parser for the "log" family of commands was too
208 loose when parsing certain numbers, e.g., silently ignoring the
209 extra 'q' in "git log -n 1q" without complaining, which has been
210 tightened up.
055bb6e9
JH
211
212 * "git $cmd --end-of-options --rev -- --path" for some $cmd failed
213 to interpret "--rev" as a rev, and "--path" as a path. This was
214 fixed for many programs like "reset" and "checkout".
055bb6e9
JH
215
216 * "git bisect reset" has been taught to clean up state files and refs
217 even when BISECT_START file is gone.
055bb6e9
JH
218
219 * Some codepaths did not correctly parse configuration variables
220 specified with valueless "true", which has been corrected.
055bb6e9 221
e79552d1
JH
222 * Code clean-up for sanity checking of command line options for "git
223 show-ref".
e79552d1
JH
224
225 * The code to parse the From e-mail header has been updated to avoid
226 recursion.
e79552d1
JH
227
228 * "git fetch --atomic" issued an unnecessary empty error message,
229 which has been corrected.
e79552d1 230
a26002b6
JH
231 * Command line completion script (in contrib/) learned to work better
232 with the reftable backend.
a26002b6
JH
233
234 * "git status" is taught to show both the branch being bisected and
235 being rebased when both are in effect at the same time.
a26002b6 236
a54a84b3
JH
237 * "git archive --list extra garbage" silently ignored excess command
238 line parameters, which has been corrected.
a54a84b3
JH
239
240 * "git sparse-checkout set" added default patterns even when the
241 patterns are being fed from the standard input, which has been
242 corrected.
a54a84b3
JH
243
244 * "git sparse-checkout (add|set) --[no-]cone --end-of-options" did
245 not handle "--end-of-options" correctly after a recent update.
246
d4dbce1d
JH
247 * Unlike other environment variables that took the usual
248 true/false/yes/no as well as 0/1, GIT_FLUSH only understood 0/1,
249 which has been corrected.
d4dbce1d 250
186b115d
JH
251 * Clearing in-core repository (happens during e.g., "git fetch
252 --recurse-submodules" with commit graph enabled) made in-core
253 commit object in an inconsistent state by discarding the necessary
254 data from commit-graph too early, which has been corrected.
186b115d 255
c5b45477 256 * Update to a new feature recently added, "git show-ref --exists".
c5b45477
JH
257
258 * oss-fuzz tests are built and run in CI.
259 (merge c4a9cf1df3 js/oss-fuzz-build-in-ci later to maint).
260
261 * Rename detection logic ignored the final line of a file if it is an
262 incomplete line.
c5b45477 263
bc7ee2e5
JH
264 * GitHub CI update.
265 (merge 0188b2c8e0 pb/ci-github-skip-logs-for-broken-tests later to maint).
266
267 * "git diff --no-rename A B" did not disable rename detection but did
268 not trigger an error from the command line parser.
bc7ee2e5
JH
269
270 * "git archive --remote=<remote>" learned to talk over the smart
271 http (aka stateless) transport.
272 (merge 176cd68634 jx/remote-archive-over-smart-http later to maint).
273
2a540e43
JH
274 * Fetching via protocol v0 over Smart HTTP transport sometimes failed
275 to correctly auto-follow tags.
276 (merge fba732c462 jk/fetch-auto-tag-following-fix later to maint).
277
278 * The documentation for the --exclude-per-directory option marked it
279 as deprecated, which confused readers into thinking there may be a
280 plan to remove it in the future, which was not our intention.
281 (merge 0009542cab jc/ls-files-doc-update later to maint).
282
235986be
JH
283 * "git diff --no-index file1 file2" segfaulted while invoking the
284 external diff driver, which has been corrected.
235986be
JH
285
286 * Rewrite //-comments to /* comments */ in files whose comments
287 prevalently use the latter.
235986be
JH
288
289 * Cirrus CI jobs started breaking because we specified version of
290 FreeBSD that is no longer available, which has been corrected.
291 (merge 81fffb66d3 cb/use-freebsd-13-2-at-cirrus-ci later to maint).
292
5216f8f5
JH
293 * A caller called index_file_exists() that takes a string expressed
294 as <ptr, length> with a wrong length, which has been corrected.
295 (merge 156e28b36d jh/sparse-index-expand-to-path-fix later to maint).
296
ad1a6695
JH
297 * A failed "git tag -s" did not necessarily result in an error
298 depending on the crypto backend, which has been corrected.
ad1a6695
JH
299
300 * "git stash" sometimes was silent even when it failed due to
301 unwritable index file, which has been corrected.
ad1a6695
JH
302
303 * "git show-ref --verify" did not show things like "CHERRY_PICK_HEAD",
304 which has been corrected.
305
4cde9f07
JH
306 * Recent conversion to allow more than 0/1 in GIT_FLUSH broke the
307 mechanism by flipping what yes/no means by mistake, which has been
308 corrected.
4cde9f07 309
1a87c842 310 * Other code cleanup, docfix, build fix, etc.
e02ecfcc
JH
311 (merge 5aea3955bc rj/clarify-branch-doc-m later to maint).
312 (merge 9cce3be2df bk/bisect-doc-fix later to maint).
b50a608b 313 (merge 8430b438f6 vd/fsck-submodule-url-test later to maint).
235986be 314 (merge 3cb4384683 jc/t0091-with-unknown-git later to maint).