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