Documentation / RelNotes / 2.6.0.txton commit Merge branch 'jc/finalize-temp-file' (51a22ce)
   1Git 2.6 Release Notes
   2=====================
   3
   4Updates since v2.5
   5------------------
   6
   7UI, 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
  55Performance, Internal Implementation, Development Support etc.
  56
  57 * In preparation for allowing different "backends" to store the refs
  58   in a way different from the traditional "one ref per file in
  59   $GIT_DIR or in a $GIT_DIR/packed-refs file" filesystem storage,
  60   direct filesystem access to ref-like things like CHERRY_PICK_HEAD
  61   from scripts and programs has been reduced.
  62
  63 * Computation of untracked status indicator by bash prompt
  64   script (in contrib/) has been optimized.
  65
  66 * Memory use reduction when commit-slab facility is used to annotate
  67   sparsely (which is not recommended in the first place).
  68
  69 * Clean up refs API and make "git clone" less intimate with the
  70   implementation detail.
  71
  72 * "git pull" was reimplemented in C.
  73
  74 * The packet tracing machinery allows to capture an incoming pack
  75   data to a file for debugging.
  76
  77 * Move machinery to parse human-readable scaled numbers like 1k, 4M,
  78   and 2G as an option parameter's value from pack-objects to
  79   parse-options API, to make it available to other codepaths.
  80
  81 * "git verify-tag" and "git verify-commit" have been taught to share
  82   more code, and then learned to optionally show the verification
  83   message from the underlying GPG implementation.
  84
  85 * Various enhancements around "git am" reading patches generated by
  86   foreign SCM have been made.
  87
  88 * Ref listing by "git branch -l" and "git tag -l" commands has
  89   started to be rebuilt, based on the for-each-ref machinery.
  90
  91 * The code to perform multi-tree merges has been taught to repopulate
  92   the cache-tree upon a successful merge into the index, so that
  93   subsequent "diff-index --cached" (hence "status") and "write-tree"
  94   (hence "commit") will go faster.
  95
  96   The same logic in "git checkout" may now be removed, but that is a
  97   separate issue.
  98
  99 * Tests that assume how reflogs are represented on the filesystem too
 100   much have been corrected.
 101
 102 * "git am" has been rewritten in "C".
 103
 104
 105Also contains various documentation updates and code clean-ups.
 106
 107
 108Fixes since v2.5
 109----------------
 110
 111Unless otherwise noted, all the fixes since v2.5 in the maintenance
 112track are contained in this release (see the maintenance releases'
 113notes for details).
 114
 115 * "git subtree" (in contrib/) depended on "git log" output to be
 116   stable, which was a no-no.  Apply a workaround to force a
 117   particular date format.
 118   (merge e7aac44 da/subtree-date-confusion later to maint).
 119
 120 * An attempt to delete a ref by pushing into a repositorywhose HEAD
 121   symbolic reference points at an unborn branch that cannot be
 122   created due to ref D/F conflict (e.g. refs/heads/a/b exists, HEAD
 123   points at refs/heads/a) failed.
 124   (merge b112b14 jx/do-not-crash-receive-pack-wo-head later to maint).
 125
 126 * The low-level "git send-pack" did not honor 'user.signingkey'
 127   configuration variable when sending a signed-push.
 128   (merge d830d39 db/send-pack-user-signingkey later to maint).
 129
 130 * "sparse checkout" misbehaved for a path that is excluded from the
 131   checkout when switching between branches that differ at the path.
 132   (merge 7d78241 as/sparse-checkout-removal later to maint).
 133
 134 * An experimental "untracked cache" feature used uname(2) in a
 135   slightly unportable way.
 136   (merge 100e433 cb/uname-in-untracked later to maint).
 137
 138 * A "rebase" replays changes of the local branch on top of something
 139   else, as such they are placed in stage #3 and referred to as
 140   "theirs", while the changes in the new base, typically a foreign
 141   work, are placed in stage #2 and referred to as "ours".  Clarify
 142   the "checkout --ours/--theirs".
 143   (merge f303016 se/doc-checkout-ours-theirs later to maint).
 144
 145 * The "rev-parse --parseopt" mode parsed the option specification
 146   and the argument hint in a strange way to allow '=' and other
 147   special characters in the option name while forbidding them from
 148   the argument hint.  This made it impossible to define an option
 149   like "--pair <key>=<value>" with "pair=key=value" specification,
 150   which instead would have defined a "--pair=key <value>" option.
 151   (merge 2d893df ib/scripted-parse-opt-better-hint-string later to maint).
 152
 153 * Often a fast-import stream builds a new commit on top of the
 154   previous commit it built, and it often unconditionally emits a
 155   "from" command to specify the first parent, which can be omitted in
 156   such a case.  This caused fast-import to forget the tree of the
 157   previous commit and then re-read it from scratch, which was
 158   inefficient.  Optimize for this common case.
 159   (merge 0df3245 mh/fast-import-optimize-current-from later to maint).
 160
 161 * Running an aliased command from a subdirectory when the .git thing
 162   in the working tree is a gitfile pointing elsewhere did not work.
 163   (merge d95138e nd/export-worktree later to maint).
 164
 165 * "Is this subdirectory a separate repository that should not be
 166   touched?" check "git clean" was inefficient.  This was replaced
 167   with a more optimized check.
 168   (merge 38ae878 ee/clean-remove-dirs later to maint).
 169
 170 * The "new-worktree-mode" hack in "checkout" that was added in
 171   nd/multiple-work-trees topic has been removed by updating the
 172   implementation of new "worktree add".
 173   (merge 65f9b75 es/worktree-add-cleanup later to maint).
 174
 175 * Remove remaining cruft from  "git checkout --to", which
 176   transitioned to "git worktree add".
 177   (merge 114ff88 es/worktree-add later to maint).
 178
 179 * An off-by-one error made "git remote" to mishandle a remote with a
 180   single letter nickname.
 181   (merge bc598c3 mh/get-remote-group-fix later to maint).
 182
 183 * Code cleanups and documentation updates.
 184   (merge 1c601af es/doc-clean-outdated-tools later to maint).
 185   (merge 3581304 kn/tag-doc-fix later to maint).
 186   (merge 3a59e59 kb/i18n-doc later to maint).
 187   (merge 45abdee sb/remove-unused-var-from-builtin-add later to maint).
 188   (merge 14691e3 sb/parse-options-codeformat later to maint).
 189   (merge 4a6ada3 ad/bisect-cleanup later to maint).
 190   (merge da4c5ad ta/docfix-index-format-tech later to maint).