doc lint: lint relative section order
[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
61
62 Performance, Internal Implementation, Development Support etc.
63
64  * Rename detection rework continues.
65
66  * GIT_TEST_FAIL_PREREQS is a mechanism to skip test pieces with
67    prerequisites to catch broken tests that depend on the side effects
68    of optional pieces, but did not work at all when negative
69    prerequisites were involved.
70    (merge 27d578d904 jk/fail-prereq-testfix later to maint).
71
72  * "git diff-index" codepath has been taught to trust fsmonitor status
73    to reduce number of lstat() calls.
74    (merge 7e5aa13d2c nk/diff-index-fsmonitor later to maint).
75
76  * Reorganize Makefile to allow building git.o and other essential
77    objects without extra stuff needed only for testing.
78
79  * Preparatory API changes for parallel checkout.
80
81  * A simple IPC interface gets introduced to build services like
82    fsmonitor on top.
83
84  * Fsck API clean-up.
85
86  * SECURITY.md that is facing individual contributors and end users
87    has been introduced.  Also a procedure to follow when preparing
88    embargoed releases has been spelled out.
89    (merge 09420b7648 js/security-md later to maint).
90
91  * Optimize "rev-list --use-bitmap-index --objects" corner case that
92    uses negative tags as the stopping points.
93
94  * CMake update for vsbuild.
95
96  * An on-disk reverse-index to map the in-pack location of an object
97    back to its object name across multiple packfiles is introduced.
98
99  * Generate [ec]tags under $(QUIET_GEN).
100
101
102 Fixes since v2.31
103 -----------------
104
105  * The fsmonitor interface read from its input without making sure
106    there is something to read from.  This bug is new in 2.31
107    timeframe.
108
109  * The data structure used by fsmonitor interface was not properly
110    duplicated during an in-core merge, leading to use-after-free etc.
111
112  * "git bisect" reimplemented more in C during 2.30 timeframe did not
113    take an annotated tag as a good/bad endpoint well.  This regression
114    has been corrected.
115
116  * Fix macros that can silently inject unintended null-statements.
117
118  * CALLOC_ARRAY() macro replaces many uses of xcalloc().
119
120  * Update insn in Makefile comments to run fuzz-all target.
121
122  * Fix a corner case bug in "git mv" on case insensitive systems,
123    which was introduced in 2.29 timeframe.
124
125  * We had a code to diagnose and die cleanly when a required
126    clean/smudge filter is missing, but an assert before that
127    unnecessarily fired, hiding the end-user facing die() message.
128    (merge 6fab35f748 mt/cleanly-die-upon-missing-required-filter later to maint).
129
130  * Update C code that sets a few configuration variables when a remote
131    is configured so that it spells configuration variable names in the
132    canonical camelCase.
133    (merge 0f1da600e6 ab/remote-write-config-in-camel-case later to maint).
134
135  * A new configuration variable has been introduced to allow choosing
136    which version of the generation number gets used in the
137    commit-graph file.
138    (merge 702110aac6 ds/commit-graph-generation-config later to maint).
139
140  * Perf test update to work better in secondary worktrees.
141    (merge 36e834abc1 jk/perf-in-worktrees later to maint).
142
143  * Updates to memory allocation code around the use of pcre2 library.
144    (merge c1760352e0 ab/grep-pcre2-allocfix later to maint).
145
146  * "git -c core.bare=false clone --bare ..." would have segfaulted,
147    which has been corrected.
148    (merge 75555676ad bc/clone-bare-with-conflicting-config later to maint).
149
150  * When "git checkout" removes a path that does not exist in the
151    commit it is checking out, it wasn't careful enough not to follow
152    symbolic links, which has been corrected.
153    (merge fab78a0c3d mt/checkout-remove-nofollow later to maint).
154
155  * A few option description strings started with capital letters,
156    which were corrected.
157    (merge 5ee90326dc cc/downcase-opt-help later to maint).
158
159  * Plug or annotate remaining leaks that trigger while running the
160    very basic set of tests.
161    (merge 68ffe095a2 ah/plugleaks later to maint).
162
163  * The hashwrite() API uses a buffering mechanism to avoid calling
164    write(2) too frequently. This logic has been refactored to be
165    easier to understand.
166    (merge ddaf1f62e3 ds/clarify-hashwrite later to maint).
167
168  * "git cherry-pick/revert" with or without "--[no-]edit" did not spawn
169    the editor as expected (e.g. "revert --no-edit" after a conflict
170    still asked to edit the message), which has been corrected.
171    (merge 39edfd5cbc en/sequencer-edit-upon-conflict-fix later to maint).
172
173  * "git daemon" has been tightened against systems that take backslash
174    as directory separator.
175    (merge 9a7f1ce8b7 rs/daemon-sanitize-dir-sep later to maint).
176
177  * Other code cleanup, docfix, build fix, etc.
178    (merge f451960708 dl/cat-file-doc-cleanup later to maint).
179    (merge 12604a8d0c sv/t9801-test-path-is-file-cleanup later to maint).
180    (merge ea7e63921c jr/doc-ignore-typofix later to maint).
181    (merge 23c781f173 ps/update-ref-trans-hook-doc later to maint).
182    (merge 42efa1231a jk/filter-branch-sha256 later to maint).
183    (merge 4c8e3dca6e tb/push-simple-uses-branch-merge-config later to maint).
184    (merge 6534d436a2 bs/asciidoctor-installation-hints later to maint).
185    (merge 47957485b3 ab/read-tree later to maint).
186    (merge 2be927f3d1 ab/diff-no-index-tests later to maint).
187    (merge 76593c09bb ab/detox-gettext-tests later to maint).
188    (merge 28e29ee38b jc/doc-format-patch-clarify later to maint).