Documentation / RelNotes / 1.6.2.txton commit Merge tag 'v2.12.4' into maint (e312af1)
   1GIT v1.6.2 Release Notes
   2========================
   3
   4With the next major release, "git push" into a branch that is
   5currently checked out will be refused by default.  You can choose
   6what should happen upon such a push by setting the configuration
   7variable receive.denyCurrentBranch in the receiving repository.
   8
   9To ease the transition plan, the receiving repository of such a
  10push running this release will issue a big warning when the
  11configuration variable is missing.  Please refer to:
  12
  13  http://git.or.cz/gitwiki/GitFaq#non-bare
  14  http://thread.gmane.org/gmane.comp.version-control.git/107758/focus=108007
  15
  16for more details on the reason why this change is needed and the
  17transition plan.
  18
  19For a similar reason, "git push $there :$killed" to delete the branch
  20$killed in a remote repository $there, if $killed branch is the current
  21branch pointed at by its HEAD, gets a large warning.  You can choose what
  22should happen upon such a push by setting the configuration variable
  23receive.denyDeleteCurrent in the receiving repository.
  24
  25
  26Updates since v1.6.1
  27--------------------
  28
  29(subsystems)
  30
  31* git-svn updates.
  32
  33* gitweb updates, including a new patch view and RSS/Atom feed
  34  improvements.
  35
  36* (contrib/emacs) git.el now has commands for checking out a branch,
  37  creating a branch, cherry-picking and reverting commits; vc-git.el
  38  is not shipped with git anymore (it is part of official Emacs).
  39
  40(performance)
  41
  42* pack-objects autodetects the number of CPUs available and uses threaded
  43  version.
  44
  45(usability, bells and whistles)
  46
  47* automatic typo correction works on aliases as well
  48
  49* @{-1} is a way to refer to the last branch you were on.  This is
  50  accepted not only where an object name is expected, but anywhere
  51  a branch name is expected and acts as if you typed the branch name.
  52  E.g. "git branch --track mybranch @{-1}", "git merge @{-1}", and
  53  "git rev-parse --symbolic-full-name @{-1}" would work as expected.
  54
  55* When refs/remotes/origin/HEAD points at a remote tracking branch that
  56  has been pruned away, many git operations issued warning when they
  57  internally enumerated the refs.  We now warn only when you say "origin"
  58  to refer to that pruned branch.
  59
  60* The location of .mailmap file can be configured, and its file format was
  61  enhanced to allow mapping an incorrect e-mail field as well.
  62
  63* "git add -p" learned 'g'oto action to jump directly to a hunk.
  64
  65* "git add -p" learned to find a hunk with given text with '/'.
  66
  67* "git add -p" optionally can be told to work with just the command letter
  68  without Enter.
  69
  70* when "git am" stops upon a patch that does not apply, it shows the
  71  title of the offending patch.
  72
  73* "git am --directory=<dir>" and "git am --reject" passes these options
  74  to underlying "git apply".
  75
  76* "git am" learned --ignore-date option.
  77
  78* "git blame" aligns author names better when they are spelled in
  79  non US-ASCII encoding.
  80
  81* "git clone" now makes its best effort when cloning from an empty
  82  repository to set up configuration variables to refer to the remote
  83  repository.
  84
  85* "git checkout -" is a shorthand for "git checkout @{-1}".
  86
  87* "git cherry" defaults to whatever the current branch is tracking (if
  88  exists) when the <upstream> argument is not given.
  89
  90* "git cvsserver" can be told not to add extra "via git-CVS emulator" to
  91  the commit log message it serves via gitcvs.commitmsgannotation
  92  configuration.
  93
  94* "git cvsserver" learned to handle 'noop' command some CVS clients seem
  95  to expect to work.
  96
  97* "git diff" learned a new option --inter-hunk-context to coalesce close
  98  hunks together and show context between them.
  99
 100* The definition of what constitutes a word for "git diff --color-words"
 101  can be customized via gitattributes, command line or a configuration.
 102
 103* "git diff" learned --patience to run "patience diff" algorithm.
 104
 105* "git filter-branch" learned --prune-empty option that discards commits
 106  that do not change the contents.
 107
 108* "git fsck" now checks loose objects in alternate object stores, instead
 109  of misreporting them as missing.
 110
 111* "git gc --prune" was resurrected to allow "git gc --no-prune" and
 112  giving non-default expiration period e.g. "git gc --prune=now".
 113
 114* "git grep -w" and "git grep" for fixed strings have been optimized.
 115
 116* "git mergetool" learned -y(--no-prompt) option to disable prompting.
 117
 118* "git rebase -i" can transplant a history down to root to elsewhere
 119  with --root option.
 120
 121* "git reset --merge" is a new mode that works similar to the way
 122  "git checkout" switches branches, taking the local changes while
 123  switching to another commit.
 124
 125* "git submodule update" learned --no-fetch option.
 126
 127* "git tag" learned --contains that works the same way as the same option
 128  from "git branch".
 129
 130
 131Fixes since v1.6.1
 132------------------
 133
 134All of the fixes in v1.6.1.X maintenance series are included in this
 135release, unless otherwise noted.
 136
 137Here are fixes that this release has, but have not been backported to
 138v1.6.1.X series.
 139
 140* "git-add sub/file" when sub is a submodule incorrectly added the path to
 141  the superproject.
 142
 143* "git bundle" did not exclude annotated tags even when a range given
 144  from the command line wanted to.
 145
 146* "git filter-branch" unnecessarily refused to work when you had
 147  checked out a different commit from what is recorded in the superproject
 148  index in a submodule.
 149
 150* "git filter-branch" incorrectly tried to update a nonexistent work tree
 151  at the end when it is run in a bare repository.
 152
 153* "git gc" did not work if your repository was created with an ancient git
 154  and never had any pack files in it before.
 155
 156* "git mergetool" used to ignore autocrlf and other attributes
 157  based content rewriting.
 158
 159* branch switching and merges had a silly bug that did not validate
 160  the correct directory when making sure an existing subdirectory is
 161  clean.
 162
 163* "git -p cmd" when cmd is not a built-in one left the display in funny state
 164  when killed in the middle.