"git request-pull" lost a few "heuristics" that often led to mistakes.
+The default prefix for "git svn" has changed in Git 2.0. For a long
+time, "git svn" created its remote-tracking branches directly under
+refs/remotes, but it now places them under refs/remotes/origin/ unless
+it is told otherwise with its --prefix option.
+
Updates since v1.9 series
-------------------------
UI, Workflows & Features
+ * The "multi-mail" post-receive hook (in contrib/) has been updated
+ to a more recent version from the upstream.
+
+ * "git gc --aggressive" learned "--depth" option and
+ "gc.aggressiveDepth" configuration variable to allow use of a less
+ insane depth than the built-in default value of 250.
+
+ * "git log" learned the "--show-linear-break" option to show where a
+ single strand-of-pearls is broken in its output.
+
+ * The "rev-parse --parseopt" mechanism used by scripted Porcelains to
+ parse command line options and to give help text learned to take
+ the argv-help (the placeholder string for an option parameter,
+ e.g. "key-id" in "--gpg-sign=<key-id>").
+
+ * The pattern to find where the function begins in C/C++ used in
+ "diff" and "grep -p" have been updated to help C++ source better.
+
+ * "git rebase" learned to interpret a lone "-" as "@{-1}", the
+ branch that we were previously on.
+
+ * "git commit --cleanup=<mode>" learned a new mode, scissors.
+
* "git tag --list" output can be sorted using "version sort" with
"--sort=version:refname".
* "git grep" learned to behave in a way similar to native grep when
"-h" (no header) and "-c" (count) options are given.
- * transport-helper, fast-import and fast-export have been updated to
- allow the ref mapping and ref deletion in a way similar to the
- natively supported transports.
+ * "git push" via transport-helper interface (e.g. remote-hg) has
+ been updated to allow ref deletion in a way similar to the natively
+ supported transports.
* The "simple" mode is the default for "git push".
fully for paths the index knows about but the tree-ish the command
resets to does not (these paths are kept as intend-to-add entries).
- * Newly cloned submodule repositories by "git submodule update",
- when the "checkout" update mode is used, will be on a local
- branch instead of on a detached HEAD, just like submodules added
- with "git submodule add".
-
Performance, Internal Implementation, etc.
+ * The compilation options to port to AIX and to MSVC have been
+ updated.
+
* We started using wildmatch() in place of fnmatch(3) a few releases
ago; complete the process and stop using fnmatch(3).
track are contained in this release (see the maintenance releases'
notes for details).
+ * The remote-helepr interface to fast-import/fast-export via the
+ transport-helper has been tightened to avoid leaving the import
+ marks file from a failed/crashed run, as such a file that is out of
+ sync with the reality confuses a later invocation of itself.
+
+ * "git rebase" used a POSIX shell construct FreeBSD /bin/sh does not
+ work well with.
+ (merge 8cd6596 km/avoid-non-function-return-in-rebase later to maint).
+
+ * zsh prompt (in contrib/) leaked unnecessary error messages.
+
+ * bash completion (in contrib/) did not complete the refs and remotes
+ correctly given "git pu<TAB>" when "pu" is aliased to "push".
+
+ * Some more Unicode codepoints defined in Unicode 6.3 as having zero
+ width have been taught to our display column counting logic.
+ (merge d813ab9 tb/unicode-6.3-zero-width later to maint).
+
+ * Some tests used shell constructs that did not work well on FreeBSD
+ (merge ff7a1c6 km/avoid-bs-in-shell-glob later to maint).
+ (merge 00764ca km/avoid-cp-a later to maint).
+
+ * "git update-ref --stdin" did not fail a request to create a ref
+ when the ref already existed.
+ (merge b9d56b5 mh/update-ref-batch-create-fix later to maint).
+
+ * "git diff --no-index -Mq a b" fell into an infinite loop.
+ (merge ad1c3fb jc/fix-diff-no-index-diff-opt-parse later to maint).
+
+ * "git fetch --prune", when the right-hand-side of multiple fetch
+ refspecs overlap (e.g. storing "refs/heads/*" to
+ "refs/remotes/origin/*", while storing "refs/frotz/*" to
+ "refs/remotes/origin/fr/*"), aggressively thought that lack of
+ "refs/heads/fr/otz" on the origin site meant we should remove
+ "refs/remotes/origin/fr/otz" from us, without checking their
+ "refs/frotz/otz" first.
+
+ Note that such a configuration is inherently unsafe (think what
+ should happen when "refs/heads/fr/otz" does appear on the origin
+ site), but that is not a reason not to be extra careful.
+ (merge e6f6371 cn/fetch-prune-overlapping-destination later to maint).
+
+ * "git status --porcelain --branch" showed its output with labels
+ "ahead/behind/gone" translated to the user's locale.
+ (merge 7a76c28 mm/status-porcelain-format-i18n-fix later to maint).
+
+ * A stray environment variable $prefix could have leaked into and
+ affected the behaviour of the "subtree" script (in contrib/).
+
+ * When it is not necessary to edit a commit log message (e.g. "git
+ commit -m" is given a message without specifying "-e"), we used to
+ disable the spawning of the editor by overriding GIT_EDITOR, but
+ this means all the uses of the editor, other than to edit the
+ commit log message, are also affected.
+ (merge b549be0 bp/commit-p-editor later to maint).
+
+ * "git mv" that moves a submodule forgot to adjust the array that
+ uses to keep track of which submodules were to be moved to update
+ its configuration.
+ (merge fb8a4e8 jk/mv-submodules-fix later to maint).
+
+ * Length limit for the pathname used when removing a path in a deep
+ subdirectory has been removed to avoid buffer overflows.
+ (merge 2f29e0c mh/remove-subtree-long-pathname-fix later to maint).
+
+ * The test helper lib-terminal always run an actual test_expect_*
+ when included, which screwed up with the use of skil-all that may
+ have to be done later.
+ (merge 7e27173 jk/lib-terminal-lazy later to maint).
+
+ * "git index-pack" used a wrong variable to name the keep-file in an
+ error message when the file cannot be written or closed.
+ (merge de983a0 nd/index-pack-error-message later to maint).
+
+ * "rebase -i" produced a broken insn sheet when the title of a commit
+ happened to contain '\n' (or ended with '\c') due to a careless use
+ of 'echo'.
+ (merge cb1aefd us/printf-not-echo later to maint).
+
+ * There were a few instances of 'git-foo' remaining in the
+ documentation that should have been spelled 'git foo'.
+ (merge 3c3e6f5 rr/doc-merge-strategies later to maint).
+
* Serving objects from a shallow repository needs to write a
new file to hold the temporary shallow boundaries but it was not
cleaned when we exit due to die() or a signal.
* Codepaths that parse timestamps in commit objects have been
tightened.
- (merge 3f419d4 jk/commit-dates-parsing-fix later to maint).
+ (merge f80d1f9 jk/commit-dates-parsing-fix later to maint).
* "git diff --external-diff" incorrectly fed the submodule directory
in the working tree to the external diff driver when it knew it is
extra and unnecessary trailing slash (such a slash is often
given by command line completion).
(merge 2e70c01 nd/submodule-pathspec-ending-with-slash later to maint.)
+
+ * Documentation and in-code comments had many instances of mistaken
+ use of "nor", which have been corrected.
+ (merge 235e8d5 jl/nor-or-nand-and later to maint).