]>
Commit | Line | Data |
---|---|---|
95b18556 JH |
1 | Git 2.11 Release Notes |
2 | ====================== | |
3 | ||
2cc2e702 JH |
4 | Backward compatibility notes. |
5 | ||
6 | * An empty string used as a pathspec element has always meant | |
7 | 'everything matches', but it is too easy to write a script that | |
1fe8f2cf JH |
8 | finds a path to remove in $path and run 'git rm "$paht"' by |
9 | mistake (when the user meant to give "$path"), which ends up | |
10 | removing everything. This release starts warning about the | |
2cc2e702 JH |
11 | use of an empty string that is used for 'everything matches' and |
12 | asks users to use a more explicit '.' for that instead. | |
13 | ||
14 | The hope is that existing users will not mind this change, and | |
15 | eventually the warning can be turned into a hard error, upgrading | |
16 | the deprecation into removal of this (mis)feature. | |
17 | ||
2cc2e702 JH |
18 | * The historical argument order "git merge <msg> HEAD <commit>..." |
19 | has been deprecated for quite some time, and will be removed in the | |
20 | next release (not this one). | |
21 | ||
eda7eebe JH |
22 | * The default abbreviation length, which has historically been 7, now |
23 | scales as the repository grows, using the approximate number of | |
be5a7509 | 24 | objects in the repository and a bit of math around the birthday |
eda7eebe JH |
25 | paradox. The logic suggests to use 12 hexdigits for the Linux |
26 | kernel, and 9 to 10 for Git itself. | |
27 | ||
2cc2e702 | 28 | |
95b18556 JH |
29 | Updates since v2.10 |
30 | ------------------- | |
31 | ||
32 | UI, Workflows & Features | |
33 | ||
2cc2e702 JH |
34 | * Comes with new version of git-gui, now at its 0.21.0 tag. |
35 | ||
95b18556 JH |
36 | * "git format-patch --cover-letter HEAD^" to format a single patch |
37 | with a separate cover letter now numbers the output as [PATCH 0/1] | |
38 | and [PATCH 1/1] by default. | |
39 | ||
40 | * An incoming "git push" that attempts to push too many bytes can now | |
41 | be rejected by setting a new configuration variable at the receiving | |
42 | end. | |
43 | ||
44 | * "git nosuchcommand --help" said "No manual entry for gitnosuchcommand", | |
45 | which was not intuitive, given that "git nosuchcommand" said "git: | |
46 | 'nosuchcommand' is not a git command". | |
47 | ||
be5a7509 | 48 | * "git clone --recurse-submodules --reference $path $URL" is a way to |
95b18556 JH |
49 | reduce network transfer cost by borrowing objects in an existing |
50 | $path repository when cloning the superproject from $URL; it | |
be5a7509 | 51 | learned to also peek into $path for presence of corresponding |
95b18556 JH |
52 | repositories of submodules and borrow objects from there when able. |
53 | ||
75d03ac8 JH |
54 | * The "git diff --submodule={short,log}" mechanism has been enhanced |
55 | to allow "--submodule=diff" to show the patch between the submodule | |
56 | commits bound to the superproject. | |
57 | ||
6fe1b140 JH |
58 | * Even though "git hash-objects", which is a tool to take an |
59 | on-filesystem data stream and put it into the Git object store, | |
aeddbfdf | 60 | can perform "outside-world-to-Git" conversions (e.g. |
6fe1b140 | 61 | end-of-line conversions and application of the clean-filter), and |
aeddbfdf | 62 | it has had this feature on by default from very early days, its reverse |
6fe1b140 | 63 | operation "git cat-file", which takes an object from the Git object |
aeddbfdf | 64 | store and externalizes it for consumption by the outside world, |
6fe1b140 JH |
65 | lacked an equivalent mechanism to run the "Git-to-outside-world" |
66 | conversion. The command learned the "--filters" option to do so. | |
67 | ||
aeddbfdf | 68 | * Output from "git diff" can be made easier to read by intelligently selecting |
21f862b4 | 69 | which lines are common and which lines are added/deleted |
aeddbfdf MB |
70 | when the lines before and after the changed section |
71 | are the same. A command line option (--indent-heuristic) and a | |
72 | configuration variable (diff.indentHeuristic) are added to help with the | |
73 | experiment to find good heuristics. | |
21f862b4 JH |
74 | |
75 | * In some projects, it is common to use "[RFC PATCH]" as the subject | |
76 | prefix for a patch meant for discussion rather than application. A | |
aeddbfdf | 77 | new format-patch option "--rfc" is a short-hand for "--subject-prefix=RFC PATCH" |
21f862b4 JH |
78 | to help the participants of such projects. |
79 | ||
aeddbfdf | 80 | * "git add --chmod={+,-}x <pathspec>" only changed the |
21f862b4 | 81 | executable bit for paths that are either new or modified. This has |
aeddbfdf | 82 | been corrected to change the executable bit for all paths that match |
21f862b4 JH |
83 | the given pathspec. |
84 | ||
641b158a | 85 | * When "git format-patch --stdout" output is placed as an in-body |
aeddbfdf | 86 | header and it uses RFC2822 header folding, "git am" fails to |
641b158a JH |
87 | put the header line back into a single logical line. The |
88 | underlying "git mailinfo" was taught to handle this properly. | |
89 | ||
30d687df JH |
90 | * "gitweb" can spawn "highlight" to show blob contents with |
91 | (programming) language-specific syntax highlighting, but only | |
92 | when the language is known. "highlight" can however be told | |
aeddbfdf | 93 | to guess the language itself by giving it "--force" option, which |
30d687df JH |
94 | has been enabled. |
95 | ||
96 | * "git gui" l10n to Portuguese. | |
97 | ||
a23ca1b8 JH |
98 | * When given an abbreviated object name that is not (or more |
99 | realistically, "no longer") unique, we gave a fatal error | |
be5a7509 JH |
100 | "ambiguous argument". This error is now accompanied by a hint that |
101 | lists the objects beginning with the given prefix. During the | |
a23ca1b8 JH |
102 | course of development of this new feature, numerous minor bugs were |
103 | uncovered and corrected, the most notable one of which is that we | |
104 | gave "short SHA1 xxxx is ambiguous." twice without good reason. | |
105 | ||
106 | * "git log rev^..rev" is an often-used revision range specification | |
107 | to show what was done on a side branch merged at rev. This has | |
108 | gained a short-hand "rev^-1". In general "rev^-$n" is the same as | |
109 | "^rev^$n rev", i.e. what has happened on other branches while the | |
110 | history leading to nth parent was looking the other way. | |
111 | ||
112 | * In recent versions of cURL, GSSAPI credential delegation is | |
aeddbfdf MB |
113 | disabled by default due to CVE-2011-2192; introduce a http.delegation |
114 | configuration variable to selectively allow enabling this. | |
a23ca1b8 JH |
115 | (merge 26a7b23429 ps/http-gssapi-cred-delegation later to maint). |
116 | ||
72026574 JH |
117 | * "git mergetool" learned to honor "-O<orderfile>" to control the |
118 | order of paths to present to the end user. | |
119 | ||
2cc2e702 | 120 | * "git diff/log --ws-error-highlight=<kind>" lacked the corresponding |
aeddbfdf | 121 | configuration variable (diff.wsErrorHighlight) to set it by default. |
2cc2e702 | 122 | |
aeddbfdf MB |
123 | * "git ls-files" learned the "--recurse-submodules" option |
124 | to get a listing of tracked files across submodules (i.e. this | |
125 | only works with the "--cached" option, not for listing untracked or | |
2cc2e702 JH |
126 | ignored files). This would be a useful tool to sit on the upstream |
127 | side of a pipe that is read with xargs to work on all working tree | |
128 | files from the top-level superproject. | |
129 | ||
130 | * A new credential helper that talks via "libsecret" with | |
131 | implementations of XDG Secret Service API has been added to | |
132 | contrib/credential/. | |
133 | ||
aeddbfdf | 134 | * The GPG verification status shown by the "%G?" pretty format specifier |
2cc2e702 JH |
135 | was not rich enough to differentiate a signature made by an expired |
136 | key, a signature made by a revoked key, etc. New output letters | |
137 | have been assigned to express them. | |
138 | ||
139 | * In addition to purely abbreviated commit object names, "gitweb" | |
140 | learned to turn "git describe" output (e.g. v2.9.3-599-g2376d31787) | |
141 | into clickable links in its output. | |
142 | ||
aeddbfdf MB |
143 | * "git commit" created an empty commit when invoked with an index |
144 | consisting solely of intend-to-add paths (added with "git add -N"). | |
145 | It now requires the "--allow-empty" option to create such a commit. | |
146 | The same logic prevented "git status" from showing such paths as "new files" in the | |
eda7eebe JH |
147 | "Changes not staged for commit" section. |
148 | ||
aeddbfdf MB |
149 | * The smudge/clean filter API spawns an external process |
150 | to filter the contents of each path that has a filter defined. A | |
1fe8f2cf JH |
151 | new type of "process" filter API has been added to allow the first |
152 | request to run the filter for a path to spawn a single process, and | |
aeddbfdf | 153 | all filtering is served by this single process for multiple |
1fe8f2cf JH |
154 | paths, reducing the process creation overhead. |
155 | ||
156 | * The user always has to say "stash@{$N}" when naming a single | |
157 | element in the default location of the stash, i.e. reflogs in | |
158 | refs/stash. The "git stash" command learned to accept "git stash | |
159 | apply 4" as a short-hand for "git stash apply stash@{4}". | |
160 | ||
95b18556 JH |
161 | |
162 | Performance, Internal Implementation, Development Support etc. | |
163 | ||
164 | * The delta-base-cache mechanism has been a key to the performance in | |
165 | a repository with a tightly packed packfile, but it did not scale | |
166 | well even with a larger value of core.deltaBaseCacheLimit. | |
167 | ||
168 | * Enhance "git status --porcelain" output by collecting more data on | |
169 | the state of the index and the working tree files, which may | |
170 | further be used to teach git-prompt (in contrib/) to make fewer | |
171 | calls to git. | |
172 | ||
75d03ac8 JH |
173 | * Extract a small helper out of the function that reads the authors |
174 | script file "git am" internally uses. | |
175 | (merge a77598e jc/am-read-author-file later to maint). | |
176 | ||
aeddbfdf | 177 | * Lift calls to exit(2) and die() higher in the callchain in |
e510a86c JH |
178 | sequencer.c files so that more helper functions in it can be used |
179 | by callers that want to handle error conditions themselves. | |
180 | ||
2118cdc7 JH |
181 | * "git am" has been taught to make an internal call to "git apply"'s |
182 | innards without spawning the latter as a separate process. | |
183 | ||
184 | * The ref-store abstraction was introduced to the refs API so that we | |
185 | can plug in different backends to store references. | |
186 | ||
187 | * The "unsigned char sha1[20]" to "struct object_id" conversion | |
188 | continues. Notable changes in this round includes that ce->sha1, | |
189 | i.e. the object name recorded in the cache_entry, turns into an | |
190 | object_id. | |
191 | ||
6fe1b140 JH |
192 | * JGit can show a fake ref "capabilities^{}" to "git fetch" when it |
193 | does not advertise any refs, but "git fetch" was not prepared to | |
194 | see such an advertisement. When the other side disconnects without | |
195 | giving any ref advertisement, we used to say "there may not be a | |
aeddbfdf | 196 | repository at that URL", but we may have seen other advertisements |
6fe1b140 JH |
197 | like "shallow" and ".have" in which case we definitely know that a |
198 | repository is there. The code to detect this case has also been | |
199 | updated. | |
200 | ||
201 | * Some codepaths in "git pack-objects" were not ready to use an | |
aeddbfdf | 202 | existing pack bitmap; now they are and as a result they have |
6fe1b140 JH |
203 | become faster. |
204 | ||
30d687df JH |
205 | * The codepath in "git fsck" to detect malformed tree objects has |
206 | been updated not to die but keep going after detecting them. | |
207 | ||
8a36cd87 JH |
208 | * We call "qsort(array, nelem, sizeof(array[0]), fn)", and most of |
209 | the time third parameter is redundant. A new QSORT() macro lets us | |
210 | omit it. | |
211 | ||
212 | * "git pack-objects" in a repository with many packfiles used to | |
213 | spend a lot of time looking for/at objects in them; the accesses to | |
214 | the packfiles are now optimized by checking the most-recently-used | |
215 | packfile first. | |
216 | (merge c9af708b1a jk/pack-objects-optim-mru later to maint). | |
217 | ||
aeddbfdf | 218 | * Codepaths involved in interacting alternate object stores have |
72026574 JH |
219 | been cleaned up. |
220 | ||
221 | * In order for the receiving end of "git push" to inspect the | |
222 | received history and decide to reject the push, the objects sent | |
223 | from the sending end need to be made available to the hook and | |
224 | the mechanism for the connectivity check, and this was done | |
225 | traditionally by storing the objects in the receiving repository | |
aeddbfdf | 226 | and letting "git gc" expire them. Instead, store the newly |
72026574 JH |
227 | received objects in a temporary area, and make them available by |
228 | reusing the alternate object store mechanism to them only while we | |
229 | decide if we accept the check, and once we decide, either migrate | |
230 | them to the repository or purge them immediately. | |
231 | ||
2cc2e702 JH |
232 | * The require_clean_work_tree() helper was recreated in C when "git |
233 | pull" was rewritten from shell; the helper is now made available to | |
234 | other callers in preparation for upcoming "rebase -i" work. | |
235 | ||
236 | * "git upload-pack" had its code cleaned-up and performance improved | |
237 | by reducing use of timestamp-ordered commit-list, which was | |
238 | replaced with a priority queue. | |
239 | ||
eda7eebe | 240 | * "git diff --no-index" codepath has been updated not to try to peek |
aeddbfdf | 241 | into a .git/ directory that happens to be under the current |
eda7eebe JH |
242 | directory, when we know we are operating outside any repository. |
243 | ||
244 | * Update of the sequencer codebase to make it reusable to reimplement | |
245 | "rebase -i" continues. | |
246 | ||
1fe8f2cf JH |
247 | * Git generally does not explicitly close file descriptors that were |
248 | open in the parent process when spawning a child process, but most | |
249 | of the time the child does not want to access them. As Windows does | |
250 | not allow removing or renaming a file that has a file descriptor | |
251 | open, a slow-to-exit child can even break the parent process by | |
252 | holding onto them. Use O_CLOEXEC flag to open files in various | |
253 | codepaths. | |
254 | ||
aeddbfdf MB |
255 | * Update "interpret-trailers" machinery and teach it that people in |
256 | the real world write all sorts of cruft in the "trailer" that was | |
1fe8f2cf JH |
257 | originally designed to have the neat-o "Mail-Header: like thing" |
258 | and nothing else. | |
259 | ||
95b18556 JH |
260 | |
261 | Also contains various documentation updates and code clean-ups. | |
262 | ||
263 | ||
264 | Fixes since v2.10 | |
265 | ----------------- | |
266 | ||
267 | Unless otherwise noted, all the fixes since v2.9 in the maintenance | |
268 | track are contained in this release (see the maintenance releases' | |
269 | notes for details). | |
270 | ||
271 | * Clarify various ways to specify the "revision ranges" in the | |
272 | documentation. | |
95b18556 JH |
273 | |
274 | * "diff-highlight" script (in contrib/) learned to work better with | |
275 | "git log -p --graph" output. | |
75d03ac8 JH |
276 | |
277 | * The test framework left the number of tests and success/failure | |
278 | count in the t/test-results directory, keyed by the name of the | |
279 | test script plus the process ID. The latter however turned out not | |
280 | to serve any useful purpose. The process ID part of the filename | |
281 | has been removed. | |
75d03ac8 JH |
282 | |
283 | * Having a submodule whose ".git" repository is somehow corrupt | |
aeddbfdf | 284 | caused a few commands that recurse into submodules to loop forever. |
75d03ac8 JH |
285 | |
286 | * "git symbolic-ref -d HEAD" happily removes the symbolic ref, but | |
287 | the resulting repository becomes an invalid one. Teach the command | |
288 | to forbid removal of HEAD. | |
75d03ac8 JH |
289 | |
290 | * A test spawned a short-lived background process, which sometimes | |
291 | prevented the test directory from getting removed at the end of the | |
292 | script on some platforms. | |
75d03ac8 JH |
293 | |
294 | * Update a few tests that used to use GIT_CURL_VERBOSE to use the | |
295 | newer GIT_TRACE_CURL. | |
75d03ac8 | 296 | |
e510a86c JH |
297 | * "git pack-objects --include-tag" was taught that when we know that |
298 | we are sending an object C, we want a tag B that directly points at | |
299 | C but also a tag A that points at the tag B. We used to miss the | |
300 | intermediate tag B in some cases. | |
e510a86c JH |
301 | |
302 | * Update Japanese translation for "git-gui". | |
e510a86c JH |
303 | |
304 | * "git fetch http::/site/path" did not die correctly and segfaulted | |
305 | instead. | |
e510a86c JH |
306 | |
307 | * "git commit-tree" stopped reading commit.gpgsign configuration | |
308 | variable that was meant for Porcelain "git commit" in Git 2.9; we | |
309 | forgot to update "git gui" to look at the configuration to match | |
310 | this change. | |
e510a86c | 311 | |
aeddbfdf | 312 | * "git add --chmod={+,-}x" added recently lacked documentation, which has |
6fe1b140 | 313 | been corrected. |
6fe1b140 JH |
314 | |
315 | * "git log --cherry-pick" used to include merge commits as candidates | |
316 | to be matched up with other commits, resulting a lot of wasted time. | |
aeddbfdf | 317 | The patch-id generation logic has been updated to ignore merges and |
6fe1b140 | 318 | avoid the wastage. |
6fe1b140 JH |
319 | |
320 | * The http transport (with curl-multi option, which is the default | |
321 | these days) failed to remove curl-easy handle from a curlm session, | |
322 | which led to unnecessary API failures. | |
6fe1b140 JH |
323 | |
324 | * There were numerous corner cases in which the configuration files | |
325 | are read and used or not read at all depending on the directory a | |
326 | Git command was run, leading to inconsistent behaviour. The code | |
327 | to set-up repository access at the beginning of a Git process has | |
328 | been updated to fix them. | |
329 | (merge 4d0efa1 jk/setup-sequence-update later to maint). | |
330 | ||
331 | * "git diff -W" output needs to extend the context backward to | |
332 | include the header line of the current function and also forward to | |
333 | include the body of the entire current function up to the header | |
be5a7509 | 334 | line of the next one. This process may have to merge two adjacent |
6fe1b140 | 335 | hunks, but the code forgot to do so in some cases. |
6fe1b140 | 336 | |
aeddbfdf | 337 | * Performance tests done via "t/perf" did not use the right |
6fe1b140 JH |
338 | build configuration if the user relied on autoconf generated |
339 | configuration. | |
6fe1b140 JH |
340 | |
341 | * "git format-patch --base=..." feature that was recently added | |
aeddbfdf | 342 | showed the base commit information after the "-- " e-mail signature |
6fe1b140 JH |
343 | line, which turned out to be inconvenient. The base information |
344 | has been moved above the signature line. | |
6fe1b140 JH |
345 | |
346 | * More i18n. | |
6fe1b140 JH |
347 | |
348 | * Even when "git pull --rebase=preserve" (and the underlying "git | |
aeddbfdf MB |
349 | rebase --preserve") can complete without creating any new commits |
350 | (i.e. fast-forwards), it still insisted on having usable ident | |
6fe1b140 JH |
351 | information (read: user.email is set correctly), which was less |
352 | than nice. As the underlying commands used inside "git rebase" | |
353 | would fail with a more meaningful error message and advice text | |
354 | when the bogus ident matters, this extra check was removed. | |
6fe1b140 JH |
355 | |
356 | * "git gc --aggressive" used to limit the delta-chain length to 250, | |
357 | which is way too deep for gaining additional space savings and is | |
358 | detrimental for runtime performance. The limit has been reduced to | |
359 | 50. | |
6fe1b140 | 360 | |
21f862b4 JH |
361 | * Documentation for individual configuration variables to control use |
362 | of color (like `color.grep`) said that their default value is | |
363 | 'false', instead of saying their default is taken from `color.ui`. | |
364 | When we updated the default value for color.ui from 'false' to | |
365 | 'auto' quite a while ago, all of them broke. This has been | |
366 | corrected. | |
21f862b4 JH |
367 | |
368 | * The pretty-format specifier "%C(auto)" used by the "log" family of | |
369 | commands to enable coloring of the output is taught to also issue a | |
370 | color-reset sequence to the output. | |
21f862b4 JH |
371 | |
372 | * A shell script example in check-ref-format documentation has been | |
373 | fixed. | |
21f862b4 JH |
374 | |
375 | * "git checkout <word>" does not follow the usual disambiguation | |
376 | rules when the <word> can be both a rev and a path, to allow | |
377 | checking out a branch 'foo' in a project that happens to have a | |
378 | file 'foo' in the working tree without having to disambiguate. | |
379 | This was poorly documented and the check was incorrect when the | |
380 | command was run from a subdirectory. | |
21f862b4 JH |
381 | |
382 | * Some codepaths in "git diff" used regexec(3) on a buffer that was | |
383 | mmap(2)ed, which may not have a terminating NUL, leading to a read | |
384 | beyond the end of the mapped region. This was fixed by introducing | |
385 | a regexec_buf() helper that takes a <ptr,len> pair with REG_STARTEND | |
386 | extension. | |
21f862b4 JH |
387 | |
388 | * The procedure to build Git on Mac OS X for Travis CI hardcoded the | |
389 | internal directory structure we assumed HomeBrew uses, which was a | |
390 | no-no. The procedure has been updated to ask HomeBrew things we | |
391 | need to know to fix this. | |
21f862b4 JH |
392 | |
393 | * When "git rebase -i" is given a broken instruction, it told the | |
394 | user to fix it with "--edit-todo", but didn't say what the step | |
395 | after that was (i.e. "--continue"). | |
21f862b4 JH |
396 | |
397 | * Documentation around tools to import from CVS was fairly outdated. | |
21f862b4 JH |
398 | |
399 | * "git clone --recurse-submodules" lost the progress eye-candy in | |
aeddbfdf | 400 | a recent update, which has been corrected. |
21f862b4 | 401 | |
641b158a JH |
402 | * A low-level function verify_packfile() was meant to show errors |
403 | that were detected without dying itself, but under some conditions | |
404 | it didn't and died instead, which has been fixed. | |
641b158a JH |
405 | |
406 | * When "git fetch" tries to find where the history of the repository | |
407 | it runs in has diverged from what the other side has, it has a | |
408 | mechanism to avoid digging too deep into irrelevant side branches. | |
409 | This however did not work well over the "smart-http" transport due | |
410 | to a design bug, which has been fixed. | |
641b158a JH |
411 | |
412 | * In the codepath that comes up with the hostname to be used in an | |
aeddbfdf | 413 | e-mail when the user didn't tell us, we looked at the ai_canonname |
641b158a | 414 | field in struct addrinfo without making sure it is not NULL first. |
641b158a JH |
415 | |
416 | * "git worktree", even though it used the default_abbrev setting that | |
aeddbfdf | 417 | ought to be affected by the core.abbrev configuration variable, ignored |
641b158a JH |
418 | the variable setting. The command has been taught to read the |
419 | default set of configuration variables to correct this. | |
641b158a | 420 | |
30d687df | 421 | * "git init" tried to record core.worktree in the repository's |
aeddbfdf | 422 | 'config' file when the GIT_WORK_TREE environment variable was set and |
30d687df JH |
423 | it was different from where GIT_DIR appears as ".git" at its top, |
424 | but the logic was faulty when .git is a "gitdir:" file that points | |
425 | at the real place, causing trouble in working trees that are | |
426 | managed by "git worktree". This has been corrected. | |
427 | ||
428 | * Codepaths that read from an on-disk loose object were too loose in | |
aeddbfdf | 429 | validating that they are reading a proper object file and |
30d687df JH |
430 | sometimes read past the data they read from the disk, which has |
431 | been corrected. H/t to Gustavo Grieco for reporting. | |
30d687df JH |
432 | |
433 | * The original command line syntax for "git merge", which was "git | |
434 | merge <msg> HEAD <parent>...", has been deprecated for quite some | |
435 | time, and "git gui" was the last in-tree user of the syntax. This | |
436 | is finally fixed, so that we can move forward with the deprecation. | |
30d687df | 437 | |
aeddbfdf MB |
438 | * An author name that has a backslash-quoted double quote in the |
439 | human readable part ("My \"double quoted\" name"), was not unquoted | |
30d687df | 440 | correctly while applying a patch from a piece of e-mail. |
30d687df JH |
441 | |
442 | * Doc update to clarify what "log -3 --reverse" does. | |
30d687df | 443 | |
a23ca1b8 JH |
444 | * Almost everybody uses DEFAULT_ABBREV to refer to the default |
445 | setting for the abbreviation, but "git blame" peeked into | |
446 | underlying variable bypassing the macro for no good reason. | |
a23ca1b8 JH |
447 | |
448 | * The "graph" API used in "git log --graph" miscounted the number of | |
449 | output columns consumed so far when drawing a padding line, which | |
450 | has been fixed; this did not affect any existing code as nobody | |
451 | tried to write anything after the padding on such a line, though. | |
a23ca1b8 | 452 | |
aeddbfdf | 453 | * The code that parses the format parameter of the for-each-ref command |
a23ca1b8 | 454 | has seen a micro-optimization. |
a23ca1b8 | 455 | |
aeddbfdf | 456 | * When we started to use cURL to talk to an imap server, we forgot to explicitly add |
8a36cd87 JH |
457 | imap(s):// before the destination. To some folks, that didn't work |
458 | and the library tried to make HTTP(s) requests instead. | |
8a36cd87 JH |
459 | |
460 | * The ./configure script generated from configure.ac was taught how | |
461 | to detect support of SSL by libcurl better. | |
8a36cd87 JH |
462 | |
463 | * The command-line completion script (in contrib/) learned to | |
464 | complete "git cmd ^mas<HT>" to complete the negative end of | |
465 | reference to "git cmd ^master". | |
466 | (merge 49416ad22a cp/completion-negative-refs later to maint). | |
467 | ||
468 | * The existing "git fetch --depth=<n>" option was hard to use | |
469 | correctly when making the history of an existing shallow clone | |
470 | deeper. A new option, "--deepen=<n>", has been added to make this | |
471 | easier to use. "git clone" also learned "--shallow-since=<date>" | |
472 | and "--shallow-exclude=<tag>" options to make it easier to specify | |
473 | "I am interested only in the recent N months worth of history" and | |
474 | "Give me only the history since that version". | |
475 | (merge cccf74e2da nd/shallow-deepen later to maint). | |
476 | ||
aeddbfdf | 477 | * "git blame --reverse OLD path" is now DWIMmed to show how lines |
8a36cd87 JH |
478 | in path in an old revision OLD have survived up to the current |
479 | commit. | |
480 | (merge e1d09701a4 jc/blame-reverse later to maint). | |
481 | ||
aeddbfdf | 482 | * The http.emptyauth configuration variable is a way to allow an empty username to |
72026574 JH |
483 | pass when attempting to authenticate using mechanisms like |
484 | Kerberos. We took an unspecified (NULL) username and sent ":" | |
485 | (i.e. no username, no password) to CURLOPT_USERPWD, but did not do | |
486 | the same when the username is explicitly set to an empty string. | |
72026574 JH |
487 | |
488 | * "git clone" of a local repository can be done at the filesystem | |
489 | level, but the codepath did not check errors while copying and | |
490 | adjusting the file that lists alternate object stores. | |
72026574 JH |
491 | |
492 | * Documentation for "git commit" was updated to clarify that "commit | |
493 | -p <paths>" adds to the current contents of the index to come up | |
494 | with what to commit. | |
72026574 | 495 | |
aeddbfdf | 496 | * A stray symbolic link in the $GIT_DIR/refs/ directory could make name |
72026574 | 497 | resolution loop forever, which has been corrected. |
72026574 JH |
498 | |
499 | * The "submodule.<name>.path" stored in .gitmodules is never copied | |
500 | to .git/config and such a key in .git/config has no meaning, but | |
aeddbfdf MB |
501 | the documentation described it next to submodule.<name>.url |
502 | as if both belong to .git/config. This has been fixed. | |
72026574 | 503 | |
aeddbfdf | 504 | * In a worktree created via "git |
2cc2e702 JH |
505 | worktree", "git checkout" attempts to protect users from confusion |
506 | by refusing to check out a branch that is already checked out in | |
507 | another worktree. However, this also prevented checking out a | |
aeddbfdf MB |
508 | branch which is designated as the primary branch of a bare |
509 | repository, in a worktree that is connected to the bare | |
2cc2e702 | 510 | repository. The check has been corrected to allow it. |
2cc2e702 JH |
511 | |
512 | * "git rebase" immediately after "git clone" failed to find the fork | |
513 | point from the upstream. | |
2cc2e702 JH |
514 | |
515 | * When fetching from a remote that has many tags that are irrelevant | |
516 | to branches we are following, we used to waste way too many cycles | |
aeddbfdf | 517 | checking if the object pointed at by a tag (that we are not |
2cc2e702 | 518 | going to fetch!) exists in our repository too carefully. |
2cc2e702 JH |
519 | |
520 | * Protect our code from over-eager compilers. | |
2cc2e702 JH |
521 | |
522 | * Recent git allows submodule.<name>.branch to use a special token | |
523 | "." instead of the branch name; the documentation has been updated | |
524 | to describe it. | |
2cc2e702 | 525 | |
2cc2e702 | 526 | * "git send-email" attempts to pick up valid e-mails from the |
aeddbfdf | 527 | trailers, but people in the real world write non-addresses there, like |
2cc2e702 | 528 | "Cc: Stable <add@re.ss> # 4.8+", which broke the output depending |
aeddbfdf | 529 | on the availability and vintage of the Mail::Address perl module. |
2cc2e702 JH |
530 | (merge dcfafc5214 mm/send-email-cc-cruft-after-address later to maint). |
531 | ||
aeddbfdf | 532 | * The Travis CI configuration we ship ran the tests with the --verbose |
2cc2e702 JH |
533 | option but this risks non-TAP output that happens to be "ok" to be |
534 | misinterpreted as TAP signalling a test that passed. This resulted | |
aeddbfdf | 535 | in unnecessary failures. This has been corrected by introducing a |
2cc2e702 JH |
536 | new mode to run our tests in the test harness to send the verbose |
537 | output separately to the log file. | |
2cc2e702 | 538 | |
aeddbfdf | 539 | * Some AsciiDoc formatters mishandle a displayed illustration with |
2cc2e702 JH |
540 | tabs in it. Adjust a few of them in merge-base documentation to |
541 | work around them. | |
2cc2e702 | 542 | |
aeddbfdf | 543 | * Fixed a minor regression in "git submodule" that was introduced |
eda7eebe JH |
544 | when more helper functions were reimplemented in C. |
545 | (merge 77b63ac31e sb/submodule-ignore-trailing-slash later to maint). | |
546 | ||
547 | * The code that we have used for the past 10+ years to cycle | |
548 | 4-element ring buffers turns out to be not quite portable in | |
549 | theoretical world. | |
550 | (merge bb84735c80 rs/ring-buffer-wraparound later to maint). | |
551 | ||
aeddbfdf | 552 | * "git daemon" used fixed-length buffers to turn URLs to the |
eda7eebe | 553 | repository the client asked for into the server side directory |
aeddbfdf | 554 | paths, using snprintf() to avoid overflowing these buffers, but |
eda7eebe | 555 | allowed possibly truncated paths to the directory. This has been |
aeddbfdf MB |
556 | tightened to reject such a request that causes an overlong path to be |
557 | served. | |
eda7eebe JH |
558 | (merge 6bdb0083be jk/daemon-path-ok-check-truncation later to maint). |
559 | ||
1fe8f2cf JH |
560 | * Recent update to git-sh-setup (a library of shell functions that |
561 | are used by our in-tree scripted Porcelain commands) included | |
562 | another shell library git-sh-i18n without specifying where it is, | |
563 | relying on the $PATH. This has been fixed to be more explicit by | |
aeddbfdf | 564 | prefixing with $(git --exec-path) output. |
1fe8f2cf JH |
565 | (merge 1073094f30 ak/sh-setup-dot-source-i18n-fix later to maint). |
566 | ||
3ab22813 JH |
567 | * Fix for a racy false-positive test failure. |
568 | (merge fdf4f6c79b as/merge-attr-sleep later to maint). | |
569 | ||
570 | * Portability update and workaround for builds on recent Mac OS X. | |
571 | (merge a296bc0132 ls/macos-update later to maint). | |
572 | ||
e2b2d6a1 JH |
573 | * Using a %(HEAD) placeholder in "for-each-ref --format=" option |
574 | caused the command to segfault when on an unborn branch. | |
575 | (merge 84679d470d jc/for-each-ref-head-segfault-fix later to maint). | |
576 | ||
aeddbfdf | 577 | * "git rebase -i" did not work well with the core.commentchar |
e2b2d6a1 JH |
578 | configuration variable for two reasons, both of which have been |
579 | fixed. | |
580 | (merge 882cd23777 js/rebase-i-commentchar-fix later to maint). | |
581 | ||
75d03ac8 | 582 | * Other minor doc, test and build updates and code cleanups. |
1fe8f2cf JH |
583 | (merge 5c238e29a8 jk/common-main later to maint). |
584 | (merge 5a5749e45b ak/pre-receive-hook-template-modefix later to maint). | |
585 | (merge 6d834ac8f1 jk/rebase-config-insn-fmt-docfix later to maint). | |
586 | (merge de9f7fa3b0 rs/commit-pptr-simplify later to maint). | |
587 | (merge 4259d693fc sc/fmt-merge-msg-doc-markup-fix later to maint). | |
588 | (merge 28fab7b23d nd/test-helpers later to maint). | |
be5a7509 | 589 | (merge c2bb0c1d1e rs/cocci later to maint). |
3ab22813 | 590 | (merge 3285b7badb ps/common-info-doc later to maint). |
1310affe JH |
591 | (merge 2b090822e8 nd/worktree-lock later to maint). |
592 | (merge 4bd488ea7c jk/create-branch-remove-unused-param later to maint). | |
593 | (merge 974e0044d6 tk/diffcore-delta-remove-unused later to maint). |