]> git.ipfire.org Git - thirdparty/git.git/blob - Documentation/RelNotes/2.6.0.txt
Merge branch 'sg/describe-contains'
[thirdparty/git.git] / Documentation / RelNotes / 2.6.0.txt
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
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
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
59 * After "git am" without "-3" stops, running "git am -" pays attention
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
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
74
75 Performance, Internal Implementation, Development Support etc.
76
77 * In preparation for allowing different "backends" to store the refs
78 in a way different from the traditional "one ref per file in
79 $GIT_DIR or in a $GIT_DIR/packed-refs file" filesystem storage,
80 direct filesystem access to ref-like things like CHERRY_PICK_HEAD
81 from scripts and programs has been reduced.
82
83 * Computation of untracked status indicator by bash prompt
84 script (in contrib/) has been optimized.
85
86 * Memory use reduction when commit-slab facility is used to annotate
87 sparsely (which is not recommended in the first place).
88
89 * Clean up refs API and make "git clone" less intimate with the
90 implementation detail.
91
92 * "git pull" was reimplemented in C.
93
94 * The packet tracing machinery allows to capture an incoming pack
95 data to a file for debugging.
96
97 * Move machinery to parse human-readable scaled numbers like 1k, 4M,
98 and 2G as an option parameter's value from pack-objects to
99 parse-options API, to make it available to other codepaths.
100
101 * "git verify-tag" and "git verify-commit" have been taught to share
102 more code, and then learned to optionally show the verification
103 message from the underlying GPG implementation.
104
105 * Various enhancements around "git am" reading patches generated by
106 foreign SCM have been made.
107
108 * Ref listing by "git branch -l" and "git tag -l" commands has
109 started to be rebuilt, based on the for-each-ref machinery.
110
111 * The code to perform multi-tree merges has been taught to repopulate
112 the cache-tree upon a successful merge into the index, so that
113 subsequent "diff-index --cached" (hence "status") and "write-tree"
114 (hence "commit") will go faster.
115
116 The same logic in "git checkout" may now be removed, but that is a
117 separate issue.
118
119 * Tests that assume how reflogs are represented on the filesystem too
120 much have been corrected.
121
122 * "git am" has been rewritten in "C".
123
124 * git_path() and mkpath() are handy helper functions but it is easy
125 to misuse, as the callers need to be careful to keep the number of
126 active results below 4. Their uses have been reduced.
127
128 * The "lockfile" API has been rebuilt on top of a new "tempfile" API.
129
130 * To prepare for allowing a different "ref" backend to be plugged in
131 to the system, update_ref()/delete_ref() have been taught about
132 ref-like things like MERGE_HEAD that are per-worktree (they will
133 always be written to the filesystem inside $GIT_DIR).
134
135
136 Also contains various documentation updates and code clean-ups.
137
138
139 Fixes since v2.5
140 ----------------
141
142 Unless otherwise noted, all the fixes since v2.5 in the maintenance
143 track are contained in this release (see the maintenance releases'
144 notes for details).
145
146 * "git subtree" (in contrib/) depended on "git log" output to be
147 stable, which was a no-no. Apply a workaround to force a
148 particular date format.
149 (merge e7aac44 da/subtree-date-confusion later to maint).
150
151 * An attempt to delete a ref by pushing into a repository whose HEAD
152 symbolic reference points at an unborn branch that cannot be
153 created due to ref D/F conflict (e.g. refs/heads/a/b exists, HEAD
154 points at refs/heads/a) failed.
155 (merge b112b14 jx/do-not-crash-receive-pack-wo-head later to maint).
156
157 * The low-level "git send-pack" did not honor 'user.signingkey'
158 configuration variable when sending a signed-push.
159 (merge d830d39 db/send-pack-user-signingkey later to maint).
160
161 * "sparse checkout" misbehaved for a path that is excluded from the
162 checkout when switching between branches that differ at the path.
163 (merge 7d78241 as/sparse-checkout-removal later to maint).
164
165 * An experimental "untracked cache" feature used uname(2) in a
166 slightly unportable way.
167 (merge 100e433 cb/uname-in-untracked later to maint).
168
169 * A "rebase" replays changes of the local branch on top of something
170 else, as such they are placed in stage #3 and referred to as
171 "theirs", while the changes in the new base, typically a foreign
172 work, are placed in stage #2 and referred to as "ours". Clarify
173 the "checkout --ours/--theirs".
174 (merge f303016 se/doc-checkout-ours-theirs later to maint).
175
176 * The "rev-parse --parseopt" mode parsed the option specification
177 and the argument hint in a strange way to allow '=' and other
178 special characters in the option name while forbidding them from
179 the argument hint. This made it impossible to define an option
180 like "--pair <key>=<value>" with "pair=key=value" specification,
181 which instead would have defined a "--pair=key <value>" option.
182 (merge 2d893df ib/scripted-parse-opt-better-hint-string later to maint).
183
184 * Often a fast-import stream builds a new commit on top of the
185 previous commit it built, and it often unconditionally emits a
186 "from" command to specify the first parent, which can be omitted in
187 such a case. This caused fast-import to forget the tree of the
188 previous commit and then re-read it from scratch, which was
189 inefficient. Optimize for this common case.
190 (merge 0df3245 mh/fast-import-optimize-current-from later to maint).
191
192 * Running an aliased command from a subdirectory when the .git thing
193 in the working tree is a gitfile pointing elsewhere did not work.
194 (merge d95138e nd/export-worktree later to maint).
195
196 * "Is this subdirectory a separate repository that should not be
197 touched?" check "git clean" was inefficient. This was replaced
198 with a more optimized check.
199 (merge 38ae878 ee/clean-remove-dirs later to maint).
200
201 * The "new-worktree-mode" hack in "checkout" that was added in
202 nd/multiple-work-trees topic has been removed by updating the
203 implementation of new "worktree add".
204 (merge 65f9b75 es/worktree-add-cleanup later to maint).
205
206 * Remove remaining cruft from "git checkout --to", which
207 transitioned to "git worktree add".
208 (merge 114ff88 es/worktree-add later to maint).
209
210 * An off-by-one error made "git remote" to mishandle a remote with a
211 single letter nickname.
212 (merge bc598c3 mh/get-remote-group-fix later to maint).
213
214 * "git clone $URL", when cloning from a site whose sole purpose is to
215 host a single repository (hence, no path after <scheme>://<site>/),
216 tried to use the site name as the new repository name, but did not
217 remove username or password when <site> part was of the form
218 <user>@<pass>:<host>. The code is taught to redact these.
219 (merge adef956 ps/guess-repo-name-at-root later to maint).
220
221 * Running tests with the "-x" option to make them verbose had some
222 unpleasant interactions with other features of the test suite.
223 (merge 9b5fe78 jk/test-with-x later to maint).
224
225 * t1509 test that requires a dedicated VM environment had some
226 bitrot, which has been corrected.
227 (merge faacc5a ps/t1509-chroot-test-fixup later to maint).
228
229 * "git pull" in recent releases of Git has a regression in the code
230 that allows custom path to the --upload-pack=<program>. This has
231 been corrected.
232
233 Note that this is irrelevant for 'master' with "git pull" rewritten
234 in C.
235 (merge 22d6857 mm/pull-upload-pack later to maint).
236
237 * When trying to see that an object does not exist, a state errno
238 leaked from our "first try to open a packfile with O_NOATIME and
239 then if it fails retry without it" logic on a system that refuses
240 O_NOATIME. This confused us and caused us to die, saying that the
241 packfile is unreadable, when we should have just reported that the
242 object does not exist in that packfile to the caller.
243 (merge dff6f28 cb/open-noatime-clear-errno later to maint).
244
245 * The codepath to produce error messages had a hard-coded limit to
246 the size of the message, primarily to avoid memory allocation while
247 calling die().
248 (merge f4c3edc jk/long-error-messages later to maint).
249
250 * strbuf_read() used to have one extra iteration (and an unnecessary
251 strbuf_grow() of 8kB), which was eliminated.
252 (merge 3ebbd00 jh/strbuf-read-use-read-in-full later to maint).
253
254 * We rewrote one of the build scripts in Perl but this reimplements
255 in Bourne shell.
256 (merge 82aec45 sg/help-group later to maint).
257
258 * The experimental untracked-cache feature were buggy when paths with
259 a few levels of subdirectories are involved.
260 (merge 73f9145 dt/untracked-subdir later to maint).
261
262 * "interpret-trailers" helper mistook a single-liner log message that
263 has a colon as the end of existing trailer.
264 (merge 6262fe9 cc/trailers-corner-case-fix later to maint).
265
266 * Code cleanups and documentation updates.
267 (merge 1c601af es/doc-clean-outdated-tools later to maint).
268 (merge 3581304 kn/tag-doc-fix later to maint).
269 (merge 3a59e59 kb/i18n-doc later to maint).
270 (merge 45abdee sb/remove-unused-var-from-builtin-add later to maint).
271 (merge 14691e3 sb/parse-options-codeformat later to maint).
272 (merge 4a6ada3 ad/bisect-cleanup later to maint).
273 (merge da4c5ad ta/docfix-index-format-tech later to maint).
274 (merge ae25fd3 sb/check-return-from-read-ref later to maint).
275 (merge b3325df nd/dwim-wildcards-as-pathspecs later to maint).
276 (merge 7aa9b9b sg/wt-status-header-inclusion later to maint).
277 (merge f04c690 as/docfix-reflog-expire-unreachable later to maint).
278 (merge 1269847 sg/t3020-typofix later to maint).
279 (merge 8b54c23 jc/calloc-pathspec later to maint).
280 (merge a6926b8 po/po-readme later to maint).
281 (merge 54d160e ss/fix-config-fd-leak later to maint).