Changes between Initial Version and Version 2 of Ticket #6759


Ignore:
Timestamp:
09/30/2015 12:29:49 PM (9 years ago)
Author:
Fernando de Oliveira
Comment:

Legend:

Unmodified
Added
Removed
Modified
  • Ticket #6759

    • Property Summary git-2.6 (wait for minor releases or before BLFS-7.8 release - do not update too frequently)git-2.6.0
    • Property Milestone hold7.9
  • Ticket #6759 – Description

    initial v2  
    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{{{
     8Git 2.6 Release Notes
     9=====================
     10
     11Updates since v2.5
     12------------------
     13
     14UI, 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
     101Performance, 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
     165Also contains various documentation updates and code clean-ups.
     166
     167
     168Fixes since v2.5
     169----------------
     170
     171Unless otherwise noted, all the fixes since v2.5 in the maintenance
     172track are contained in this release (see the maintenance releases'
     173notes 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}}}