]>
Commit | Line | Data |
---|---|---|
79bcaf00 JH |
1 | Git 2.29 Release Notes |
2 | ====================== | |
3 | ||
4 | Updates since v2.28 | |
5 | ------------------- | |
6 | ||
7 | UI, Workflows & Features | |
8 | ||
9 | * "git help log" has been enhanced by sharing more material from the | |
10 | documentation for the underlying "git rev-list" command. | |
11 | ||
12 | * "git for-each-ref --format=<>" learned %(contents:size). | |
13 | ||
85b4e0a6 JH |
14 | * "git merge" learned to selectively omit " into <branch>" at the end |
15 | of the title of default merge message with merge.suppressDest | |
16 | configuration. | |
17 | ||
7814e8a0 JH |
18 | * The component to respond to "git fetch" request is made more |
19 | configurable to selectively allow or reject object filtering | |
20 | specification used for partial cloning. | |
21 | ||
2befe972 JH |
22 | * Stop when "sendmail.*" configuration variables are defined, which |
23 | could be a mistaken attempt to define "sendemail.*" variables. | |
24 | ||
25 | * The existing backends for "git mergetool" based on variants of vim | |
26 | have been refactored and then support for "nvim" has been added. | |
27 | ||
28 | * "git bisect" learns the "--first-parent" option to find the first | |
29 | breakage along the first-parent chain. | |
30 | ||
31 | * "git log --first-parent -p" showed patches only for single-parent | |
32 | commits on the first-parent chain; the "--first-parent" option has | |
33 | been made to imply "-m". Use "--no-diff-merges" to restore the | |
34 | previous behaviour to omit patches for merge commits. | |
35 | ||
675a4aaf JH |
36 | * The commit labels used to explain each side of conflicted hunks |
37 | placed by the sequencer machinery have been made more readable by | |
38 | humans. | |
39 | ||
e9b77c84 JH |
40 | * The "--batch-size" option of "git multi-pack-index repack" command |
41 | is now used to specify that very small packfiles are collected into | |
42 | one until the total size roughly exceeds it. | |
43 | ||
44 | * The recent addition of SHA-256 support is marked as experimental in | |
45 | the documentation. | |
46 | ||
47 | * "git fetch" learned --no-write-fetch-head option to avoid writing | |
48 | the FETCH_HEAD file. | |
49 | ||
20de7e7e JH |
50 | * Command line completion (in contrib/) usually omits redundant, |
51 | deprecated and/or dangerous options from its output; it learned to | |
52 | optionally include all of them. | |
53 | ||
e1971363 JH |
54 | * The output from the "diff" family of the commands had abbreviated |
55 | object names of blobs involved in the patch, but its length was not | |
56 | affected by the --abbrev option. Now it is. | |
57 | ||
79bcaf00 JH |
58 | |
59 | Performance, Internal Implementation, Development Support etc. | |
60 | ||
61 | * The changed-path Bloom filter is improved using ideas from an | |
62 | independent implementation. | |
63 | ||
64 | * Updates to the changed-paths bloom filter. | |
65 | ||
66 | * The test framework has been updated so that most tests will run | |
67 | with predictable (artificial) timestamps. | |
68 | ||
69 | * Preliminary clean-up of the refs API in preparation for adding a | |
70 | new refs backend "reftable". | |
71 | ||
72 | * Dev support to limit the use of test_must_fail to only git commands. | |
73 | ||
dc04167d JH |
74 | * While packing many objects in a repository with a promissor remote, |
75 | lazily fetching missing objects from the promissor remote one by | |
76 | one may be inefficient---the code now attempts to fetch all the | |
77 | missing objects in batch (obviously this won't work for a lazy | |
78 | clone that lazily fetches tree objects as you cannot even enumerate | |
79 | what blobs are missing until you learn which trees are missing). | |
80 | ||
81 | * The pretend-object mechanism checks if the given object already | |
82 | exists in the object store before deciding to keep the data | |
83 | in-core, but the check would have triggered lazy fetching of such | |
84 | an object from a promissor remote. | |
85 | ||
4f0a8be7 JH |
86 | * The argv_array API is useful for not just managing argv but any |
87 | "vector" (NULL-terminated array) of strings, and has seen adoption | |
88 | to a certain degree. It has been renamed to "strvec" to reduce the | |
89 | barrier to adoption. | |
90 | ||
675a4aaf JH |
91 | * The final leg of SHA-256 transition plus doc updates. Note that |
92 | there is no inter-operability between SHA-1 and SHA-256 | |
93 | repositories yet. | |
7814e8a0 JH |
94 | |
95 | * CMake support to build with MSVC for Windows bypassing the Makefile. | |
96 | ||
878e7276 JH |
97 | * A new helper function has_object() has been introduced to make it |
98 | easier to mark object existence checks that do and don't want to | |
99 | trigger lazy fetches, and a few such checks are converted using it. | |
100 | ||
2befe972 JH |
101 | * A no-op replacement function implemented as a C preprocessor macro |
102 | does not perform as good a job as one implemented as a "static | |
103 | inline" function in catching errors in parameters; replace the | |
104 | former with the latter in <git-compat-util.h> header. | |
105 | ||
106 | * Test framework update. | |
107 | (merge d572f52a64 es/test-cmp-typocatcher later to maint). | |
108 | ||
675a4aaf JH |
109 | * Updates to "git merge" tests, in preparation for a new merge |
110 | strategy backend. | |
111 | ||
112 | * midx and commit-graph files now use the byte defined in their file | |
113 | format specification for identifying the hash function used for | |
114 | object names. | |
115 | ||
20de7e7e JH |
116 | * The FETCH_HEAD is now always read from the filesystem regardless of |
117 | the ref backend in use, as its format is much richer than the | |
118 | normal refs, and written directly by "git fetch" as a plain file.. | |
119 | ||
e1971363 JH |
120 | * A handful of places in in-tree code still relied on being able to |
121 | execute the git subcommands, especially built-ins, in "git-foo" | |
122 | form, which have been corrected. | |
123 | ||
3a238e53 JH |
124 | * An unused binary has been discarded, and and a bunch of commands |
125 | have been turned into into built-in. | |
126 | ||
127 | * A handful of places in in-tree code still relied on being able to | |
128 | execute the git subcommands, especially built-ins, in "git-foo" | |
129 | form, which have been corrected. | |
130 | ||
79bcaf00 JH |
131 | |
132 | Fixes since v2.28 | |
133 | ----------------- | |
134 | ||
135 | * "git clone --separate-git-dir=$elsewhere" used to stomp on the | |
136 | contents of the existing directory $elsewhere, which has been | |
137 | taught to fail when $elsewhere is not an empty directory. | |
138 | (merge dfaa209a79 bw/fail-cloning-into-non-empty later to maint). | |
139 | ||
79bcaf00 JH |
140 | * With the base fix to 2.27 regresion, any new extensions in a v0 |
141 | repository would still be silently honored, which is not quite | |
142 | right. Instead, complain and die loudly. | |
143 | (merge ec91ffca04 jk/reject-newer-extensions-in-v0 later to maint). | |
144 | ||
145 | * Fetching from a lazily cloned repository resulted at the server | |
146 | side in attempts to lazy fetch objects that the client side has, | |
147 | many of which will not be available from the third-party anyway. | |
148 | (merge 77aa0941ce jt/avoid-lazy-fetching-upon-have-check later to maint). | |
149 | ||
150 | * Fix to an ancient bug caused by an over-eager attempt for | |
151 | optimization. | |
152 | (merge a98f7fb366 rs/add-index-entry-optim-fix later to maint). | |
153 | ||
154 | * Pushing a ref whose name contains non-ASCII character with the | |
155 | "--force-with-lease" option did not work over smart HTTP protocol, | |
156 | which has been corrected. | |
157 | (merge cd85b447bf bc/push-cas-cquoted-refname later to maint). | |
158 | ||
159 | * "git mv src dst", when src is an unmerged path, errored out | |
160 | correctly but with an incorrect error message to claim that src is | |
161 | not tracked, which has been clarified. | |
162 | (merge 9b906af657 ct/mv-unmerged-path-error later to maint). | |
163 | ||
164 | * Fix to a regression introduced during 2.27 cycle. | |
165 | (merge cada7308ad en/fill-directory-exponential later to maint). | |
166 | ||
dc04167d JH |
167 | * Command line completion (in contrib/) update. |
168 | (merge 688b87c81b mp/complete-show-color-moved later to maint). | |
169 | ||
4f0a8be7 JH |
170 | * All "mergy" operations that internally use the merge-recursive |
171 | machinery should honor the merge.renormalize configuration, but | |
172 | many of them didn't. | |
173 | ||
7814e8a0 JH |
174 | * Doc cleanup around "worktree". |
175 | (merge dc9c144be5 es/worktree-doc-cleanups later to maint). | |
176 | ||
878e7276 JH |
177 | * The "git blame --first-parent" option was not documented, but now |
178 | it is. | |
179 | (merge 11bc12ae1e rp/blame-first-parent-doc later to maint). | |
180 | ||
2befe972 JH |
181 | * The logic to find the ref transaction hook script attempted to |
182 | cache the path to the found hook without realizing that it needed | |
183 | to keep a copied value, as the API it used returned a transitory | |
184 | buffer space. This has been corrected. | |
185 | (merge 09b2aa30c9 ps/ref-transaction-hook later to maint). | |
186 | ||
187 | * Recent versions of "git diff-files" shows a diff between the index | |
188 | and the working tree for "intent-to-add" paths as a "new file" | |
189 | patch; "git apply --cached" should be able to take "git diff-files" | |
190 | and should act as an equivalent to "git add" for the path, but the | |
191 | command failed to do so for such a path. | |
192 | (merge 4c025c667e rp/apply-cached-with-i-t-a later to maint). | |
193 | ||
675a4aaf JH |
194 | * "git diff [<tree-ish>] $path" for a $path that is marked with i-t-a |
195 | bit was not showing the mode bits from the working tree. | |
196 | (merge cb0dd22b82 rp/ita-diff-modefix later to maint). | |
197 | ||
198 | * Ring buffer with size 4 used for bin-hex translation resulted in a | |
199 | wrong object name in the sequencer's todo output, which has been | |
200 | corrected. | |
201 | (merge 5da69c0dac ak/sequencer-fix-find-uniq-abbrev later to maint). | |
202 | ||
203 | * When given more than one target line ranges, "git blame -La,b | |
204 | -Lc,d" was over-eager to coalesce groups of original lines and | |
205 | showed incorrect results, which has been corrected. | |
206 | (merge c2ebaa27d6 jk/blame-coalesce-fix later to maint). | |
207 | ||
208 | * The regexp to identify the function boundary for FORTRAN programs | |
209 | has been updated. | |
210 | (merge 75c3b6b2e8 pb/userdiff-fortran-update later to maint). | |
211 | ||
212 | * A few end-user facing messages have been updated to be | |
213 | hash-algorithm agnostic. | |
214 | (merge 4279000d3e jc/object-names-are-not-sha-1 later to maint). | |
215 | ||
216 | * "unlink" emulation on MinGW has been optimized. | |
217 | (merge 680e0b4524 jh/mingw-unlink later to maint). | |
218 | ||
e9b77c84 JH |
219 | * The purpose of "git init --separate-git-dir" is to initialize a |
220 | new project with the repository separate from the working tree, | |
221 | or, in the case of an existing project, to move the repository | |
222 | (the .git/ directory) out of the working tree. It does not make | |
223 | sense to use --separate-git-dir with a bare repository for which | |
224 | there is no working tree, so disallow its use with bare | |
225 | repositories. | |
226 | (merge ccf236a23a es/init-no-separate-git-dir-in-bare later to maint). | |
227 | ||
228 | * "ls-files -o" mishandled the top-level directory of another git | |
229 | working tree that hangs in the current git working tree. | |
230 | (merge ab282aa548 en/dir-nonbare-embedded later to maint). | |
231 | ||
232 | * Fix some incorrect UNLEAK() annotations. | |
233 | (merge 3e19816dc0 jk/unleak-fixes later to maint). | |
234 | ||
235 | * Use more buffered I/O where we used to call many small write(2)s. | |
236 | (merge a698d67b08 rs/more-buffered-io later to maint). | |
237 | ||
238 | * The patch-id computation did not ignore the "incomplete last line" | |
239 | marker like whitespaces. | |
240 | (merge 82a62015a7 rs/patch-id-with-incomplete-line later to maint). | |
241 | ||
e1971363 JH |
242 | * Updates into a lazy/partial clone with a submodule did not work |
243 | well with transfer.fsckobjects set. | |
244 | ||
245 | * The parser for "git for-each-ref --format=..." was too loose when | |
246 | parsing the "%(trailers...)" atom, and forgot that "trailers" and | |
247 | "trailers:<modifiers>" are the only two allowed forms, which has | |
248 | been corrected. | |
249 | (merge 2c22e102f8 hv/ref-filter-trailers-atom-parsing-fix later to maint). | |
250 | ||
251 | * Long ago, we decided to use 3 threads by default when running the | |
252 | index-pack task in parallel, which has been adjusted a bit upwards. | |
253 | (merge fbff95b67f jk/index-pack-w-more-threads later to maint). | |
254 | ||
255 | * "git restore/checkout --no-overlay" with wildcarded pathspec | |
256 | mistakenly removed matching paths in subdirectories, which has been | |
257 | corrected. | |
258 | (merge bfda204ade rs/checkout-no-overlay-pathspec-fix later to maint). | |
259 | ||
260 | * The description of --cached/--index options in "git apply --help" | |
261 | has been updated. | |
262 | (merge d064702be3 rp/apply-cached-doc later to maint). | |
263 | ||
264 | * Feeding "$ZERO_OID" to "git log --ignore-missing --stdin", and | |
265 | running "git log --ignore-missing $ZERO_OID" fell back to start | |
266 | digging from HEAD; it has been corrected to become a no-op, like | |
267 | "git log --tags=no-tag-matches-this-pattern" does. | |
268 | (merge 04a0e98515 jk/rev-input-given-fix later to maint). | |
269 | ||
270 | * Various callers of run_command API has been modernized. | |
271 | (merge afbdba391e jc/run-command-use-embedded-args later to maint). | |
272 | ||
3a238e53 JH |
273 | * List of options offered and accepted by "git add -i/-p" were |
274 | inconsistent, which have been corrected. | |
275 | (merge ce910287e7 pw/add-p-allowed-options-fix later to maint). | |
276 | ||
277 | * Various callers of run_command API has been modernized. | |
278 | (merge afbdba391e jc/run-command-use-embedded-args later to maint). | |
279 | ||
280 | * "git diff --stat -w" showed 0-line changes for paths whose changes | |
281 | were only whitespaces, which was not intuitive. We now omit such | |
282 | paths from the stat output. | |
283 | (merge 1cf3d5db9b mr/diff-hide-stat-wo-textual-change later to maint). | |
284 | ||
285 | * It was possible for xrealloc() to send a non-NULL pointer that has | |
286 | been freed, which has been fixed. | |
287 | (merge 6479ea4a8a jk/xrealloc-avoid-use-after-free later to maint). | |
288 | ||
79bcaf00 | 289 | * Other code cleanup, docfix, build fix, etc. |
e8ab941b JH |
290 | (merge 84544f2ea3 sk/typofixes later to maint). |
291 | (merge b17f411ab5 ar/help-guides-doc later to maint). | |
292 | (merge 98c6871fad rs/grep-simpler-parse-object-or-die-call later to maint). | |
293 | (merge 861c4ce141 en/typofixes later to maint). | |
294 | (merge 60e47f6773 sg/ci-git-path-fix-with-pyenv later to maint). | |
295 | (merge e2bfa50ac3 jb/doc-packfile-name later to maint). | |
4f0a8be7 JH |
296 | (merge 918d8ff780 es/worktree-cleanup later to maint). |
297 | (merge dc156bc31f ma/t1450-quotefix later to maint). | |
298 | (merge 56e743426b en/merge-recursive-comment-fixes later to maint). | |
299 | (merge 7d23ff818f rs/bisect-oid-to-hex-fix later to maint). | |
300 | (merge de20baf2c9 ny/notes-doc-sample-update later to maint). | |
301 | (merge f649aaaf82 so/rev-parser-errormessage-fix later to maint). | |
878e7276 | 302 | (merge 6103d58b7f bc/sha-256-cvs-svn-updates later to maint). |
2befe972 | 303 | (merge ac900fddb7 ma/stop-progress-null-fix later to maint). |
675a4aaf JH |
304 | (merge e767963ab6 rs/upload-pack-sigchain-fix later to maint). |
305 | (merge a831908599 rs/preserve-merges-unused-code-removal later to maint). | |
306 | (merge 6dfefe70a9 jb/commit-graph-doc-fix later to maint). | |
307 | (merge 847b37271e pb/set-url-docfix later to maint). | |
e9b77c84 JH |
308 | (merge 748f733d54 mt/checkout-entry-dead-code-removal later to maint). |
309 | (merge ce820cbd58 dl/subtree-docs later to maint). | |
20de7e7e | 310 | (merge 55fe225dde jk/leakfix later to maint). |
3a238e53 JH |
311 | (merge ee22a29215 so/pretty-abbrev-doc later to maint). |
312 | (merge 3100fd5588 jc/post-checkout-doc later to maint). | |
313 | (merge 17bae89476 pb/doc-external-diff-env later to maint). |