]>
Commit | Line | Data |
---|---|---|
0bf8c8ce JH |
1 | Git 2.19 Release Notes |
2 | ====================== | |
3 | ||
4 | Updates since v2.18 | |
5 | ------------------- | |
6 | ||
7 | UI, Workflows & Features | |
8 | ||
ed843436 JH |
9 | * "git diff" compares the index and the working tree. For paths |
10 | added with intent-to-add bit, the command shows the full contents | |
11 | of them as added, but the paths themselves were not marked as new | |
12 | files. They are now shown as new by default. | |
13 | ||
14 | "git apply" learned the "--intent-to-add" option so that an | |
15 | otherwise working-tree-only application of a patch will add new | |
16 | paths to the index marked with the "intent-to-add" bit. | |
17 | ||
b7bd9486 JH |
18 | * "git grep" learned the "--column" option that gives not just the |
19 | line number but the column number of the hit. | |
20 | ||
21 | * The "-l" option in "git branch -l" is an unfortunate short-hand for | |
22 | "--create-reflog", but many users, both old and new, somehow expect | |
23 | it to be something else, perhaps "--list". This step warns when "-l" | |
24 | is used as a short-hand for "--create-reflog" and warns about the | |
25 | future repurposing of the it when it is used. | |
26 | ||
ffc6fa0e JH |
27 | * The userdiff pattern for .php has been updated. |
28 | ||
29 | * The content-transfer-encoding of the message "git send-email" sends | |
30 | out by default was 8bit, which can cause trouble when there is an | |
31 | overlong line to bust RFC 5322/2822 limit. A new option 'auto' to | |
32 | automatically switch to quoted-printable when there is such a line | |
33 | in the payload has been introduced and is made the default. | |
34 | ||
1d89318c JH |
35 | * "git checkout" and "git worktree add" learned to honor |
36 | checkout.defaultRemote when auto-vivifying a local branch out of a | |
37 | remote tracking branch in a repository with multiple remotes that | |
38 | have tracking branches that share the same names. | |
39 | (merge 8d7b558bae ab/checkout-default-remote later to maint). | |
40 | ||
41 | * "git grep" learned the "--only-matching" option. | |
42 | ||
43 | * "git rebase --rebase-merges" mode now handles octopus merges as | |
44 | well. | |
45 | ||
46 | * Add a server-side knob to skip commits in exponential/fibbonacci | |
47 | stride in an attempt to cover wider swath of history with a smaller | |
48 | number of iterations, potentially accepting a larger packfile | |
49 | transfer, instead of going back one commit a time during common | |
50 | ancestor discovery during the "git fetch" transaction. | |
51 | (merge 42cc7485a2 jt/fetch-negotiator-skipping later to maint). | |
52 | ||
0bf8c8ce JH |
53 | |
54 | Performance, Internal Implementation, Development Support etc. | |
55 | ||
ed843436 JH |
56 | * The bulk of "git submodule foreach" has been rewritten in C. |
57 | ||
58 | * The in-core "commit" object had an all-purpose "void *util" field, | |
59 | which was tricky to use especially in library-ish part of the | |
60 | code. All of the existing uses of the field has been migrated to a | |
61 | more dedicated "commit-slab" mechanism and the field is eliminated. | |
62 | ||
63 | * A less often used command "git show-index" has been modernized. | |
64 | (merge fb3010c31f jk/show-index later to maint). | |
65 | ||
66 | * The conversion to pass "the_repository" and then "a_repository" | |
67 | throughout the object access API continues. | |
68 | ||
69 | * Continuing with the idea to programatically enumerate various | |
70 | pieces of data required for command line completion, teach the | |
71 | codebase to report the list of configuration variables | |
72 | subcommands care about to help complete them. | |
73 | ||
74 | * Separate "rebase -p" codepath out of "rebase -i" implementation to | |
75 | slim down the latter and make it easier to manage. | |
76 | ||
e3331758 JH |
77 | * Make refspec parsing codepath more robust. |
78 | ||
79 | * Some flaky tests have been fixed. | |
80 | ||
81 | * Continuing with the idea to programmatically enumerate various | |
82 | pieces of data required for command line completion, the codebase | |
83 | has been taught to enumerate options prefixed with "--no-" to | |
84 | negate them. | |
85 | ||
86 | * Build and test procedure for netrc credential helper (in contrib/) | |
87 | has been updated. | |
88 | ||
b7bd9486 JH |
89 | * The conversion to pass "the_repository" and then "a_repository" |
90 | throughout the object access API continues. | |
91 | ||
92 | * Remove unused function definitions and declarations from ewah | |
93 | bitmap subsystem. | |
94 | ||
95 | * Code preparation to make "git p4" closer to be usable with Python 3. | |
96 | ||
97 | * Tighten the API to make it harder to misuse in-tree .gitmodules | |
98 | file, even though it shares the same syntax with configuration | |
99 | files, to read random configuration items from it. | |
100 | ||
ffc6fa0e JH |
101 | * "git fast-import" has been updated to avoid attempting to create |
102 | delta against a zero-byte-long string, which is pointless. | |
103 | ||
104 | * The codebase has been updated to compile cleanly with -pedantic | |
105 | option. | |
106 | (merge 2b647a05d7 bb/pedantic later to maint). | |
107 | ||
108 | * The character display width table has been updated to match the | |
109 | latest Unicode standard. | |
110 | (merge 570951eea2 bb/unicode-11-width later to maint). | |
111 | ||
112 | * test-lint now looks for broken use of "VAR=VAL shell_func" in test | |
113 | scripts. | |
114 | ||
1d89318c JH |
115 | * Conversion from uchar[40] to struct object_id continues. |
116 | ||
117 | * Recent "security fix" to pay attention to contents of ".gitmodules" | |
118 | while accepting "git push" was a bit overly strict than necessary, | |
119 | which has been adjusted. | |
120 | ||
121 | * "git fsck" learns to make sure the optional commit-graph file is in | |
122 | a sane state. | |
123 | ||
124 | * "git diff --color-moved" feature has further been tweaked. | |
125 | ||
126 | * Code restructuring and a small fix to transport protocol v2 during | |
127 | fetching. | |
128 | ||
129 | * Parsing of -L[<N>][,[<M>]] parameters "git blame" and "git log" | |
130 | take has been tweaked. | |
131 | ||
132 | * lookup_commit_reference() and friends have been updated to find | |
133 | in-core object for a specific in-core repository instance. | |
134 | ||
135 | * Various glitches in the heuristics of merge-recursive strategy have | |
136 | been documented in new tests. | |
137 | ||
138 | * "git fetch" learned a new option "--negotiation-tip" to limit the | |
139 | set of commits it tells the other end as "have", to reduce wasted | |
140 | bandwidth and cycles, which would be helpful when the receiving | |
141 | repository has a lot of refs that have little to do with the | |
142 | history at the remote it is fetching from. | |
143 | ||
144 | * For a large tree, the index needs to hold many cache entries | |
145 | allocated on heap. These cache entries are now allocated out of a | |
146 | dedicated memory pool to amortize malloc(3) overhead. | |
147 | ||
148 | * Tests to cover various conflicting cases have been added for | |
149 | merge-recursive. | |
150 | ||
151 | * Tests to cover conflict cases that involve submodules have been | |
152 | added for merge-recursive. | |
153 | ||
154 | * Look for broken "&&" chains that are hidden in subshell, many of | |
155 | which have been found and corrected. | |
156 | ||
157 | * The singleton commit-graph in-core instance is made per in-core | |
158 | repository instance. | |
159 | ||
0bf8c8ce JH |
160 | |
161 | Fixes since v2.18 | |
162 | ----------------- | |
ed843436 JH |
163 | |
164 | * "git remote update" can take both a single remote nickname and a | |
165 | nickname for remote groups, and the completion script (in contrib/) | |
166 | has been taught about it. | |
167 | (merge 9cd4382ad5 ls/complete-remote-update-names later to maint). | |
168 | ||
169 | * "git fetch --shallow-since=<cutoff>" that specifies the cut-off | |
170 | point that is newer than the existing history used to end up | |
171 | grabbing the entire history. Such a request now errors out. | |
172 | (merge e34de73c56 nd/reject-empty-shallow-request later to maint). | |
173 | ||
e3331758 JH |
174 | * Fix for 2.17-era regression around `core.safecrlf`. |
175 | (merge 6cb09125be as/safecrlf-quiet-fix later to maint). | |
176 | ||
177 | * The recent addition of "partial clone" experimental feature kicked | |
178 | in when it shouldn't, namely, when there is no partial-clone filter | |
179 | defined even if extensions.partialclone is set. | |
180 | (merge cac1137dc4 jh/partial-clone later to maint). | |
181 | ||
182 | * "git send-pack --signed" (hence "git push --signed" over the http | |
183 | transport) did not read user ident from the config mechanism to | |
184 | determine whom to sign the push certificate as, which has been | |
185 | corrected. | |
186 | (merge d067d98887 ms/send-pack-honor-config later to maint). | |
187 | ||
188 | * "git fetch-pack --all" used to unnecessarily fail upon seeing an | |
189 | annotated tag that points at an object other than a commit. | |
190 | (merge c12c9df527 jk/fetch-all-peeled-fix later to maint). | |
191 | ||
192 | * When user edits the patch in "git add -p" and the user's editor is | |
193 | set to strip trailing whitespaces indiscriminately, an empty line | |
194 | that is unchanged in the patch would become completely empty | |
195 | (instead of a line with a sole SP on it). The code introduced in | |
196 | Git 2.17 timeframe failed to parse such a patch, but now it learned | |
197 | to notice the situation and cope with it. | |
198 | (merge f4d35a6b49 pw/add-p-recount later to maint). | |
199 | ||
200 | * The code to try seeing if a fetch is necessary in a submodule | |
201 | during a fetch with --recurse-submodules got confused when the path | |
202 | to the submodule was changed in the range of commits in the | |
203 | superproject, sometimes showing "(null)". This has been corrected. | |
204 | ||
b7bd9486 JH |
205 | * "git submodule" did not correctly adjust core.worktree setting that |
206 | indicates whether/where a submodule repository has its associated | |
207 | working tree across various state transitions, which has been | |
208 | corrected. | |
209 | (merge 984cd77ddb sb/submodule-core-worktree later to maint). | |
210 | ||
211 | * Bugfix for "rebase -i" corner case regression. | |
212 | (merge a9279c6785 pw/rebase-i-keep-reword-after-conflict later to maint). | |
213 | ||
214 | * Recently added "--base" option to "git format-patch" command did | |
215 | not correctly generate prereq patch ids. | |
216 | (merge 15b76c1fb3 xy/format-patch-prereq-patch-id-fix later to maint). | |
217 | ||
218 | * POSIX portability fix in Makefile to fix a glitch introduced a few | |
219 | releases ago. | |
220 | (merge 6600054e9b dj/runtime-prefix later to maint). | |
221 | ||
222 | * "git filter-branch" when used with the "--state-branch" option | |
223 | still attempted to rewrite the commits whose filtered result is | |
224 | known from the previous attempt (which is recorded on the state | |
225 | branch); the command has been corrected not to waste cycles doing | |
226 | so. | |
227 | (merge 709cfe848a mb/filter-branch-optim later to maint). | |
228 | ||
229 | * Clarify that setting core.ignoreCase to deviate from reality would | |
230 | not turn a case-incapable filesystem into a case-capable one. | |
231 | (merge 48294b512a ms/core-icase-doc later to maint). | |
232 | ||
ffc6fa0e JH |
233 | * "fsck.skipList" did not prevent a blob object listed there from |
234 | being inspected for is contents (e.g. we recently started to | |
235 | inspect the contents of ".gitmodules" for certain malicious | |
236 | patterns), which has been corrected. | |
237 | (merge fb16287719 rj/submodule-fsck-skip later to maint). | |
238 | ||
239 | * "git checkout --recurse-submodules another-branch" did not report | |
240 | in which submodule it failed to update the working tree, which | |
241 | resulted in an unhelpful error message. | |
242 | (merge ba95d4e4bd sb/submodule-move-head-error-msg later to maint). | |
243 | ||
244 | * "git rebase" behaved slightly differently depending on which one of | |
245 | the three backends gets used; this has been documented and an | |
246 | effort to make them more uniform has begun. | |
247 | (merge b00bf1c9a8 en/rebase-consistency later to maint). | |
248 | ||
249 | * The "--ignore-case" option of "git for-each-ref" (and its friends) | |
250 | did not work correctly, which has been fixed. | |
251 | (merge e674eb2528 jk/for-each-ref-icase later to maint). | |
252 | ||
253 | * "git fetch" failed to correctly validate the set of objects it | |
254 | received when making a shallow history deeper, which has been | |
255 | corrected. | |
256 | (merge cf1e7c0770 jt/connectivity-check-after-unshallow later to maint). | |
257 | ||
258 | * Partial clone support of "git clone" has been updated to correctly | |
259 | validate the objects it receives from the other side. The server | |
260 | side has been corrected to send objects that are directly | |
261 | requested, even if they may match the filtering criteria (e.g. when | |
262 | doing a "lazy blob" partial clone). | |
263 | (merge a7e67c11b8 jt/partial-clone-fsck-connectivity later to maint). | |
264 | ||
265 | * Handling of an empty range by "git cherry-pick" was inconsistent | |
266 | depending on how the range ended up to be empty, which has been | |
267 | corrected. | |
268 | (merge c5e358d073 jk/empty-pick-fix later to maint). | |
269 | ||
270 | * "git reset --merge" (hence "git merge ---abort") and "git reset --hard" | |
271 | had trouble working correctly in a sparsely checked out working | |
272 | tree after a conflict, which has been corrected. | |
273 | (merge b33fdfc34c mk/merge-in-sparse-checkout later to maint). | |
274 | ||
275 | * Correct a broken use of "VAR=VAL shell_func" in a test. | |
276 | (merge 650161a277 jc/t3404-one-shot-export-fix later to maint). | |
277 | ||
278 | * "git rev-parse ':/substring'" did not consider the history leading | |
279 | only to HEAD when looking for a commit with the given substring, | |
280 | when the HEAD is detached. This has been fixed. | |
281 | (merge 6b3351e799 wc/find-commit-with-pattern-on-detached-head later to maint). | |
282 | ||
283 | * Build doc update for Windows. | |
284 | (merge ede8d89bb1 nd/command-list later to maint). | |
285 | ||
286 | * core.commentchar is now honored when preparing the list of commits | |
287 | to replay in "rebase -i". | |
288 | ||
1d89318c JH |
289 | * "git pull --rebase" on a corrupt HEAD caused a segfault. In |
290 | general we substitute an empty tree object when running the in-core | |
291 | equivalent of the diff-index command, and the codepath has been | |
292 | corrected to do so as well to fix this issue. | |
293 | (merge 3506dc9445 jk/has-uncommitted-changes-fix later to maint). | |
294 | ||
295 | * httpd tests saw occasional breakage due to the way its access log | |
296 | gets inspected by the tests, which has been updated to make them | |
297 | less flaky. | |
298 | (merge e8b3b2e275 sg/httpd-test-unflake later to maint). | |
299 | ||
300 | * Tests to cover more D/F conflict cases have been added for | |
301 | merge-recursive. | |
302 | ||
303 | * "git gc --auto" opens file descriptors for the packfiles before | |
304 | spawning "git repack/prune", which would upset Windows that does | |
305 | not want a process to work on a file that is open by another | |
306 | process. The issue has been worked around. | |
307 | (merge 12e73a3ce4 kg/gc-auto-windows-workaround later to maint). | |
308 | ||
309 | * The recursive merge strategy did not properly ensure there was no | |
310 | change between HEAD and the index before performing its operation, | |
311 | which has been corrected. | |
312 | (merge 55f39cf755 en/dirty-merge-fixes later to maint). | |
313 | ||
314 | * "git rebase" started exporting GIT_DIR environment variable and | |
315 | exposing it to hook scripts when part of it got rewritten in C. | |
316 | Instead of matching the old scripted Porcelains' behaviour, | |
317 | compensate by also exporting GIT_WORK_TREE environment as well to | |
318 | lessen the damage. This can harm existing hooks that want to | |
319 | operate on different repository, but the current behaviour is | |
320 | already broken for them anyway. | |
321 | (merge ab5e67d751 bc/sequencer-export-work-tree-as-well later to maint). | |
322 | ||
323 | * "git send-email" when using in a batched mode that limits the | |
324 | number of messages sent in a single SMTP session lost the contents | |
325 | of the variable used to choose between tls/ssl, unable to send the | |
326 | second and later batches, which has been fixed. | |
327 | (merge 636f3d7ac5 jm/send-email-tls-auth-on-batch later to maint). | |
328 | ||
329 | * The lazy clone support had a few places where missing but promised | |
330 | objects were not correctly tolerated, which have been fixed. | |
331 | ||
b7bd9486 | 332 | * Code cleanup, docfix, build fix, etc. |
ed843436 | 333 | (merge aee9be2ebe sg/update-ref-stdin-cleanup later to maint). |
e3331758 | 334 | (merge 037714252f jc/clean-after-sanity-tests later to maint). |
b7bd9486 JH |
335 | (merge 5b26c3c941 en/merge-recursive-cleanup later to maint). |
336 | (merge 0dcbc0392e bw/config-refer-to-gitsubmodules-doc later to maint). | |
337 | (merge bb4d000e87 bw/protocol-v2 later to maint). | |
338 | (merge 928f0ab4ba vs/typofixes later to maint). | |
339 | (merge d7f590be84 en/rebase-i-microfixes later to maint). | |
340 | (merge 81d395cc85 js/rebase-recreate-merge later to maint). | |
341 | (merge 51d1863168 tz/exclude-doc-smallfixes later to maint). | |
342 | (merge a9aa3c0927 ds/commit-graph later to maint). | |
343 | (merge 5cf8e06474 js/enhanced-version-info later to maint). | |
ffc6fa0e JH |
344 | (merge 6aaded5509 tb/config-default later to maint). |
345 | (merge 022d2ac1f3 sb/blame-color later to maint). | |
1d89318c | 346 | (merge 5a06a20e0c bp/test-drop-caches-for-windows later to maint). |