t5316: check behavior of pack-objects --depth=0
[git] / Documentation / RelNotes / 2.32.0.txt
1 Git 2.32 Release Notes
2 ======================
3
4 Backward compatibility notes
5 ----------------------------
6
7  * ".gitattributes", ".gitignore", and ".mailmap" files that are
8    symbolic links are ignored.
9
10
11 Updates since v2.31
12 -------------------
13
14 UI, Workflows & Features
15
16  * It does not make sense to make ".gitattributes", ".gitignore" and
17    ".mailmap" symlinks, as they are supposed to be usable from the
18    object store (think: bare repositories where HEAD:.mailmap etc. are
19    used).  When these files are symbolic links, we used to read the
20    contents of the files pointed by them by mistake, which has been
21    corrected.
22
23  * "git stash show" learned to optionally show untracked part of the
24    stash.
25
26  * "git log --format='...'" learned "%(describe)" placeholder.
27
28  * "git repack" so far has been only capable of repacking everything
29    under the sun into a single pack (or split by size).  A cleverer
30    strategy to reduce the cost of repacking a repository has been
31    introduced.
32
33  * The http codepath learned to let the credential layer to cache the
34    password used to unlock a certificate that has successfully been
35    used.
36
37  * "git commit --fixup=<commit>", which was to tweak the changes made
38    to the contents while keeping the original log message intact,
39    learned "--fixup=(amend|reword):<commit>", that can be used to
40    tweak both the message and the contents, and only the message,
41    respectively.
42
43  * When accessing a server with a URL like https://user:pass@site/, we
44    did not to fall back to the basic authentication with the
45    credential material embedded in the URL after the "Negotiate"
46    authentication failed.  Now we do.
47
48  * "git send-email" learned to honor the core.hooksPath configuration.
49
50  * "git format-patch -v<n>" learned to allow a reroll count that is
51    not an integer.
52
53  * "git commit" learned "--trailer <key>[=<value>]" option; together
54    with the interpret-trailers command, this will make it easier to
55    support custom trailers.
56
57  * "git clone --reject-shallow" option fails the clone as soon as we
58    notice that we are cloning from a shallow repository.
59
60  * A configuration variable has been added to force tips of certain
61    refs to be given a reachability bitmap.
62
63  * "gitweb" learned "e-mail privacy" feature to redact strings that
64    look like e-mail addresses on various pages.
65
66  * "git apply --3way" has always been "to fall back to 3-way merge
67    only when straight application fails". Swap the order of falling
68    back so that 3-way is always attempted first (only when the option
69    is given, of course) and then straight patch application is used as
70    a fallback when it fails.
71
72  * "git apply" now takes "--3way" and "--cached" at the same time, and
73    work and record results only in the index.
74
75  * The command line completion (in contrib/) has learned that
76    CHERRY_PICK_HEAD is a possible pseudo-ref.
77
78  * Userdiff patterns for "Scheme" has been added.
79
80  * "git log" learned "--diff-merges=<style>" option, with an
81    associated configuration variable log.diffMerges.
82
83
84 Performance, Internal Implementation, Development Support etc.
85
86  * Rename detection rework continues.
87
88  * GIT_TEST_FAIL_PREREQS is a mechanism to skip test pieces with
89    prerequisites to catch broken tests that depend on the side effects
90    of optional pieces, but did not work at all when negative
91    prerequisites were involved.
92    (merge 27d578d904 jk/fail-prereq-testfix later to maint).
93
94  * "git diff-index" codepath has been taught to trust fsmonitor status
95    to reduce number of lstat() calls.
96    (merge 7e5aa13d2c nk/diff-index-fsmonitor later to maint).
97
98  * Reorganize Makefile to allow building git.o and other essential
99    objects without extra stuff needed only for testing.
100
101  * Preparatory API changes for parallel checkout.
102
103  * A simple IPC interface gets introduced to build services like
104    fsmonitor on top.
105
106  * Fsck API clean-up.
107
108  * SECURITY.md that is facing individual contributors and end users
109    has been introduced.  Also a procedure to follow when preparing
110    embargoed releases has been spelled out.
111    (merge 09420b7648 js/security-md later to maint).
112
113  * Optimize "rev-list --use-bitmap-index --objects" corner case that
114    uses negative tags as the stopping points.
115
116  * CMake update for vsbuild.
117
118  * An on-disk reverse-index to map the in-pack location of an object
119    back to its object name across multiple packfiles is introduced.
120
121  * Generate [ec]tags under $(QUIET_GEN).
122
123  * Clean-up codepaths that implements "git send-email --validate"
124    option and improves the message from it.
125
126  * The last remnant of gettext-poison has been removed.
127
128  * The test framework has been taught to optionally turn the default
129    merge strategy to "ort" throughout the system where we use
130    three-way merges internally, like cherry-pick, rebase etc.,
131    primarily to enhance its test coverage (the strategy has been
132    available as an explicit "-s ort" choice).
133
134  * A bit of code clean-up and a lot of test clean-up around userdiff
135    area.
136
137  * Handling of "promisor packs" that allows certain objects to be
138    missing and lazily retrievable has been optimized (a bit).
139
140  * When packet_write() fails, we gave an extra error message
141    unnecessarily, which has been corrected.
142
143  * The checkout machinery has been taught to perform the actual
144    write-out of the files in parallel when able.
145
146  * Show errno in the trace output in the error codepath that calls
147    read_raw_ref method.
148
149  * Effort to make the command line completion (in contrib/) safe with
150    "set -u" continues.
151
152
153 Fixes since v2.31
154 -----------------
155
156  * The fsmonitor interface read from its input without making sure
157    there is something to read from.  This bug is new in 2.31
158    timeframe.
159
160  * The data structure used by fsmonitor interface was not properly
161    duplicated during an in-core merge, leading to use-after-free etc.
162
163  * "git bisect" reimplemented more in C during 2.30 timeframe did not
164    take an annotated tag as a good/bad endpoint well.  This regression
165    has been corrected.
166
167  * Fix macros that can silently inject unintended null-statements.
168
169  * CALLOC_ARRAY() macro replaces many uses of xcalloc().
170
171  * Update insn in Makefile comments to run fuzz-all target.
172
173  * Fix a corner case bug in "git mv" on case insensitive systems,
174    which was introduced in 2.29 timeframe.
175
176  * We had a code to diagnose and die cleanly when a required
177    clean/smudge filter is missing, but an assert before that
178    unnecessarily fired, hiding the end-user facing die() message.
179    (merge 6fab35f748 mt/cleanly-die-upon-missing-required-filter later to maint).
180
181  * Update C code that sets a few configuration variables when a remote
182    is configured so that it spells configuration variable names in the
183    canonical camelCase.
184    (merge 0f1da600e6 ab/remote-write-config-in-camel-case later to maint).
185
186  * A new configuration variable has been introduced to allow choosing
187    which version of the generation number gets used in the
188    commit-graph file.
189    (merge 702110aac6 ds/commit-graph-generation-config later to maint).
190
191  * Perf test update to work better in secondary worktrees.
192    (merge 36e834abc1 jk/perf-in-worktrees later to maint).
193
194  * Updates to memory allocation code around the use of pcre2 library.
195    (merge c1760352e0 ab/grep-pcre2-allocfix later to maint).
196
197  * "git -c core.bare=false clone --bare ..." would have segfaulted,
198    which has been corrected.
199    (merge 75555676ad bc/clone-bare-with-conflicting-config later to maint).
200
201  * When "git checkout" removes a path that does not exist in the
202    commit it is checking out, it wasn't careful enough not to follow
203    symbolic links, which has been corrected.
204    (merge fab78a0c3d mt/checkout-remove-nofollow later to maint).
205
206  * A few option description strings started with capital letters,
207    which were corrected.
208    (merge 5ee90326dc cc/downcase-opt-help later to maint).
209
210  * Plug or annotate remaining leaks that trigger while running the
211    very basic set of tests.
212    (merge 68ffe095a2 ah/plugleaks later to maint).
213
214  * The hashwrite() API uses a buffering mechanism to avoid calling
215    write(2) too frequently. This logic has been refactored to be
216    easier to understand.
217    (merge ddaf1f62e3 ds/clarify-hashwrite later to maint).
218
219  * "git cherry-pick/revert" with or without "--[no-]edit" did not spawn
220    the editor as expected (e.g. "revert --no-edit" after a conflict
221    still asked to edit the message), which has been corrected.
222    (merge 39edfd5cbc en/sequencer-edit-upon-conflict-fix later to maint).
223
224  * "git daemon" has been tightened against systems that take backslash
225    as directory separator.
226    (merge 9a7f1ce8b7 rs/daemon-sanitize-dir-sep later to maint).
227
228  * A NULL-dereference bug has been corrected in an error codepath in
229    "git for-each-ref", "git branch --list" etc.
230    (merge c685450880 jk/ref-filter-segfault-fix later to maint).
231
232  * Streamline the codepath to fix the UTF-8 encoding issues in the
233    argv[] and the prefix on macOS.
234    (merge c7d0e61016 tb/precompose-prefix-simplify later to maint).
235
236  * The command-line completion script (in contrib/) had a couple of
237    references that would have given a warning under the "-u" (nounset)
238    option.
239    (merge c5c0548d79 vs/completion-with-set-u later to maint).
240
241  * When "git pack-objects" makes a literal copy of a part of existing
242    packfile using the reachability bitmaps, its update to the progress
243    meter was broken.
244    (merge 8e118e8490 jk/pack-objects-bitmap-progress-fix later to maint).
245
246  * The dependencies for config-list.h and command-list.h were broken
247    when the former was split out of the latter, which has been
248    corrected.
249    (merge 56550ea718 sg/bugreport-fixes later to maint).
250
251  * "git push --quiet --set-upstream" was not quiet when setting the
252    upstream branch configuration, which has been corrected.
253    (merge f3cce896a8 ow/push-quiet-set-upstream later to maint).
254
255  * The prefetch task in "git maintenance" assumed that "git fetch"
256    from any remote would fetch all its local branches, which would
257    fetch too much if the user is interested in only a subset of
258    branches there.
259    (merge 32f67888d8 ds/maintenance-prefetch-fix later to maint).
260
261  * Clarify that pathnames recorded in Git trees are most often (but
262    not necessarily) encoded in UTF-8.
263    (merge 9364bf465d ab/pathname-encoding-doc later to maint).
264
265  * Other code cleanup, docfix, build fix, etc.
266    (merge f451960708 dl/cat-file-doc-cleanup later to maint).
267    (merge 12604a8d0c sv/t9801-test-path-is-file-cleanup later to maint).
268    (merge ea7e63921c jr/doc-ignore-typofix later to maint).
269    (merge 23c781f173 ps/update-ref-trans-hook-doc later to maint).
270    (merge 42efa1231a jk/filter-branch-sha256 later to maint).
271    (merge 4c8e3dca6e tb/push-simple-uses-branch-merge-config later to maint).
272    (merge 6534d436a2 bs/asciidoctor-installation-hints later to maint).
273    (merge 47957485b3 ab/read-tree later to maint).
274    (merge 2be927f3d1 ab/diff-no-index-tests later to maint).
275    (merge 76593c09bb ab/detox-gettext-tests later to maint).
276    (merge 28e29ee38b jc/doc-format-patch-clarify later to maint).
277    (merge fc12b6fdde fm/user-manual-use-preface later to maint).
278    (merge dba94e3a85 cc/test-helper-bloom-usage-fix later to maint).
279    (merge 61a7660516 hn/reftable-tables-doc-update later to maint).
280    (merge 81ed96a9b2 jt/fetch-pack-request-fix later to maint).
281    (merge 151b6c2dd7 jc/doc-do-not-capitalize-clarification later to maint).
282    (merge 9160068ac6 js/access-nul-emulation-on-windows later to maint).