summaryrefslogtreecommitdiff
path: root/Documentation/RelNotes/2.38.0.txt
blob: 335b0e8e752e02458b2e329b3ac2a4c0707c0443 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
Git v2.38 Release Notes
=======================
 
UI, Workflows & Features
 
 * "git remote show [-n] frotz" now pays attention to negative
   pathspec.
 
 * "git push" sometimes perform poorly when reachability bitmaps are
   used, even in a repository where other operations are helped by
   bitmaps.  The push.useBitmaps configuration variable is introduced
   to allow disabling use of reachability bitmaps only for "git push".
 
 * "git grep -m<max-hits>" is a way to limit the hits shown per file.
 
 * "git merge-tree" learned a new mode where it takes two commits and
   computes a tree that would result in the merge commit, if the
   histories leading to these two commits were to be merged.
 
 * "git mv A B" in a sparsely populated working tree can be asked to
   move a path between directories that are "in cone" (i.e. expected
   to be materialized in the working tree) and "out of cone"
   (i.e. expected to be hidden).  The handling of such cases has been
   improved.
 
 * Earlier, HTTP transport clients learned to tell the server side
   what locale they are in by sending Accept-Language HTTP header, but
   this was done only for some requests but not others.
 
 * Introduce a discovery.barerepository configuration variable that
   allows users to forbid discovery of bare repositories.
 
 * Various messages that come from the pack-bitmap codepaths have been
   tweaked.
 
 * "git rebase -i" learns to update branches whose tip appear in the
   rebased range with "--update-refs" option.
 
 * "git ls-files" learns the "--format" option to tweak its output.
 
 * "git cat-file" learned an option to use the mailmap when showing
   commit and tag objects.
 
 * When "git merge" finds that it cannot perform a merge, it should
   restore the working tree to the state before the command was
   initiated, but in some corner cases it didn't.
 
 
Performance, Internal Implementation, Development Support etc.
 
 * Collection of what is referenced by objects in promisor packs have
   been optimized to inspect these objects in the in-pack order.
 
 * Introduce a helper to see if a branch is already being worked on
   (hence should not be newly checked out in a working tree), which
   performs much better than the existing find_shared_symref() to
   replace many uses of the latter.
 
 * Teach "git archive" to (optionally and then by default) avoid
   spawning an external "gzip" process when creating ".tar.gz" (and
   ".tgz") archives.
 
 * Allow large objects read from a packstream to be streamed into a
   loose object file straight, without having to keep it in-core as a
   whole.
 
 * Further preparation to turn git-submodule.sh into a builtin
   continues.
 
 * Apply Coccinelle rule to turn raw memmove() into MOVE_ARRAY() cpp
   macro, which would improve maintainability and readability.
 
 * Teach "make all" to build gitweb as well.
 
 * Tweak tests so that they still work when the "git init" template
   did not create .git/info directory.
 
 * Add Coccinelle rules to detect the pattern of initializing and then
   finalizing a structure without using it in between at all, which
   happens after code restructuring and the compilers fail to
   recognize as an unused variable.
 
 * The code to convert between GPG trust level strings and internal
   constants we use to represent them have been cleaned up.
 
 * Support for libnettle as SHA256 implementation has been added.
 
 * The way "git multi-pack" uses parse-options API has been improved.
 
 * A coccinelle rule (in contrib/) to encourage use of COPY_ARRAY
   macro has been improved.
 
 * API tweak to make it easier to run fuzz testing on commit-graph parser.
 
 * Omit fsync-related trace2 entries when their values are all zero.
 
 * The codepath to write multi-pack index has been taught to release a
   large chunk of memory that holds an array of objects in the packs,
   as soon as it is done with the array, to reduce memory consumption.
 
 * Add a level of redirection to array allocation API in xdiff part,
   to make it easier to share with the libgit2 project.
 
 
Fixes since v2.37
-----------------
 
 * Rewrite of "git add -i" in C that appeared in Git 2.25 didn't
   correctly record a removed file to the index, which was fixed.
 
 * Certain diff options are currently ignored when combined-diff is
   shown; mark them as incompatible with the feature.
 
 * Adjust technical/bitmap-format to be formatted by AsciiDoc, and
   add some missing information to the documentation.
 
 * Fixes for tests when the source directory has unusual characters in
   its path, e.g. whitespaces, double-quotes, etc.
 
 * "git mktree --missing" lazily fetched objects that are missing from
   the local object store, which was totally unnecessary for the purpose
   of creating the tree object(s) from its input.
 
 * Give _() markings to fatal/warning/usage: labels that are shown in
   front of these messages.
 
 * References to commands-to-be-typed-literally in "git rebase"
   documentation mark-up have been corrected.
 
 * In a non-bare repository, the behavior of Git when the
   core.worktree configuration variable points at a directory that has
   a repository as its subdirectory, regressed in Git 2.27 days.
 
 * Recent update to vimdiff layout code has been made more robust
   against different end-user vim settings.
 
 * Plug various memory leaks.
   (merge ece3974ba6 ab/leakfix later to maint).
 
 * Plug various memory leaks in test-tool commands.
   (merge f40a693450 ab/test-tool-leakfix later to maint).
 
 * Fixes a long-standing corner case bug around directory renames in
   the merge-ort strategy.
 
 * The resolve-undo information in the index was not protected against
   GC, which has been corrected.
   (merge e0ad13977a jc/resolve-undo later to maint).
 
 * A corner case bug where lazily fetching objects from a promisor
   remote resulted in infinite recursion has been corrected.
   (merge cb88b37cb9 hx/lookup-commit-in-graph-fix later to maint).
 
 * "git clone" from a repository with some ref whose HEAD is unborn
   did not set the HEAD in the resulting repository correctly, which
   has been corrected.
   (merge daf7898abb jk/clone-unborn-confusion later to maint).
 
 * An earlier attempt to plug leaks placed a clean-up label to jump to
   at a bogus place, which as been corrected.
 
 * Variable quoting fix in the vimdiff driver of "git mergetool"
 
 * "git shortlog -n" relied on the underlying qsort() to be stable,
   which shouldn't have.  Fixed.
 
 * A fix for a regression in test framework.
 
 * mkstemp() emulation on Windows has been improved.
   (merge ae25974de3 rs/mingw-tighten-mkstemp later to maint).
 
 * Add missing documentation for "include" and "includeIf" features in
   "git config" file format, which incidentally teaches the command
   line completion to include them in its offerings.
   (merge 07aed58017 mb/config-document-include later to maint).
 
 * Avoid "white/black-list" in documentation and code comments.
   (merge f5adaa5cc3 ds/doc-wo-whitelist later to maint).
 
 * Workaround for a compiler warning against use of die() in
   osx-keychain (in contrib/).
   (merge f2fc531585 ld/osx-keychain-usage-fix later to maint).
 
 * Workaround for a false positive compiler warning.
   (merge b4f52f09ae ds/win-syslog-compiler-fix later to maint).
 
 * "git p4" working on UTF-16 files on Windows did not implement
   CRLF-to-LF conversion correctly, which has been corrected.
   (merge 4d35f74421 mb/p4-utf16-crlf later to maint).
 
 * "git p4" did not handle non-ASCII client name well, which has been
   corrected.
   (merge d205483695 kk/p4-client-name-encoding-fix later to maint).
 
 * "rerere-train" script (in contrib/) used to honor commit.gpgSign
   while recreating the throw-away merges.
   (merge cc391fc886 cl/rerere-train-with-no-sign later to maint).
 
 * "git checkout" miscounted the paths it updated, which has been
   corrected.
   (merge 611c7785e8 mt/checkout-count-fix later to maint).
 
 * Fix for a bug that makes write-tree to fail to write out a
   non-existent index as a tree, introduced in 2.37.
   (merge 4447d4129d tk/untracked-cache-with-uall later to maint).
 
 * There was a bug in the codepath to upgrade generation information
   in commit-graph from v1 to v2 format, which has been corrected.
   (merge 9550f6c16a tb/commit-graph-genv2-upgrade-fix later to maint).
 
 * Other code cleanup, docfix, build fix, etc.
   (merge a700395eaf ma/t4200-update later to maint).
   (merge ae436f283c ma/sparse-checkout-cone-doc-fix later to maint).
   (merge a10f6e2bda sg/index-format-doc-update later to maint).
   (merge ce5f07983d mt/pkt-line-comment-tweak later to maint).
   (merge 1e11fab59c jc/string-list-cleanup later to maint).