]>
Commit | Line | Data |
---|---|---|
eb67052b JH |
1 | Git 2.6 Release Notes |
2 | ===================== | |
3 | ||
4 | Updates since v2.5 | |
5 | ------------------ | |
6 | ||
7 | UI, Workflows & Features | |
8 | ||
9 | * An asterisk as a substring (as opposed to the entirety) of a path | |
10 | component for both side of a refspec, e.g. | |
11 | "refs/heads/o*:refs/remotes/heads/i*", is now allowed. | |
12 | ||
13 | * New userdiff pattern definition for fountain screenwriting markup | |
14 | format has been added. | |
15 | ||
16 | * "git log" and friends learned a new "--date=format:..." option to | |
17 | format timestamps using system's strftime(3). | |
18 | ||
19 | * "git fast-import" learned to respond to the get-mark command via | |
20 | its cat-blob-fd interface. | |
21 | ||
22 | * "git rebase -i" learned "drop commit-object-name subject" command | |
23 | as another way to skip replaying of a commit. | |
24 | ||
25 | * A new configuration variable can enable "--follow" automatically | |
26 | when "git log" is run with one pathspec argument. | |
27 | ||
28 | * "git status" learned to show a more detailed information regarding | |
29 | the "rebase -i" session in progress. | |
30 | ||
31 | * "git cat-file" learned "--batch-all-objects" option to enumerate all | |
32 | available objects in the repository more quickly than "rev-list | |
33 | --all --objects" (the output includes unreachable objects, though). | |
34 | ||
35 | * "git fsck" learned to ignore errors on a set of known-to-be-bad | |
36 | objects, and also allows the warning levels of various kinds of | |
37 | non-critical breakages to be tweaked. | |
38 | ||
39 | * "git rebase -i"'s list of todo is made configurable. | |
40 | ||
41 | * "git send-email" now performs alias-expansion on names that are | |
42 | given via --cccmd, etc. | |
43 | ||
44 | * An environment variable GIT_REPLACE_REF_BASE tells Git to look into | |
45 | refs hierarchy other than refs/replace/ for the object replacement | |
46 | data. | |
47 | ||
44e02239 JH |
48 | * Allow untracked cache (experimental) to be used when sparse |
49 | checkout (experimental) is also in use. | |
50 | ||
51 | * "git pull --rebase" has been taught to pay attention to | |
52 | rebase.autostash configuration. | |
53 | ||
8f8d0ecf JH |
54 | * The command-line completion script (in contrib/) has been updated. |
55 | ||
56 | * A negative !ref entry in multi-value transfer.hideRefs | |
57 | configuration can be used to say "don't hide this one". | |
58 | ||
7a2c4af7 | 59 | * After "git am" without "-3" stops, running "git am -3" pays attention |
8da8889a JH |
60 | to "-3" only for the patch that caused the original invocation |
61 | to stop. | |
62 | ||
63 | * When linked worktree is used, simultaneous "notes merge" instances | |
64 | for the same ref in refs/notes/* are prevented from stomping on | |
65 | each other. | |
66 | ||
3a9835bf JH |
67 | * "git send-email" learned a new option --smtp-auth to limit the SMTP |
68 | AUTH mechanisms to be used to a subset of what the system library | |
69 | supports. | |
70 | ||
71 | * A new configuration variable http.sslVersion can be used to specify | |
72 | what specific version of SSL/TLS to use to make a connection. | |
73 | ||
16163602 JH |
74 | * "git notes merge" can be told with "--strategy=<how>" option how to |
75 | automatically handle conflicts; this can now be configured by | |
76 | setting notes.mergeStrategy configuration variable. | |
77 | ||
78 | * "git log --cc" did not show any patch, even though most of the time | |
79 | the user meant "git log --cc -p -m" to see patch output for commits | |
80 | with a single parent, and combined diff for merge commits. The | |
81 | command is taught to DWIM "--cc" (without "--raw" and other forms | |
82 | of output specification) to "--cc -p -m". | |
83 | ||
84 | * "git config --list" output was hard to parse when values consist of | |
85 | multiple lines. "--name-only" option is added to help this. | |
86 | ||
45733fa9 JH |
87 | * A handful of usability & cosmetic fixes to gitk and l10n updates. |
88 | ||
89 | * A completely empty e-mail address <> is now allowed in the authors | |
90 | file used by git-svn, to match the way it accepts the output from | |
91 | authors-prog. | |
92 | ||
eb67052b JH |
93 | |
94 | Performance, Internal Implementation, Development Support etc. | |
95 | ||
96 | * In preparation for allowing different "backends" to store the refs | |
97 | in a way different from the traditional "one ref per file in | |
98 | $GIT_DIR or in a $GIT_DIR/packed-refs file" filesystem storage, | |
99 | direct filesystem access to ref-like things like CHERRY_PICK_HEAD | |
100 | from scripts and programs has been reduced. | |
101 | ||
102 | * Computation of untracked status indicator by bash prompt | |
103 | script (in contrib/) has been optimized. | |
104 | ||
105 | * Memory use reduction when commit-slab facility is used to annotate | |
106 | sparsely (which is not recommended in the first place). | |
107 | ||
108 | * Clean up refs API and make "git clone" less intimate with the | |
109 | implementation detail. | |
110 | ||
111 | * "git pull" was reimplemented in C. | |
112 | ||
113 | * The packet tracing machinery allows to capture an incoming pack | |
114 | data to a file for debugging. | |
115 | ||
116 | * Move machinery to parse human-readable scaled numbers like 1k, 4M, | |
117 | and 2G as an option parameter's value from pack-objects to | |
118 | parse-options API, to make it available to other codepaths. | |
119 | ||
120 | * "git verify-tag" and "git verify-commit" have been taught to share | |
121 | more code, and then learned to optionally show the verification | |
122 | message from the underlying GPG implementation. | |
123 | ||
124 | * Various enhancements around "git am" reading patches generated by | |
125 | foreign SCM have been made. | |
126 | ||
127 | * Ref listing by "git branch -l" and "git tag -l" commands has | |
128 | started to be rebuilt, based on the for-each-ref machinery. | |
129 | ||
130be8ee JH |
130 | * The code to perform multi-tree merges has been taught to repopulate |
131 | the cache-tree upon a successful merge into the index, so that | |
132 | subsequent "diff-index --cached" (hence "status") and "write-tree" | |
133 | (hence "commit") will go faster. | |
134 | ||
135 | The same logic in "git checkout" may now be removed, but that is a | |
136 | separate issue. | |
137 | ||
138 | * Tests that assume how reflogs are represented on the filesystem too | |
139 | much have been corrected. | |
140 | ||
141 | * "git am" has been rewritten in "C". | |
142 | ||
8f8d0ecf JH |
143 | * git_path() and mkpath() are handy helper functions but it is easy |
144 | to misuse, as the callers need to be careful to keep the number of | |
145 | active results below 4. Their uses have been reduced. | |
146 | ||
8da8889a JH |
147 | * The "lockfile" API has been rebuilt on top of a new "tempfile" API. |
148 | ||
149 | * To prepare for allowing a different "ref" backend to be plugged in | |
150 | to the system, update_ref()/delete_ref() have been taught about | |
151 | ref-like things like MERGE_HEAD that are per-worktree (they will | |
152 | always be written to the filesystem inside $GIT_DIR). | |
153 | ||
16163602 JH |
154 | * The gitmodules API that is accessed from the C code learned to |
155 | cache stuff lazily. | |
156 | ||
eb67052b JH |
157 | |
158 | Also contains various documentation updates and code clean-ups. | |
159 | ||
160 | ||
161 | Fixes since v2.5 | |
162 | ---------------- | |
163 | ||
164 | Unless otherwise noted, all the fixes since v2.5 in the maintenance | |
165 | track are contained in this release (see the maintenance releases' | |
166 | notes for details). | |
167 | ||
168 | * "git subtree" (in contrib/) depended on "git log" output to be | |
169 | stable, which was a no-no. Apply a workaround to force a | |
170 | particular date format. | |
171 | (merge e7aac44 da/subtree-date-confusion later to maint). | |
172 | ||
8f8d0ecf | 173 | * An attempt to delete a ref by pushing into a repository whose HEAD |
eb67052b JH |
174 | symbolic reference points at an unborn branch that cannot be |
175 | created due to ref D/F conflict (e.g. refs/heads/a/b exists, HEAD | |
176 | points at refs/heads/a) failed. | |
177 | (merge b112b14 jx/do-not-crash-receive-pack-wo-head later to maint). | |
178 | ||
179 | * The low-level "git send-pack" did not honor 'user.signingkey' | |
180 | configuration variable when sending a signed-push. | |
181 | (merge d830d39 db/send-pack-user-signingkey later to maint). | |
182 | ||
183 | * "sparse checkout" misbehaved for a path that is excluded from the | |
184 | checkout when switching between branches that differ at the path. | |
185 | (merge 7d78241 as/sparse-checkout-removal later to maint). | |
186 | ||
187 | * An experimental "untracked cache" feature used uname(2) in a | |
188 | slightly unportable way. | |
189 | (merge 100e433 cb/uname-in-untracked later to maint). | |
190 | ||
191 | * A "rebase" replays changes of the local branch on top of something | |
192 | else, as such they are placed in stage #3 and referred to as | |
193 | "theirs", while the changes in the new base, typically a foreign | |
194 | work, are placed in stage #2 and referred to as "ours". Clarify | |
195 | the "checkout --ours/--theirs". | |
196 | (merge f303016 se/doc-checkout-ours-theirs later to maint). | |
197 | ||
198 | * The "rev-parse --parseopt" mode parsed the option specification | |
199 | and the argument hint in a strange way to allow '=' and other | |
200 | special characters in the option name while forbidding them from | |
201 | the argument hint. This made it impossible to define an option | |
202 | like "--pair <key>=<value>" with "pair=key=value" specification, | |
203 | which instead would have defined a "--pair=key <value>" option. | |
204 | (merge 2d893df ib/scripted-parse-opt-better-hint-string later to maint). | |
205 | ||
206 | * Often a fast-import stream builds a new commit on top of the | |
207 | previous commit it built, and it often unconditionally emits a | |
208 | "from" command to specify the first parent, which can be omitted in | |
209 | such a case. This caused fast-import to forget the tree of the | |
210 | previous commit and then re-read it from scratch, which was | |
211 | inefficient. Optimize for this common case. | |
212 | (merge 0df3245 mh/fast-import-optimize-current-from later to maint). | |
213 | ||
214 | * Running an aliased command from a subdirectory when the .git thing | |
215 | in the working tree is a gitfile pointing elsewhere did not work. | |
216 | (merge d95138e nd/export-worktree later to maint). | |
217 | ||
218 | * "Is this subdirectory a separate repository that should not be | |
219 | touched?" check "git clean" was inefficient. This was replaced | |
220 | with a more optimized check. | |
16ffa644 | 221 | (merge fbf2fec ee/clean-remove-dirs later to maint). |
eb67052b | 222 | |
130be8ee JH |
223 | * The "new-worktree-mode" hack in "checkout" that was added in |
224 | nd/multiple-work-trees topic has been removed by updating the | |
225 | implementation of new "worktree add". | |
226 | (merge 65f9b75 es/worktree-add-cleanup later to maint). | |
227 | ||
228 | * Remove remaining cruft from "git checkout --to", which | |
229 | transitioned to "git worktree add". | |
230 | (merge 114ff88 es/worktree-add later to maint). | |
231 | ||
44e02239 JH |
232 | * An off-by-one error made "git remote" to mishandle a remote with a |
233 | single letter nickname. | |
234 | (merge bc598c3 mh/get-remote-group-fix later to maint). | |
235 | ||
8f8d0ecf JH |
236 | * "git clone $URL", when cloning from a site whose sole purpose is to |
237 | host a single repository (hence, no path after <scheme>://<site>/), | |
238 | tried to use the site name as the new repository name, but did not | |
239 | remove username or password when <site> part was of the form | |
240 | <user>@<pass>:<host>. The code is taught to redact these. | |
241 | (merge adef956 ps/guess-repo-name-at-root later to maint). | |
242 | ||
243 | * Running tests with the "-x" option to make them verbose had some | |
244 | unpleasant interactions with other features of the test suite. | |
245 | (merge 9b5fe78 jk/test-with-x later to maint). | |
246 | ||
247 | * t1509 test that requires a dedicated VM environment had some | |
248 | bitrot, which has been corrected. | |
249 | (merge faacc5a ps/t1509-chroot-test-fixup later to maint). | |
250 | ||
251 | * "git pull" in recent releases of Git has a regression in the code | |
252 | that allows custom path to the --upload-pack=<program>. This has | |
253 | been corrected. | |
254 | ||
255 | Note that this is irrelevant for 'master' with "git pull" rewritten | |
256 | in C. | |
16ffa644 | 257 | (merge 13e0e28 mm/pull-upload-pack later to maint). |
8f8d0ecf | 258 | |
8da8889a JH |
259 | * When trying to see that an object does not exist, a state errno |
260 | leaked from our "first try to open a packfile with O_NOATIME and | |
261 | then if it fails retry without it" logic on a system that refuses | |
262 | O_NOATIME. This confused us and caused us to die, saying that the | |
263 | packfile is unreadable, when we should have just reported that the | |
264 | object does not exist in that packfile to the caller. | |
265 | (merge dff6f28 cb/open-noatime-clear-errno later to maint). | |
266 | ||
267 | * The codepath to produce error messages had a hard-coded limit to | |
268 | the size of the message, primarily to avoid memory allocation while | |
269 | calling die(). | |
270 | (merge f4c3edc jk/long-error-messages later to maint). | |
271 | ||
272 | * strbuf_read() used to have one extra iteration (and an unnecessary | |
273 | strbuf_grow() of 8kB), which was eliminated. | |
274 | (merge 3ebbd00 jh/strbuf-read-use-read-in-full later to maint). | |
275 | ||
3a9835bf JH |
276 | * We rewrote one of the build scripts in Perl but this reimplements |
277 | in Bourne shell. | |
f4d9753a | 278 | (merge 57cee8a sg/help-group later to maint). |
3a9835bf | 279 | |
e6837c8b JH |
280 | * The experimental untracked-cache feature were buggy when paths with |
281 | a few levels of subdirectories are involved. | |
282 | (merge 73f9145 dt/untracked-subdir later to maint). | |
283 | ||
284 | * "interpret-trailers" helper mistook a single-liner log message that | |
285 | has a colon as the end of existing trailer. | |
16ffa644 JH |
286 | |
287 | * The "interpret-trailers" helper mistook a multi-paragraph title of | |
288 | a commit log message with a colon in it as the end of the trailer | |
289 | block. | |
290 | (merge 5c99995 cc/trailers-corner-case-fix later to maint). | |
e6837c8b | 291 | |
16163602 JH |
292 | * "git describe" without argument defaulted to describe the HEAD |
293 | commit, but "git describe --contains" didn't. Arguably, in a | |
294 | repository used for active development, such defaulting would not | |
295 | be very useful as the tip of branch is typically not tagged, but it | |
296 | is better to be consistent. | |
297 | (merge 2bd0706 sg/describe-contains later to maint). | |
298 | ||
299 | * The client side codepaths in "git push" have been cleaned up | |
300 | and the user can request to perform an optional "signed push", | |
301 | i.e. sign only when the other end accepts signed push. | |
302 | (merge 68c757f db/push-sign-if-asked later to maint). | |
303 | ||
304 | * Because the configuration system does not allow "alias.0foo" and | |
305 | "pager.0foo" as the configuration key, the user cannot use '0foo' | |
306 | as a custom command name anyway, but "git 0foo" tried to look these | |
307 | keys up and emitted useless warnings before saying '0foo is not a | |
308 | git command'. These warning messages have been squelched. | |
309 | (merge 9e9de18 jk/fix-alias-pager-config-key-warnings later to maint). | |
310 | ||
311 | * "git rev-list" does not take "--notes" option, but did not complain | |
312 | when one is given. | |
313 | (merge 2aea7a5 jk/rev-list-has-no-notes later to maint). | |
314 | ||
7aa67f62 JH |
315 | * When re-priming the cache-tree opportunistically while committing |
316 | the in-core index as-is, we mistakenly invalidated the in-core | |
317 | index too aggressively, causing the experimental split-index code | |
318 | to unnecessarily rewrite the on-disk index file(s). | |
319 | (merge 475a344 dt/commit-preserve-base-index-upon-opportunistic-cache-tree-update later to maint). | |
320 | ||
321 | * "git archive" did not use zip64 extension when creating an archive | |
322 | with more than 64k entries, which nobody should need, right ;-)? | |
323 | (merge 88329ca rs/archive-zip-many later to maint). | |
324 | ||
325 | * The code in "multiple-worktree" support that attempted to recover | |
326 | from an inconsistent state updated an incorrect file. | |
327 | (merge 82fde87 nd/fixup-linked-gitdir later to maint). | |
328 | ||
329 | * On case insensitive systems, "git p4" did not work well with client | |
330 | specs. | |
331 | ||
16ffa644 JH |
332 | * "git init empty && git -C empty log" said "bad default revision 'HEAD'", |
333 | which was found to be a bit confusing to new users. | |
334 | (merge ce11360 jk/log-missing-default-HEAD later to maint). | |
335 | ||
f4d9753a JH |
336 | * Recent versions of scripted "git am" has a performance regression in |
337 | "git am --skip" codepath, which no longer exists in the built-in | |
338 | version on the 'master' front. Fix the regression in the last | |
339 | scripted version that appear in 2.5.x maintenance track and older. | |
340 | (merge b9d6689 js/maint-am-skip-performance-regression later to maint). | |
341 | ||
0e576799 JH |
342 | * The branch descriptions that are set with "git branch --edit-description" |
343 | option were used in many places but they weren't clearly documented. | |
344 | (merge 561d2b7 po/doc-branch-desc later to maint). | |
345 | ||
eb67052b JH |
346 | * Code cleanups and documentation updates. |
347 | (merge 1c601af es/doc-clean-outdated-tools later to maint). | |
348 | (merge 3581304 kn/tag-doc-fix later to maint). | |
349 | (merge 3a59e59 kb/i18n-doc later to maint). | |
130be8ee JH |
350 | (merge 45abdee sb/remove-unused-var-from-builtin-add later to maint). |
351 | (merge 14691e3 sb/parse-options-codeformat later to maint). | |
352 | (merge 4a6ada3 ad/bisect-cleanup later to maint). | |
44e02239 | 353 | (merge da4c5ad ta/docfix-index-format-tech later to maint). |
8f8d0ecf | 354 | (merge ae25fd3 sb/check-return-from-read-ref later to maint). |
8da8889a | 355 | (merge b3325df nd/dwim-wildcards-as-pathspecs later to maint). |
3a9835bf JH |
356 | (merge 7aa9b9b sg/wt-status-header-inclusion later to maint). |
357 | (merge f04c690 as/docfix-reflog-expire-unreachable later to maint). | |
358 | (merge 1269847 sg/t3020-typofix later to maint). | |
359 | (merge 8b54c23 jc/calloc-pathspec later to maint). | |
360 | (merge a6926b8 po/po-readme later to maint). | |
361 | (merge 54d160e ss/fix-config-fd-leak later to maint). | |
7aa67f62 JH |
362 | (merge b80fa84 ah/submodule-typofix-in-error later to maint). |
363 | (merge 99885bc ah/reflog-typofix-in-error later to maint). | |
364 | (merge 9476c2c ah/read-tree-usage-string later to maint). | |
365 | (merge b8c1d27 ah/pack-objects-usage-strings later to maint). | |
366 | (merge 486e1e1 br/svn-doc-include-paths-config later to maint). | |
16ffa644 | 367 | (merge 1733ed3 ee/clean-test-fixes later to maint). |
45733fa9 JH |
368 | (merge 5fcadc3 gb/apply-comment-typofix later to maint). |
369 | (merge b894d3e mp/t7060-diff-index-test later to maint). | |
0e576799 | 370 | (merge d238710 as/config-doc-markup-fix later to maint). |