Documentation / RelNotes / 1.9.txton commit Merge branch 'nd/remove-opt-boolean' (053fbe6)
   1Git v1.9 Release Notes
   2======================
   3
   4Backward compatibility notes
   5----------------------------
   6
   7"git submodule foreach $cmd $args" used to treat "$cmd $args" the same
   8way "ssh" did, concatenating them into a single string and letting the
   9shell unquote. Careless users who forget to sufficiently quote $args
  10gets their argument split at $IFS whitespaces by the shell, and got
  11unexpected results due to this. Starting from this release, the
  12command line is passed directly to the shell, if it has an argument.
  13
  14Read-only support for experimental loose-object format, in which users
  15could optionally choose to write in their loose objects for a short
  16while between v1.4.3 to v1.5.3 era, has been dropped.
  17
  18The meanings of "--tags" option to "git fetch" has changed; the
  19command fetches tags _in addition to_ what are fetched by the same
  20command line without the option.
  21
  22A handful of ancient commands that have long been deprecated are
  23finally gone (repo-config, tar-tree, lost-found, and peek-remote).
  24
  25
  26Backward compatibility notes (for Git 2.0)
  27------------------------------------------
  28
  29When "git push [$there]" does not say what to push, we have used the
  30traditional "matching" semantics so far (all your branches were sent
  31to the remote as long as there already are branches of the same name
  32over there).  In Git 2.0, the default will change to the "simple"
  33semantics, which pushes:
  34
  35 - only the current branch to the branch with the same name, and only
  36   when the current branch is set to integrate with that remote
  37   branch, if you are pushing to the same remote as you fetch from; or
  38
  39 - only the current branch to the branch with the same name, if you
  40   are pushing to a remote that is not where you usually fetch from.
  41
  42Use the user preference configuration variable "push.default" to
  43change this.  If you are an old-timer who is used to the "matching"
  44semantics, you can set the variable to "matching" to keep the
  45traditional behaviour.  If you want to live in the future early, you
  46can set it to "simple" today without waiting for Git 2.0.
  47
  48When "git add -u" (and "git add -A") is run inside a subdirectory and
  49does not specify which paths to add on the command line, it
  50will operate on the entire tree in Git 2.0 for consistency
  51with "git commit -a" and other commands.  There will be no
  52mechanism to make plain "git add -u" behave like "git add -u .".
  53Current users of "git add -u" (without a pathspec) should start
  54training their fingers to explicitly say "git add -u ."
  55before Git 2.0 comes.  A warning is issued when these commands are
  56run without a pathspec and when you have local changes outside the
  57current directory, because the behaviour in Git 2.0 will be different
  58from today's version in such a situation.
  59
  60In Git 2.0, "git add <path>" will behave as "git add -A <path>", so
  61that "git add dir/" will notice paths you removed from the directory
  62and record the removal.  Versions before Git 2.0, including this
  63release, will keep ignoring removals, but the users who rely on this
  64behaviour are encouraged to start using "git add --ignore-removal <path>"
  65now before 2.0 is released.
  66
  67The default prefix for "git svn" will change in Git 2.0.  For a long
  68time, "git svn" created its remote-tracking branches directly under
  69refs/remotes, but it will place them under refs/remotes/origin/ unless
  70it is told otherwise with its --prefix option.
  71
  72
  73Updates since v1.8.5
  74--------------------
  75
  76Foreign interfaces, subsystems and ports.
  77
  78 * The HTTP transport, when talking GSS-Negotiate, uses "100
  79   Continue" response to avoid having to rewind and resend a large
  80   payload, which may not be always doable.
  81
  82 * Various bugfixes to remote-bzr and remote-hg (in contrib/).
  83
  84
  85UI, Workflows & Features
  86
  87 * "git for-each-ref --format=..." learned a few formatting directives;
  88   e.g. "%(color:red)%(HEAD)%(color:reset) %(refname:short) %(subject)".
  89
  90 * The command string given to "git submodule foreach" is passed
  91   directly to the shell, without being eval'ed.  This is a backward
  92   incompatible change that may break existing users.
  93
  94 * "git log" and friends learned the "--exclude=<glob>" option, to
  95   allow people to say "list history of all branches except those that
  96   match this pattern" with "git log --exclude='*/*' --branches".
  97
  98 * "git rev-parse --parseopt" learned a new "--stuck-long" option to
  99   help scripts parse options with an optional parameter.
 100
 101 * The "--tags" option to "git fetch" no longer tells the command to
 102   fetch _only_ the tags. It instead fetches tags _in addition to_
 103   what are fetched by the same command line without the option.
 104
 105
 106Performance, Internal Implementation, etc.
 107
 108 * The new PERLLIB_EXTRA makefile variable can be used to specify
 109   additional directories Perl modules (e.g. the ones necessary to run
 110   git-svn) are installed on the platform when building.
 111
 112 * "git merge-base" learned the "--fork-point" mode, that implements
 113   the same logic used in "git pull --rebase" to find a suitable fork
 114   point out of the reflog entries for the remote-tracking branch the
 115   work has been based on.
 116
 117 * A third-party "receive-pack" (the responder to "git push") can
 118   advertise the "no-thin" capability to tell "git push" not to use
 119   the thin-pack optimization. Our receive-pack has always been
 120   capable of accepting and fattening a thin-pack, and will continue
 121   not to ask "git push" to use a non-thin pack.
 122
 123
 124Also contains various documentation updates and code clean-ups.
 125
 126
 127Fixes since v1.8.5
 128------------------
 129
 130Unless otherwise noted, all the fixes since v1.8.5 in the maintenance
 131track are contained in this release (see the maintenance releases' notes
 132for details).
 133
 134 * "git diff -- ':(icase)makefile'" was unnecessarily rejected at the
 135   command line parser.
 136   (merge 887c6c1 nd/magic-pathspec later to maint).
 137
 138 * "git cat-file --batch-check=ok" did not check the existence of
 139   the named object.
 140   (merge 4ef8d1d sb/sha1-loose-object-info-check-existence later to maint).
 141
 142 * "git am --abort" sometimes complained about not being able to write
 143   a tree with an 0{40} object in it.
 144   (merge 77b43ca jk/two-way-merge-corner-case-fix later to maint).
 145
 146 * Two processes creating loose objects at the same time could have
 147   failed unnecessarily when the name of their new objects started
 148   with the same byte value, due to a race condition.
 149   (merge b2476a6 jh/loose-object-dirs-creation-race later to maint).