]>
Commit | Line | Data |
---|---|---|
1a87c842 JH |
1 | Git v2.44 Release Notes |
2 | ======================= | |
3 | ||
e79552d1 JH |
4 | Backward 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 |
11 | UI, 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 | |
103 | Performance, 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 | ||
1a87c842 JH |
165 | |
166 | Fixes since v2.43 | |
167 | ----------------- | |
168 | ||
169 | * The way CI testing used "prove" could lead to running the test | |
170 | suite twice needlessly, which has been corrected. | |
1a87c842 JH |
171 | |
172 | * Update ref-related tests. | |
173 | ||
174 | * "git format-patch --encode-email-headers" ignored the option when | |
175 | preparing the cover letter, which has been corrected. | |
176 | ||
177 | * Newer versions of Getopt::Long started giving warnings against our | |
178 | (ab)use of it in "git send-email". Bump the minimum version | |
179 | requirement for Perl to 5.8.1 (from September 2002) to allow | |
180 | simplifying our implementation. | |
1a87c842 | 181 | |
624eb90f JH |
182 | * Earlier we stopped relying on commit-graph that (still) records |
183 | information about commits that are lost from the object store, | |
184 | which has negative performance implications. The default has been | |
185 | flipped to disable this pessimization. | |
624eb90f JH |
186 | |
187 | * Stale URLs have been updated to their current counterparts (or | |
188 | archive.org) and HTTP links are replaced with working HTTPS links. | |
624eb90f JH |
189 | |
190 | * trace2 streams used to record the URLs that potentially embed | |
191 | authentication material, which has been corrected. | |
624eb90f | 192 | |
055bb6e9 JH |
193 | * The sample pre-commit hook that tries to catch introduction of new |
194 | paths that use potentially non-portable characters did not notice | |
195 | an existing path getting renamed to such a problematic path, when | |
196 | rename detection was enabled. | |
055bb6e9 JH |
197 | |
198 | * The command line parser for the "log" family of commands was too | |
199 | loose when parsing certain numbers, e.g., silently ignoring the | |
200 | extra 'q' in "git log -n 1q" without complaining, which has been | |
201 | tightened up. | |
055bb6e9 JH |
202 | |
203 | * "git $cmd --end-of-options --rev -- --path" for some $cmd failed | |
204 | to interpret "--rev" as a rev, and "--path" as a path. This was | |
205 | fixed for many programs like "reset" and "checkout". | |
055bb6e9 JH |
206 | |
207 | * "git bisect reset" has been taught to clean up state files and refs | |
208 | even when BISECT_START file is gone. | |
055bb6e9 JH |
209 | |
210 | * Some codepaths did not correctly parse configuration variables | |
211 | specified with valueless "true", which has been corrected. | |
055bb6e9 | 212 | |
e79552d1 JH |
213 | * Code clean-up for sanity checking of command line options for "git |
214 | show-ref". | |
e79552d1 JH |
215 | |
216 | * The code to parse the From e-mail header has been updated to avoid | |
217 | recursion. | |
e79552d1 JH |
218 | |
219 | * "git fetch --atomic" issued an unnecessary empty error message, | |
220 | which has been corrected. | |
e79552d1 | 221 | |
a26002b6 JH |
222 | * Command line completion script (in contrib/) learned to work better |
223 | with the reftable backend. | |
a26002b6 JH |
224 | |
225 | * "git status" is taught to show both the branch being bisected and | |
226 | being rebased when both are in effect at the same time. | |
a26002b6 | 227 | |
a54a84b3 JH |
228 | * "git archive --list extra garbage" silently ignored excess command |
229 | line parameters, which has been corrected. | |
a54a84b3 JH |
230 | |
231 | * "git sparse-checkout set" added default patterns even when the | |
232 | patterns are being fed from the standard input, which has been | |
233 | corrected. | |
a54a84b3 JH |
234 | |
235 | * "git sparse-checkout (add|set) --[no-]cone --end-of-options" did | |
236 | not handle "--end-of-options" correctly after a recent update. | |
237 | ||
d4dbce1d JH |
238 | * Unlike other environment variables that took the usual |
239 | true/false/yes/no as well as 0/1, GIT_FLUSH only understood 0/1, | |
240 | which has been corrected. | |
d4dbce1d | 241 | |
186b115d JH |
242 | * Clearing in-core repository (happens during e.g., "git fetch |
243 | --recurse-submodules" with commit graph enabled) made in-core | |
244 | commit object in an inconsistent state by discarding the necessary | |
245 | data from commit-graph too early, which has been corrected. | |
186b115d | 246 | |
c5b45477 JH |
247 | * Update to a new feature recently added, "git show-ref --exists". |
248 | (merge 0aabeaa562 tc/show-ref-exists-fix later to maint). | |
249 | ||
250 | * oss-fuzz tests are built and run in CI. | |
251 | (merge c4a9cf1df3 js/oss-fuzz-build-in-ci later to maint). | |
252 | ||
253 | * Rename detection logic ignored the final line of a file if it is an | |
254 | incomplete line. | |
255 | (merge 1c5bc6971e en/diffcore-delta-final-line-fix later to maint). | |
256 | ||
bc7ee2e5 JH |
257 | * GitHub CI update. |
258 | (merge 0188b2c8e0 pb/ci-github-skip-logs-for-broken-tests later to maint). | |
259 | ||
260 | * "git diff --no-rename A B" did not disable rename detection but did | |
261 | not trigger an error from the command line parser. | |
262 | (merge 457f96252f rs/parse-options-with-keep-unknown-abbrev-fix later to maint). | |
263 | ||
264 | * "git archive --remote=<remote>" learned to talk over the smart | |
265 | http (aka stateless) transport. | |
266 | (merge 176cd68634 jx/remote-archive-over-smart-http later to maint). | |
267 | ||
2a540e43 JH |
268 | * Fetching via protocol v0 over Smart HTTP transport sometimes failed |
269 | to correctly auto-follow tags. | |
270 | (merge fba732c462 jk/fetch-auto-tag-following-fix later to maint). | |
271 | ||
272 | * The documentation for the --exclude-per-directory option marked it | |
273 | as deprecated, which confused readers into thinking there may be a | |
274 | plan to remove it in the future, which was not our intention. | |
275 | (merge 0009542cab jc/ls-files-doc-update later to maint). | |
276 | ||
235986be JH |
277 | * "git diff --no-index file1 file2" segfaulted while invoking the |
278 | external diff driver, which has been corrected. | |
279 | (merge 85a9a63c92 jk/diff-external-with-no-index later to maint). | |
280 | ||
281 | * Rewrite //-comments to /* comments */ in files whose comments | |
282 | prevalently use the latter. | |
283 | (merge de65079d7b jc/comment-style-fixes later to maint). | |
284 | ||
285 | * Cirrus CI jobs started breaking because we specified version of | |
286 | FreeBSD that is no longer available, which has been corrected. | |
287 | (merge 81fffb66d3 cb/use-freebsd-13-2-at-cirrus-ci later to maint). | |
288 | ||
5216f8f5 JH |
289 | * A caller called index_file_exists() that takes a string expressed |
290 | as <ptr, length> with a wrong length, which has been corrected. | |
291 | (merge 156e28b36d jh/sparse-index-expand-to-path-fix later to maint). | |
292 | ||
ad1a6695 JH |
293 | * A failed "git tag -s" did not necessarily result in an error |
294 | depending on the crypto backend, which has been corrected. | |
295 | (merge 6931049c32 jc/sign-buffer-failure-propagation-fix later to maint). | |
296 | ||
297 | * "git stash" sometimes was silent even when it failed due to | |
298 | unwritable index file, which has been corrected. | |
299 | (merge d2058cb2f0 ps/report-failure-from-git-stash later to maint). | |
300 | ||
301 | * "git show-ref --verify" did not show things like "CHERRY_PICK_HEAD", | |
302 | which has been corrected. | |
303 | ||
1a87c842 | 304 | * Other code cleanup, docfix, build fix, etc. |
e02ecfcc JH |
305 | (merge 5aea3955bc rj/clarify-branch-doc-m later to maint). |
306 | (merge 9cce3be2df bk/bisect-doc-fix later to maint). | |
b50a608b JH |
307 | (merge 8f50984cf4 ne/doc-filter-blob-limit-fix later to maint). |
308 | (merge f10b0989b8 la/strvec-comment-fix later to maint). | |
309 | (merge 8430b438f6 vd/fsck-submodule-url-test later to maint). | |
c5b45477 JH |
310 | (merge f10031fadd nb/rebase-x-shell-docfix later to maint). |
311 | (merge af3d2c160f jc/majordomo-to-subspace later to maint). | |
bc7ee2e5 | 312 | (merge ee9895b0ff sd/negotiate-trace-fix later to maint). |
2a540e43 | 313 | (merge 976d0251ce jc/coc-whitespace-fix later to maint). |
235986be JH |
314 | (merge 9023198280 jt/p4-spell-re-with-raw-string later to maint). |
315 | (merge 36c9c44fa4 tb/pack-bitmap-drop-unused-struct-member later to maint). | |
316 | (merge 19ed0dff8f js/win32-retry-pipe-write-on-enospc later to maint). | |
317 | (merge 3cb4384683 jc/t0091-with-unknown-git later to maint). | |
ad1a6695 JH |
318 | (merge 841dbd40a3 jc/bisect-doc later to maint). |
319 | (merge 78307f1a89 pb/template-for-single-commit-pr later to maint). |