]>
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 | ||
79bcaf00 JH |
124 | |
125 | Fixes since v2.28 | |
126 | ----------------- | |
127 | ||
128 | * "git clone --separate-git-dir=$elsewhere" used to stomp on the | |
129 | contents of the existing directory $elsewhere, which has been | |
130 | taught to fail when $elsewhere is not an empty directory. | |
131 | (merge dfaa209a79 bw/fail-cloning-into-non-empty later to maint). | |
132 | ||
79bcaf00 JH |
133 | * With the base fix to 2.27 regresion, any new extensions in a v0 |
134 | repository would still be silently honored, which is not quite | |
135 | right. Instead, complain and die loudly. | |
136 | (merge ec91ffca04 jk/reject-newer-extensions-in-v0 later to maint). | |
137 | ||
138 | * Fetching from a lazily cloned repository resulted at the server | |
139 | side in attempts to lazy fetch objects that the client side has, | |
140 | many of which will not be available from the third-party anyway. | |
141 | (merge 77aa0941ce jt/avoid-lazy-fetching-upon-have-check later to maint). | |
142 | ||
143 | * Fix to an ancient bug caused by an over-eager attempt for | |
144 | optimization. | |
145 | (merge a98f7fb366 rs/add-index-entry-optim-fix later to maint). | |
146 | ||
147 | * Pushing a ref whose name contains non-ASCII character with the | |
148 | "--force-with-lease" option did not work over smart HTTP protocol, | |
149 | which has been corrected. | |
150 | (merge cd85b447bf bc/push-cas-cquoted-refname later to maint). | |
151 | ||
152 | * "git mv src dst", when src is an unmerged path, errored out | |
153 | correctly but with an incorrect error message to claim that src is | |
154 | not tracked, which has been clarified. | |
155 | (merge 9b906af657 ct/mv-unmerged-path-error later to maint). | |
156 | ||
157 | * Fix to a regression introduced during 2.27 cycle. | |
158 | (merge cada7308ad en/fill-directory-exponential later to maint). | |
159 | ||
dc04167d JH |
160 | * Command line completion (in contrib/) update. |
161 | (merge 688b87c81b mp/complete-show-color-moved later to maint). | |
162 | ||
4f0a8be7 JH |
163 | * All "mergy" operations that internally use the merge-recursive |
164 | machinery should honor the merge.renormalize configuration, but | |
165 | many of them didn't. | |
166 | ||
7814e8a0 JH |
167 | * Doc cleanup around "worktree". |
168 | (merge dc9c144be5 es/worktree-doc-cleanups later to maint). | |
169 | ||
878e7276 JH |
170 | * The "git blame --first-parent" option was not documented, but now |
171 | it is. | |
172 | (merge 11bc12ae1e rp/blame-first-parent-doc later to maint). | |
173 | ||
2befe972 JH |
174 | * The logic to find the ref transaction hook script attempted to |
175 | cache the path to the found hook without realizing that it needed | |
176 | to keep a copied value, as the API it used returned a transitory | |
177 | buffer space. This has been corrected. | |
178 | (merge 09b2aa30c9 ps/ref-transaction-hook later to maint). | |
179 | ||
180 | * Recent versions of "git diff-files" shows a diff between the index | |
181 | and the working tree for "intent-to-add" paths as a "new file" | |
182 | patch; "git apply --cached" should be able to take "git diff-files" | |
183 | and should act as an equivalent to "git add" for the path, but the | |
184 | command failed to do so for such a path. | |
185 | (merge 4c025c667e rp/apply-cached-with-i-t-a later to maint). | |
186 | ||
675a4aaf JH |
187 | * "git diff [<tree-ish>] $path" for a $path that is marked with i-t-a |
188 | bit was not showing the mode bits from the working tree. | |
189 | (merge cb0dd22b82 rp/ita-diff-modefix later to maint). | |
190 | ||
191 | * Ring buffer with size 4 used for bin-hex translation resulted in a | |
192 | wrong object name in the sequencer's todo output, which has been | |
193 | corrected. | |
194 | (merge 5da69c0dac ak/sequencer-fix-find-uniq-abbrev later to maint). | |
195 | ||
196 | * When given more than one target line ranges, "git blame -La,b | |
197 | -Lc,d" was over-eager to coalesce groups of original lines and | |
198 | showed incorrect results, which has been corrected. | |
199 | (merge c2ebaa27d6 jk/blame-coalesce-fix later to maint). | |
200 | ||
201 | * The regexp to identify the function boundary for FORTRAN programs | |
202 | has been updated. | |
203 | (merge 75c3b6b2e8 pb/userdiff-fortran-update later to maint). | |
204 | ||
205 | * A few end-user facing messages have been updated to be | |
206 | hash-algorithm agnostic. | |
207 | (merge 4279000d3e jc/object-names-are-not-sha-1 later to maint). | |
208 | ||
209 | * "unlink" emulation on MinGW has been optimized. | |
210 | (merge 680e0b4524 jh/mingw-unlink later to maint). | |
211 | ||
e9b77c84 JH |
212 | * The purpose of "git init --separate-git-dir" is to initialize a |
213 | new project with the repository separate from the working tree, | |
214 | or, in the case of an existing project, to move the repository | |
215 | (the .git/ directory) out of the working tree. It does not make | |
216 | sense to use --separate-git-dir with a bare repository for which | |
217 | there is no working tree, so disallow its use with bare | |
218 | repositories. | |
219 | (merge ccf236a23a es/init-no-separate-git-dir-in-bare later to maint). | |
220 | ||
221 | * "ls-files -o" mishandled the top-level directory of another git | |
222 | working tree that hangs in the current git working tree. | |
223 | (merge ab282aa548 en/dir-nonbare-embedded later to maint). | |
224 | ||
225 | * Fix some incorrect UNLEAK() annotations. | |
226 | (merge 3e19816dc0 jk/unleak-fixes later to maint). | |
227 | ||
228 | * Use more buffered I/O where we used to call many small write(2)s. | |
229 | (merge a698d67b08 rs/more-buffered-io later to maint). | |
230 | ||
231 | * The patch-id computation did not ignore the "incomplete last line" | |
232 | marker like whitespaces. | |
233 | (merge 82a62015a7 rs/patch-id-with-incomplete-line later to maint). | |
234 | ||
e1971363 JH |
235 | * Updates into a lazy/partial clone with a submodule did not work |
236 | well with transfer.fsckobjects set. | |
237 | ||
238 | * The parser for "git for-each-ref --format=..." was too loose when | |
239 | parsing the "%(trailers...)" atom, and forgot that "trailers" and | |
240 | "trailers:<modifiers>" are the only two allowed forms, which has | |
241 | been corrected. | |
242 | (merge 2c22e102f8 hv/ref-filter-trailers-atom-parsing-fix later to maint). | |
243 | ||
244 | * Long ago, we decided to use 3 threads by default when running the | |
245 | index-pack task in parallel, which has been adjusted a bit upwards. | |
246 | (merge fbff95b67f jk/index-pack-w-more-threads later to maint). | |
247 | ||
248 | * "git restore/checkout --no-overlay" with wildcarded pathspec | |
249 | mistakenly removed matching paths in subdirectories, which has been | |
250 | corrected. | |
251 | (merge bfda204ade rs/checkout-no-overlay-pathspec-fix later to maint). | |
252 | ||
253 | * The description of --cached/--index options in "git apply --help" | |
254 | has been updated. | |
255 | (merge d064702be3 rp/apply-cached-doc later to maint). | |
256 | ||
257 | * Feeding "$ZERO_OID" to "git log --ignore-missing --stdin", and | |
258 | running "git log --ignore-missing $ZERO_OID" fell back to start | |
259 | digging from HEAD; it has been corrected to become a no-op, like | |
260 | "git log --tags=no-tag-matches-this-pattern" does. | |
261 | (merge 04a0e98515 jk/rev-input-given-fix later to maint). | |
262 | ||
263 | * Various callers of run_command API has been modernized. | |
264 | (merge afbdba391e jc/run-command-use-embedded-args later to maint). | |
265 | ||
79bcaf00 | 266 | * Other code cleanup, docfix, build fix, etc. |
e8ab941b JH |
267 | (merge 84544f2ea3 sk/typofixes later to maint). |
268 | (merge b17f411ab5 ar/help-guides-doc later to maint). | |
269 | (merge 98c6871fad rs/grep-simpler-parse-object-or-die-call later to maint). | |
270 | (merge 861c4ce141 en/typofixes later to maint). | |
271 | (merge 60e47f6773 sg/ci-git-path-fix-with-pyenv later to maint). | |
272 | (merge e2bfa50ac3 jb/doc-packfile-name later to maint). | |
4f0a8be7 JH |
273 | (merge 918d8ff780 es/worktree-cleanup later to maint). |
274 | (merge dc156bc31f ma/t1450-quotefix later to maint). | |
275 | (merge 56e743426b en/merge-recursive-comment-fixes later to maint). | |
276 | (merge 7d23ff818f rs/bisect-oid-to-hex-fix later to maint). | |
277 | (merge de20baf2c9 ny/notes-doc-sample-update later to maint). | |
278 | (merge f649aaaf82 so/rev-parser-errormessage-fix later to maint). | |
878e7276 | 279 | (merge 6103d58b7f bc/sha-256-cvs-svn-updates later to maint). |
2befe972 | 280 | (merge ac900fddb7 ma/stop-progress-null-fix later to maint). |
675a4aaf JH |
281 | (merge e767963ab6 rs/upload-pack-sigchain-fix later to maint). |
282 | (merge a831908599 rs/preserve-merges-unused-code-removal later to maint). | |
283 | (merge 6dfefe70a9 jb/commit-graph-doc-fix later to maint). | |
284 | (merge 847b37271e pb/set-url-docfix later to maint). | |
e9b77c84 JH |
285 | (merge 748f733d54 mt/checkout-entry-dead-code-removal later to maint). |
286 | (merge ce820cbd58 dl/subtree-docs later to maint). | |
20de7e7e | 287 | (merge 55fe225dde jk/leakfix later to maint). |