Merge branch 'vd/scalar-generalize-diagnose'
[alt-git.git] / Documentation / RelNotes / 2.38.0.txt
blob4a08602e0d42c671b2b5228878ea6a25bb10e928
1 Git v2.38 Release Notes
2 =======================
4 UI, Workflows & Features
6  * "git remote show [-n] frotz" now pays attention to negative
7    pathspec.
9  * "git push" sometimes perform poorly when reachability bitmaps are
10    used, even in a repository where other operations are helped by
11    bitmaps.  The push.useBitmaps configuration variable is introduced
12    to allow disabling use of reachability bitmaps only for "git push".
14  * "git grep -m<max-hits>" is a way to limit the hits shown per file.
16  * "git merge-tree" learned a new mode where it takes two commits and
17    computes a tree that would result in the merge commit, if the
18    histories leading to these two commits were to be merged.
20  * "git mv A B" in a sparsely populated working tree can be asked to
21    move a path between directories that are "in cone" (i.e. expected
22    to be materialized in the working tree) and "out of cone"
23    (i.e. expected to be hidden).  The handling of such cases has been
24    improved.
26  * Earlier, HTTP transport clients learned to tell the server side
27    what locale they are in by sending Accept-Language HTTP header, but
28    this was done only for some requests but not others.
30  * Introduce a discovery.barerepository configuration variable that
31    allows users to forbid discovery of bare repositories.
33  * Various messages that come from the pack-bitmap codepaths have been
34    tweaked.
36  * "git rebase -i" learns to update branches whose tip appear in the
37    rebased range with "--update-refs" option.
39  * "git ls-files" learns the "--format" option to tweak its output.
41  * "git cat-file" learned an option to use the mailmap when showing
42    commit and tag objects.
44  * When "git merge" finds that it cannot perform a merge, it should
45    restore the working tree to the state before the command was
46    initiated, but in some corner cases it didn't.
48  * Operating modes like "--batch" of "git cat-file" command learned to
49    take NUL-terminated input, instead of one-item-per-line.
51  * "git rm" has become more aware of the sparse-index feature.
53  * "git rev-list --disk-usage" learned to take an optional value
54    "human" to show the reported value in human-readable format, like
55    "3.40MiB".
58 Performance, Internal Implementation, Development Support etc.
60  * Collection of what is referenced by objects in promisor packs have
61    been optimized to inspect these objects in the in-pack order.
63  * Introduce a helper to see if a branch is already being worked on
64    (hence should not be newly checked out in a working tree), which
65    performs much better than the existing find_shared_symref() to
66    replace many uses of the latter.
68  * Teach "git archive" to (optionally and then by default) avoid
69    spawning an external "gzip" process when creating ".tar.gz" (and
70    ".tgz") archives.
72  * Allow large objects read from a packstream to be streamed into a
73    loose object file straight, without having to keep it in-core as a
74    whole.
76  * Further preparation to turn git-submodule.sh into a builtin
77    continues.
79  * Apply Coccinelle rule to turn raw memmove() into MOVE_ARRAY() cpp
80    macro, which would improve maintainability and readability.
82  * Teach "make all" to build gitweb as well.
84  * Tweak tests so that they still work when the "git init" template
85    did not create .git/info directory.
87  * Add Coccinelle rules to detect the pattern of initializing and then
88    finalizing a structure without using it in between at all, which
89    happens after code restructuring and the compilers fail to
90    recognize as an unused variable.
92  * The code to convert between GPG trust level strings and internal
93    constants we use to represent them have been cleaned up.
95  * Support for libnettle as SHA256 implementation has been added.
97  * The way "git multi-pack" uses parse-options API has been improved.
99  * A coccinelle rule (in contrib/) to encourage use of COPY_ARRAY
100    macro has been improved.
102  * API tweak to make it easier to run fuzz testing on commit-graph parser.
104  * Omit fsync-related trace2 entries when their values are all zero.
106  * The codepath to write multi-pack index has been taught to release a
107    large chunk of memory that holds an array of objects in the packs,
108    as soon as it is done with the array, to reduce memory consumption.
110  * Add a level of redirection to array allocation API in xdiff part,
111    to make it easier to share with the libgit2 project.
113  * "git fetch" client logs the partial clone filter used in the trace2
114    output.
116  * The "bundle URI" design gets documented.
119 Fixes since v2.37
120 -----------------
122  * Rewrite of "git add -i" in C that appeared in Git 2.25 didn't
123    correctly record a removed file to the index, which was fixed.
125  * Certain diff options are currently ignored when combined-diff is
126    shown; mark them as incompatible with the feature.
128  * Adjust technical/bitmap-format to be formatted by AsciiDoc, and
129    add some missing information to the documentation.
131  * Fixes for tests when the source directory has unusual characters in
132    its path, e.g. whitespaces, double-quotes, etc.
134  * "git mktree --missing" lazily fetched objects that are missing from
135    the local object store, which was totally unnecessary for the purpose
136    of creating the tree object(s) from its input.
138  * Give _() markings to fatal/warning/usage: labels that are shown in
139    front of these messages.
141  * References to commands-to-be-typed-literally in "git rebase"
142    documentation mark-up have been corrected.
144  * In a non-bare repository, the behavior of Git when the
145    core.worktree configuration variable points at a directory that has
146    a repository as its subdirectory, regressed in Git 2.27 days.
148  * Recent update to vimdiff layout code has been made more robust
149    against different end-user vim settings.
151  * Plug various memory leaks.
152    (merge ece3974ba6 ab/leakfix later to maint).
154  * Plug various memory leaks in test-tool commands.
155    (merge f40a693450 ab/test-tool-leakfix later to maint).
157  * Fixes a long-standing corner case bug around directory renames in
158    the merge-ort strategy.
160  * The resolve-undo information in the index was not protected against
161    GC, which has been corrected.
163  * A corner case bug where lazily fetching objects from a promisor
164    remote resulted in infinite recursion has been corrected.
166  * "git clone" from a repository with some ref whose HEAD is unborn
167    did not set the HEAD in the resulting repository correctly, which
168    has been corrected.
170  * An earlier attempt to plug leaks placed a clean-up label to jump to
171    at a bogus place, which as been corrected.
173  * Variable quoting fix in the vimdiff driver of "git mergetool"
175  * "git shortlog -n" relied on the underlying qsort() to be stable,
176    which shouldn't have.  Fixed.
178  * A fix for a regression in test framework.
180  * mkstemp() emulation on Windows has been improved.
182  * Add missing documentation for "include" and "includeIf" features in
183    "git config" file format, which incidentally teaches the command
184    line completion to include them in its offerings.
186  * Avoid "white/black-list" in documentation and code comments.
188  * Workaround for a compiler warning against use of die() in
189    osx-keychain (in contrib/).
191  * Workaround for a false positive compiler warning.
193  * "git p4" working on UTF-16 files on Windows did not implement
194    CRLF-to-LF conversion correctly, which has been corrected.
196  * "git p4" did not handle non-ASCII client name well, which has been
197    corrected.
199  * "rerere-train" script (in contrib/) used to honor commit.gpgSign
200    while recreating the throw-away merges.
202  * "git checkout" miscounted the paths it updated, which has been
203    corrected.
205  * Fix for a bug that makes write-tree to fail to write out a
206    non-existent index as a tree, introduced in 2.37.
208  * There was a bug in the codepath to upgrade generation information
209    in commit-graph from v1 to v2 format, which has been corrected.
211  * Gitweb had legacy URL shortener that is specific to the way
212    projects hosted on kernel.org used to (but no longer) work, which
213    has been removed.
214    (merge 75707da4fa jr/gitweb-title-shortening later to maint).
216  * Fix build procedure for Windows that uses CMake so that it can pick
217    up the shell interpreter from local installation location.
218    (merge 476e54b1c6 ca/unignore-local-installation-on-windows later to maint).
220  * Conditionally allow building Python interpreter on Windows
221    (merge 2f0623aaa7 js/mingw-with-python later to maint).
223  * Fix to lstat() emulation on Windows.
224    (merge 82ba1191ff js/lstat-mingw-enotdir-fix later to maint).
226  * Older gcc with -Wall complains about the universal zero initializer
227    "struct s = { 0 };" idiom, which makes developers' lives
228    inconvenient (as -Werror is enabled by DEVELOPER=YesPlease).  The
229    build procedure has been tweaked to help these compilers.
230    (merge b53a5f2416 jk/struct-zero-init-with-older-gcc later to maint).
232  * Plug memory leaks in the failure code path in the "merge-ort" merge
233    strategy backend.
234    (merge 1250dff32b js/ort-clean-up-after-failed-merge later to maint).
236  * "git symbolic-ref symref non..sen..se" is now diagnosed as an error.
237    (merge 04ede97211 lt/symbolic-ref-sanity later to maint).
239  * A follow-up fix to a fix for a regression in 2.36.
240    (merge 99ddc24672 ab/hooks-regression-fix later to maint).
242  * Avoid repeatedly running getconf to ask libc version in the test
243    suite, and instead just as it once per script.
244    (merge a6a58f7801 pw/use-glibc-tunable-for-malloc-optim later to maint).
246  * Platform-specific code that determines if a directory is OK to use
247    as a repository has been taught to report more details, especially
248    on Windows.
249    (merge 3f7207e2ea js/safe-directory-plus later to maint).
251  * "vimdiff3" regression fix.
252    (merge 34133d9658 fc/vimdiff-layout-vimdiff3-fix later to maint).
254  * "git fsck" reads mode from tree objects but canonicalizes the mode
255    before passing it to the logic to check object sanity, which has
256    hid broken tree objects from the checking logic.  This has been
257    corrected, but to help exiting projects with broken tree objects
258    that they cannot fix retroactively, the severity of anomalies this
259    code detects has been demoted to "info" for now.
260    (merge 4dd3b045f5 jk/fsck-tree-mode-bits-fix later to maint).
262  * Fixes to sparse index compatibility work for "reset" and "checkout"
263    commands.
264    (merge b15207b8cf vd/sparse-reset-checkout-fixes later to maint).
266  * Other code cleanup, docfix, build fix, etc.
267    (merge 94955d576b gc/git-reflog-doc-markup later to maint).
268    (merge efae7ce692 po/doc-add-renormalize later to maint).