Backward compatibility notes
----------------------------
-In the next major release, we will change the behavior of the "git
-push" command. When "git push [$there]" does not say what to push, we
-have used the traditional "matching" semantics so far (all your branches were
-sent to the remote as long as there already are branches of the same
-name over there). We will now use the "simple" semantics, that pushes the
-current branch to the branch with the same name only when the current
+In the next major release (not *this* one), we will change the
+behavior of the "git push" command.
+
+When "git push [$there]" does not say what to push, we have used the
+traditional "matching" semantics so far (all your branches were sent
+to the remote as long as there already are branches of the same name
+over there). We will use the "simple" semantics that pushes the
+current branch to the branch with the same name, only when the current
branch is set to integrate with that remote branch. There is a user
preference configuration variable "push.default" to change this, and
"git push" will warn about the upcoming change until you set this
-variable.
+variable in this release.
"git branch --set-upstream" is deprecated and may be removed in a
relatively distant future. "git branch [-u|--set-upstream-to]" has
* When "git am" sanitizes the "Subject:" line, we strip the prefix from
"Re: subject" and also from a less common "re: subject", but left
- the even less common "RE: subject" intact. We strip that now, too.
+ the even less common "RE: subject" intact. Now we strip that too.
* It was tempting to say "git branch --set-upstream origin/master",
but that tells Git to arrange the local branch "origin/master" to
* "git grep" learned to use a non-standard pattern type by default if
a configuration variable tells it to.
+ * Accumulated updates to "git gui" has been merged.
+
+ * "git log -g" learned the "--grep-reflog=<pattern>" option to limit
+ its output to commits with a reflog message that matches the given
+ pattern.
+
* "git merge-base" learned the "--is-ancestor A B" option to tell if A is
an ancestor of B. The result is indicated by its exit status code.
with the mergetool.$name.cmd configuration variable even for built-in
mergetool backends.
- * The "-Xours" backend option to "git merge -s recursive" now takes
- effect even on binary files.
-
* "git rebase -i" learned the "--edit-todo" option to open an editor
to edit the instruction sheet.
encountering a conflict during "p4 submit".
-Performance, Internal Implementation, etc. (please report possible regressions)
+Performance, Internal Implementation, etc.
* Git ships with a fall-back regexp implementation for platforms with
buggy regexp library, but it was easy for people to keep using their
* When "git am" is fed an input that has multiple "Content-type: ..."
header, it did not grok charset= attribute correctly.
+ * "git am" mishandled a patch attached as application/octet-stream
+ (e.g. not text/*); Content-Transfer-Encoding (e.g. base64) was not
+ honored correctly.
+
* "git blame MAKEFILE" run in a history that has "Makefile" but not
"MAKEFILE" should say "No such file MAKEFILE in HEAD", but got
confused on a case insensitive filesystem and failed to do so.
* It was unclear in the documentation for "git blame" that it is
unnecessary for users to use the "--follow" option.
- (merge e5dce96 jc/blame-follows-renames later to maint).
* Output from "git branch -v" contains "(no branch)" that could be
localized, but the code to align it along with the names of
refspecs set up just like a clone without "--single", leading the
subsequent "git fetch" to slurp all the other branches, defeating
the whole point of specifying "only this branch".
- (merge 31b808a rt/maint-clone-single later to maint).
* Documentation talked about "first line of commit log" when it meant
the title of the commit. The description was clarified by defining
* "git fetch" over http had an old workaround for an unlikely server
misconfiguration; it turns out that this hurts debuggability of the
configuration in general, and has been reverted.
- (merge 6ac964a sp/maint-http-info-refs-no-retry later to maint).
* "git fetch" over http advertised that it supports "deflate", which
is much less common, and did not advertise the more common "gzip" on
its Accept-Encoding header.
- (merge aa90b96 sp/maint-http-enable-gzip later to maint).
+
+ * "git fetch" over the dumb-http revision walker could segfault when
+ curl's multi interface was used.
+
+ * "git gc --auto" notified the user that auto-packing has triggered
+ even under the "--quiet" option.
* After "gitk" showed the contents of a tag, neither "Reread
references" nor "Reload" updated what is shown as the
--author or --committer, it showed commits that mention either A or
B (or both) instead.
+ * The "-Xours" backend option to "git merge -s recursive" was ignored
+ for binary files.
+
* "git p4", when "--use-client-spec" and "--detect-branches" are used
together, misdetected branches.
* "git receive-pack" (the counterpart to "git push") did not give
progress output while processing objects it received to the puser
when run over the smart-http protocol.
- (merge 74eb32d jk/receive-pack-unpack-error-to-pusher later to maint).
* When you misspell the command name you give to the "exec" action in
the "git rebase -i" instruction sheet you were told that 'rebase' is not a
* "git submodule frotz" was not diagnosed as "frotz" being an unknown
subcommand to "git submodule"; the user instead got a complaint
that "git submodule status" was run with an unknown path "frotz".
- (merge af9c9f9 rr/maint-submodule-unknown-cmd later to maint).
* "git status" honored the ignore=dirty settings in .gitmodules but
"git commit" didn't.
- (merge 8f6811e os/commit-submodule-ignore later to maint).
+
+ * "gitweb" did not give the correct committer timezone in its feed
+ output due to a typo.