read-cache API & users: make discard_index() return void
[git.git] / Documentation / RelNotes / 2.39.0.txt
blob153bf6d89b83ce08b3cb46805f9426afda30f42a
1 Git v2.39 Release Notes
2 =======================
4 UI, Workflows & Features
5 ------------------------
7  * "git grep" learned to expand the sparse-index more lazily and on
8    demand in a sparse checkout.
10  * By default, use of fsmonitor on a repository on networked
11    filesystem is disabled. Add knobs to make it workable on macOS.
13  * After checking out a "branch" that is a symbolic-ref that points at
14    another branch, "git symbolic-ref HEAD" reports the underlying
15    branch, not the symbolic-ref the user gave checkout as argument.
16    The command learned the "--no-recurse" option to stop after
17    dereferencing a symbolic-ref only once.
19  * "git branch --edit-description @{-1}" is now a way to edit branch
20    description of the branch you were on before switching to the
21    current branch.
23  * "git merge-tree --stdin" is a new way to request a series of merges
24    and report the merge results.
26  * "git shortlog" learned to group by the "format" string.
28  * A new "--include-whitespace" option is added to "git patch-id", and
29    existing bugs in the internal patch-id logic that did not match
30    what "git patch-id" produces have been corrected.
32  * Enable gc.cruftpacks by default for those who opt into
33    feature.experimental setting.
35  * "git repack" learns to send cruft objects out of the way into
36    packfiles outside the repository.
38 Performance, Internal Implementation, Development Support etc.
39 --------------------------------------------------------------
41  * With a bit of header twiddling, use the native regexp library on
42    macOS instead of the compat/ one.
44  * Prepare for GNU [ef]grep that throw warning of their uses.
46  * Sources related to fuzz testing have been moved down to their own
47    directory.
49  * Most credential helpers ignored unknown entries in a credential
50    description, but a few died upon seeing them.  The latter were
51    taught to ignore them, too
53  * "scalar unregister" in a repository that is already been
54    unregistered reported an error.
56  * Remove error detection from a function that fetches from promisor
57    remotes, and make it die when such a fetch fails to bring all the
58    requested objects, to give an early failure to various operations.
60  * Update CodingGuidelines to clarify what features to use and avoid
61    in C99.
63  * Avoid false-positive from LSan whose assumption may be broken with
64    higher optimization levels.
66  * Enable address and undefined sanitizer tasks at GitHub Actions CI.
68  * More UNUSED annotation to help using -Wunused option with the
69    compiler.
70    (merge 4b992f0a24 jk/unused-anno-more later to maint).
72  * Rewrite a deep recursion in the skipping negotiator to use a loop
73    with on-heap prio queue to avoid stack wastage.
75  * Add documentation for message IDs in fsck error messages.
77  * Define the logical elements of a "bundle list", data structure to
78    store them in-core, format to transfer them, and code to parse
79    them.
81  * The role the security mailing list plays in an embargoed release
82    has been documented.
84  * Two new facilities, "timer" and "counter", are introduced to the
85    trace2 API.
87  * Code simplification by using strvec_pushf() instead of building an
88    argument in a separate strbuf.
90  * Make sure generated dependency file is stably sorted to help
91    developers debugging their build issues.
93  * The glossary entries for "commit-graph file" and "reachability
94    bitmap" have been added.
96  * Various tests exercising the transfer.credentialsInUrl
97    configuration are taught to avoid making requests which require
98    resolving localhost to reduce CI-flakiness.
100  * A redundant diagnostic message is dropped from test_path_is_missing().
102  * Simplify the run-command API.
104  * Update the actions/github-script dependency in CI to avoid a
105    deprecation warning.
107  * Progress on being able to initialize a rev_info struct with a
108    macro.
110  * Add trace2 counters to the region to clear skip worktree bits in a
111    sparse checkout.
113  * Modernize test script to avoid "test -f" and friends.
115  * Avoid calling 'cache_tree_update()' when doing so would be
116    redundant.
118  * Update the credential-cache documentation to provide a more
119    realistic example.
121  * Makefile comments updates and reordering to clarify knobs used to
122    choose SHA implementations.
124  * A design document for sparse-checkout's future directions has been
125    added.
127 Fixes since v2.38
128 -----------------
130  * The codepath that reads from the index v4 had unaligned memory
131    accesses, which has been corrected.
133  * Fix messages incorrectly marked for translation.
135  * "git fsck" failed to release contents of tree objects already used
136    from the memory, which has been fixed.
138  * "git clone" did not like to see the "--bare" and the "--origin"
139    options used together without a good reason.
141  * "git remote rename" failed to rename a remote without fetch
142    refspec, which has been corrected.
144  * Documentation on various Boolean GIT_* environment variables have
145    been clarified.
147  * "git rebase -i" can mistakenly attempt to apply a fixup to a commit
148    itself, which has been corrected.
150  * "git multi-pack-index repack/expire" used to repack unreachable
151    cruft into a new pack, which have been corrected.
153  * In read-only repositories, "git merge-tree" tried to come up with a
154    merge result tree object, which it failed (which is not wrong) and
155    led to a segfault (which is bad), which has been corrected.
157  * Force C locale while running tests around httpd to make sure we can
158    find expected error messages in the log.
160  * Fix a logic in "mailinfo -b" that miscomputed the length of a
161    substring, which lead to an out-of-bounds access.
163  * The codepath to sign learned to report errors when it fails to read
164    from "ssh-keygen".
166  * Code clean-up that results in plugging a leak.
168  * "GIT_EDITOR=: git branch --edit-description" resulted in failure,
169    which has been corrected.
171  * The code to clean temporary object directories (used for
172    quarantine) tried to remove them inside its signal handler, which
173    was a no-no.
175  * Update comment in the Makefile about the RUNTIME_PREFIX config knob.
177  * Clarify that "the sentence after <area>: prefix does not begin with
178    a capital letter" rule applies only to the commit title.
180  * "git branch --edit-description" on an unborh branch misleadingly
181    said that no such branch exists, which has been corrected.
183  * Work around older clang that warns against C99 zero initialization
184    syntax for struct.
186  * Giving "--invert-grep" and "--all-match" without "--grep" to the
187    "git log" command resulted in an attempt to access grep pattern
188    expression structure that has not been allocated, which has been
189    corrected.
190    (merge db84376f98 ab/grep-simplify-extended-expression later to maint).
192  * "git diff rev^!" did not show combined diff to go to the rev from
193    its parents.
194    (merge a79c6b6081 rs/diff-caret-bang-with-parents later to maint).
196  * Allow configuration files in "protected" scopes to include other
197    configuration files.
198    (merge ecec57b3c9 gc/bare-repo-discovery later to maint).
200  * Give a bit more diversity to macOS CI by using sha1dc in one of the
201    jobs (the other one tests Apple Common Crypto).
202    (merge 1ad5c3df35 jc/ci-osx-with-sha1dc later to maint).
204  * A bugfix with tracing support in midx codepath
205    (merge e9c3839944 tb/midx-bitmap-selection-fix later to maint).
207  * When geometric repacking feature is in use together with the
208    --pack-kept-objects option, we lost packs marked with .keep files.
209    (merge 197443e80a tb/save-keep-pack-during-geometric-repack later to maint).
211  * Move a global variable added as a hack during regression fixes to
212    its proper place in the API.
213    (merge 0b0ab95f17 ab/run-hook-api-cleanup later to maint).
215  * Update to build procedure with VS using CMake/CTest.
216    (merge c858750b41 js/cmake-updates later to maint).
218  * The short-help text shown by "git cmd -h" and the synopsis text
219    shown at the beginning of "git help cmd" have been made more
220    consistent.
222  * When creating a multi-pack bitmap, remove per-pack bitmap files
223    unconditionally as they will never be consulted.
224    (merge 55d902cd61 tb/remove-unused-pack-bitmap later to maint).
226  * Fix a longstanding syntax error in Git.pm error codepath.
228  * "git diff --stat" etc. were invented back when everything was ASCII
229    and strlen() was a way to measure the display width of a string;
230    adjust them to compute the display width assuming UTF-8 pathnames.
231    (merge ce8529b2bb tb/diffstat-with-utf8-strwidth later to maint).
233  * "git branch --edit-description" can exit with status -1 which is
234    not a good practice; it learned to use 1 as everybody else instead.
236  * "git apply" limits its input to a bit less than 1 GiB.
238  * Merging a branch with directory renames into a branch that changes
239    the directory to a symlink was mishandled by the ort merge
240    strategy, which has been corrected.
242  * A bugfix to "git subtree" in its split and merge features.
244  * Fix some bugs in the reflog messages when rebasing and changes the
245    reflog messages of "rebase --apply" to match "rebase --merge" with
246    the aim of making the reflog easier to parse.
248  * "git rebase --keep-base" used to discard the commits that are
249    already cherry-picked to the upstream, even when "keep-base" meant
250    that the base, on top of which the history is being rebuilt, does
251    not yet include these cherry-picked commits.  The --keep-base
252    option now implies --reapply-cherry-picks and --no-fork-point
253    options.
255  * The way "git repack" creared temporary files when it received a
256    signal was prone to deadlocking, which has been corrected.
258  * Various tests exercising the transfer.credentialsInUrl
259    configuration are taught to avoid making requests which require
260    resolving localhost to reduce CI-flakiness.
262  * The adjust_shared_perm() helper function learned to refrain from
263    setting the "g+s" bit on directories when it is not necessary.
265  * "git archive" mistakenly complained twice about a missing
266    executable, which has been corrected.
268  * Fix a bug where `git branch -d` did not work on an orphaned HEAD.
270  * `git rebase --update-refs` would delete references when all
271    `update-ref` commands in the sequencer were removed, which has been
272    corrected.
274  * Other code cleanup, docfix, build fix, etc.
275    (merge 413bc6d20a ds/cmd-main-reorder later to maint).
276    (merge 8d2863e4ed nw/t1002-cleanup later to maint).