Merge branch 'po/bundle-doc-clonable'
[git] / Documentation / RelNotes / 2.25.0.txt
1 Git 2.25 Release Notes
2 ======================
3
4 Updates since v2.24
5 -------------------
6
7 Backward compatibility notes
8
9
10 UI, Workflows & Features
11
12  * A tutorial on object enumeration has been added.
13
14  * The branch description ("git branch --edit-description") has been
15    used to fill the body of the cover letters by the format-patch
16    command; this has been enhanced so that the subject can also be
17    filled.
18
19  * "git rebase --preserve-merges" has been marked as deprecated; this
20    release stops advertising it in the "git rebase -h" output.
21
22  * The code to generate multi-pack index learned to show (or not to
23    show) progress indicators.
24
25  * "git apply --3way" learned to honor merge.conflictStyle
26    configuration variable, like merges would.
27
28  * The custom format for "git log --format=<format>" learned the l/L
29    placeholder that is similar to e/E that fills in the e-mail
30    address, but only the local part on the left side of '@'.
31
32  * Documentation pages for "git shortlog" now list commit limiting
33    options explicitly.
34
35  * The patterns to detect function boundary for Elixir language has
36    been added.
37
38  * The completion script (in contrib/) learned that the "--onto"
39    option of "git rebase" can take its argument as the value of the
40    option.
41
42  * The userdiff machinery has been taught that "async def" is another
43    way to begin a "function" in Python.
44
45  * "git range-diff" learned to take the "--notes=<ref>" and the
46    "--no-notes" options to control the commit notes included in the
47    log message that gets compared.
48
49  * "git rev-parse --show-toplevel" run outside of any working tree did
50    not error out, which has been corrected.
51
52
53 Performance, Internal Implementation, Development Support etc.
54
55  * Debugging support for lazy cloning has been a bit improved.
56
57  * Move the definition of a set of bitmask constants from 0ctal
58    literal to (1U<<count) notation.
59
60  * Test updates to prepare for SHA-2 transition continues.
61
62  * Crufty code and logic accumulated over time around the object
63    parsing and low-level object access used in "git fsck" have been
64    cleaned up.
65
66  * The implementation of "git log --graph" got refactored and then its
67    output got simplified.
68
69  * Follow recent push to move API docs from Documentation/ to header
70    files and update config.h
71
72  * "git bundle" has been taught to use the parse options API.  "git
73    bundle verify" learned "--quiet" and "git bundle create" learned
74    options to control the progress output.
75
76  * Handling of commit objects that use non UTF-8 encoding during
77    "rebase -i" has been improved.
78
79  * The beginning of rewriting "git add -i" in C.
80
81  * A label used in the todo list that are generated by "git rebase
82    --rebase-merges" is used as a part of a refname; the logic to come
83    up with the label has been tightened to avoid names that cannot be
84    used as such.
85
86  * The logic to avoid duplicate label names generated by "git rebase
87    --rebase-merges" forgot that the machinery itself uses "onto" as a
88    label name, which must be avoided by auto-generated labels, which
89    has been corrected.
90
91  * We have had compatibility fallback macro definitions for "PRIuMAX",
92    "PRIu32", etc. but did not for "PRIdMAX", while the code used the
93    last one apparently without any hiccup reported recently.  The
94    fallback macro definitions for these <inttypes.h> macros that must
95    appear in C99 systems have been removed.
96
97  * Recently we have declared that GIT_TEST_* variables take the
98    usual boolean values (it used to be that some used "non-empty
99    means true" and taking GIT_TEST_VAR=YesPlease as true); make
100    sure we notice and fail when non-bool strings are given to
101    these variables.
102
103  * Users of oneway_merge() (like "reset --hard") learned to take
104    advantage of fsmonitor to avoid unnecessary lstat(2) calls.
105
106  * Performance tweak on "git push" into a repository with many refs
107    that point at objects we have never heard of.
108
109  * PerfTest fix to avoid stale result mixed up with the latest round
110    of test results.
111
112
113 Fixes since v2.24
114 -----------------
115
116  * "rebase -i" ceased to run post-commit hook by mistake in an earlier
117    update, which has been corrected.
118
119  * "git notes copy $original" ought to copy the notes attached to the
120    original object to HEAD, but a mistaken tightening to command line
121    parameter validation made earlier disabled that feature by mistake.
122
123  * When all files from some subdirectory were renamed to the root
124    directory, the directory rename heuristics would fail to detect that
125    as a rename/merge of the subdirectory to the root directory, which has
126    been corrected.
127
128  * Code clean-up and a bugfix in the logic used to tell worktree local
129    and repository global refs apart.
130    (merge f45f88b2e4 sg/dir-trie-fixes later to maint).
131
132  * "git stash save" in a working tree that is sparsely checked out
133    mistakenly removed paths that are outside the area of interest.
134    (merge 4a58c3d7f7 js/update-index-ignore-removal-for-skip-worktree later to maint).
135
136  * "git rev-parse --git-path HEAD.lock" did not give the right path
137    when run in a secondary worktree.
138    (merge 76a53d640f js/git-path-head-dot-lock-fix later to maint).
139
140  * "git merge --no-commit" needs "--no-ff" if you do not want to move
141    HEAD, which has been corrected in the manual page for "git bisect".
142    (merge 8dd327b246 ma/bisect-doc-sample-update later to maint).
143
144  * "git worktree add" internally calls "reset --hard" that should not
145    descend into submodules, even when submodule.recurse configuration
146    is set, but it was affected.  This has been corrected.
147    (merge 4782cf2ab6 pb/no-recursive-reset-hard-in-worktree-add later to maint).
148
149  * Messages from die() etc. can be mixed up from multiple processes
150    without even line buffering on Windows, which has been worked
151    around.
152    (merge 116d1fa6c6 js/vreportf-wo-buffering later to maint).
153
154  * HTTP transport had possible allocator/deallocator mismatch, which
155    has been corrected.
156
157  * The watchman integration for fsmonitor was racy, which has been
158    corrected to be more conservative.
159    (merge dd0b61f577 kw/fsmonitor-watchman-fix later to maint).
160
161  * Fetching from multiple remotes into the same repository in parallel
162    had a bad interaction with the recent change to (optionally) update
163    the commit-graph after a fetch job finishes, as these parallel
164    fetches compete with each other.  Which has been corrected.
165
166  * Recent update to "git stash pop" made the command empty the index
167    when run with the "--quiet" option, which has been corrected.
168
169  * "git fetch" codepath had a big "do not lazily fetch missing objects
170    when I ask if something exists" switch.  This has been corrected by
171    marking the "does this thing exist?" calls with "if not please do not
172    lazily fetch it" flag.
173
174  * Test update to avoid wasted cycles.
175    (merge e0316695ec sg/skip-skipped-prereq later to maint).
176
177  * Error handling after "git push" finishes sending the packdata and
178    waits for the response to the remote side has been improved.
179    (merge ad7a403268 jk/send-pack-remote-failure later to maint).
180
181  * Some codepaths in "gitweb" that forgot to escape URLs generated
182    based on end-user input have been corrected.
183    (merge a376e37b2c jk/gitweb-anti-xss later to maint).
184
185  * CI jobs for macOS has been made less chatty when updating perforce
186    package used during testing.
187    (merge 0dbc4a0edf jc/azure-ci-osx-fix-fix later to maint).
188
189  * "git unpack-objects" used to show progress based only on the number
190    of received and unpacked objects, which stalled when it has to
191    handle an unusually large object.  It now shows the throughput as
192    well.
193    (merge bae60ba7e9 sg/unpack-progress-throughput later to maint).
194
195  * The sequencer machinery compared the HEAD and the state it is
196    attempting to commit to decide if the result would be a no-op
197    commit, even when amending a commit, which was incorrect, and
198    has been corrected.
199
200  * The code to parse GPG output used to assume incorrectly that the
201    finterprint for the primary key would always be present for a valid
202    signature, which has been corrected.
203    (merge 67a6ea6300 hi/gpg-optional-pkfp-fix later to maint).
204
205  * "git submodule status" and "git submodule status --cached" show
206    different things, but the documentation did not cover them
207    correctly, which has been corrected.
208    (merge 8d483c8408 mg/doc-submodule-status-cached later to maint).
209
210  * "git reset --patch $object" without any pathspec should allow a
211    tree object to be given, but incorrectly required a committish,
212    which has been corrected.
213
214  * "git submodule status" that is run from a subdirectory of the
215    superproject did not work well, which has been corrected.
216    (merge 1f3aea22c7 mg/submodule-status-from-a-subdirectory later to maint).
217
218  * The revision walking machinery uses resources like per-object flag
219    bits that need to be reset before a new iteration of walking
220    begins, but the resources related to topological walk were not
221    cleared correctly, which has been corrected.
222    (merge 0aa0c2b2ec mh/clear-topo-walk-upon-reset later to maint).
223
224  * TravisCI update.
225    (merge 176441bfb5 sg/osx-force-gcc-9 later to maint).
226
227  * While running "revert" or "cherry-pick --edit" for multiple
228    commits, a recent regression incorrectly detected "nothing to
229    commit, working tree clean", instead of replaying the commits,
230    which has been corrected.
231    (merge befd4f6a81 sg/assume-no-todo-update-in-cherry-pick later to maint).
232
233  * Other code cleanup, docfix, build fix, etc.
234    (merge 80736d7c5e jc/am-show-current-patch-docfix later to maint).
235    (merge 8b656572ca sg/commit-graph-usage-fix later to maint).
236    (merge 6c02042139 mr/clone-dir-exists-to-path-exists later to maint).
237    (merge 44ae131e38 sg/blame-indent-heuristics-is-now-the-default later to maint).
238    (merge 0115e5d929 dl/doc-diff-no-index-implies-exit-code later to maint).
239    (merge 270de6acbe en/t6024-style later to maint).
240    (merge 14c4776d75 ns/test-desc-typofix later to maint).
241    (merge 68d40f30c4 dj/typofix-merge-strat later to maint).
242    (merge f66e0401ab jk/optim-in-pack-idx-conversion later to maint).
243    (merge 169bed7421 rs/parse-options-dup-null-fix later to maint).
244    (merge 51bd6be32d rs/use-copy-array-in-mingw-shell-command-preparation later to maint).
245    (merge b018719927 ma/t7004 later to maint).
246    (merge 932757b0cc ar/install-doc-update-cmds-needing-the-shell later to maint).
247    (merge 46efd28be1 ep/guard-kset-tar-headers later to maint).
248    (merge 9e5afdf997 ec/fetch-mark-common-refs-trace2 later to maint).
249    (merge f0e58b3fe8 pb/submodule-update-fetches later to maint).
250    (merge 2a02262078 dl/t5520-cleanup later to maint).
251    (merge a4fb016ba1 js/pkt-line-h-typofix later to maint).
252    (merge 54a7a64613 rs/simplify-prepare-cmd later to maint).
253    (merge 3eae30e464 jk/lore-is-the-archive later to maint).
254    (merge 14b7664df8 dl/lore-is-the-archive later to maint).