UI, Workflows & Features
+ * Git can be told to normalize pathnames it read from readdir(3) and
+ all arguments it got from the command line into precomposed UTF-8
+ (assuming that they come as decomposed UTF-8), in order to work
+ around issues on Mac OS.
+
+ I think there still are other places that need conversion
+ (e.g. paths that are read from stdin for some commands), but this
+ should be a good first step in the right direction.
+
+ * Per-user $HOME/.gitconfig file can optionally be stored in
+ $HOME/.config/git/config instead, which is in line with XDG.
+
+ * The value of core.attributesfile and core.excludesfile default to
+ $HOME/.config/attributes and $HOME/.config/ignore respectively when
+ these files exist.
+
+ * "git apply" learned to wiggle the base version and perform three-way
+ merge when a patch does not exactly apply to the version you have.
+
+ * Scripted Porcelain writers now have access to the credential API via
+ the "git credential" plumbing command.
+
* "git help" used to always default to "man" format even on platforms
where "man" viewer is not widely available.
turn this off, as a more explicit alternative over use of file://
URL.
+ * "git fetch" and friends used to say "remote side hung up
+ unexpectedly" when they failed to get response they expect from the
+ other side, but one common reason why they don't get expected
+ response is that the remote repository does not exist or cannot be
+ read. The error message in this case was updated to give better
+ hints to the user.
+
* git native protocol agents learned to show software version over
the wire, so that the server log can be examined to see the vintage
distribution of clients.
+ * "git help -w $cmd" can show HTML version of documentation for
+ "git-$cmd" by setting help.htmlpath to somewhere other than the
+ default location where the build procedure installs them locally;
+ the variable can even point at a http:// URL.
+
+ * "git rebase [-i] --root $tip" can now be used to rewrite all the
+ history leading to "$tip" down to the root commit.
+
+ * "git rebase -i" learned "-x <cmd>" to insert "exec <cmd>" after
+ each commit in the resulting history.
+
+ * "git status" gives finer classification to various states of paths
+ in conflicted state and offer advice messages in its output.
+
+ * "git submodule" learned to deal with nested submodule structure
+ where a module is contained within a module whose origin is
+ specified as a relative URL to its superproject's origin.
+
+ * A rather heavy-ish "git completion" script has been split to create
+ a separate "git prompting" script, to help lazy-autoloading of the
+ completion part while making prompting part always available.
+
Foreign Interface
+ * "mediawiki" remote helper (in contrib/) learned to handle file
+ attachments.
+
+ * "git p4" now uses "Jobs:" and "p4 move" when appropriate.
+
+ * vcs-svn has been updated to clean-up compilation, lift 32-bit
+ limitations, etc.
+
Performance, Internal Implementation, etc. (please report possible regressions)
* We no longer use AsciiDoc7 syntax in our documentation and favor a
more modern style.
+ * "git am --rebasing" codepath was taught to grab authorship, log
+ message and the patch text directly out of existing commits. This
+ will help rebasing commits that have confusing "diff" output in
+ their log messages.
+
+ * "git index-pack" and "git pack-objects" use streaming API to read
+ from the object store to avoid having to hold a large blob object
+ in-core while they are doing their thing.
+
+ * Code to match paths with exclude patterns learned to avoid calling
+ fnmatch() by comparing fixed leading substring literally when
+ possible.
+
Also contains minor documentation updates and code clean-ups.
releases are contained in this release (see release notes to them for
details).
- * The documentation for "git cherry-pick A B..C" was misleading.
- (merge b98878e cn/cherry-pick-range-docs later to maint).
-
- * "git archive" incorrectly computed the header checksum; the symptom
- was observed only when using pathnames with hi-bit set.
- (merge a5a46eb jc/ustar-checksum-is-unsigned later to maint).
-
- * Running "git bundle verify" on a bundle that records a complete
- history said "it requires these 0 commits".
- (merge 8c3710f jc/bundle-complete-notice later to maint).
-
- * "git ls-files --exclude=t -i" did not consider anything under t/ as
- excluded, as it did not pay attention to exclusion of leading paths
- while walking the index. Other two users of excluded() are also
- updated.
- (merge 0d316f0 jc/ls-files-i-dir later to maint).
-
- * "git request-pull $url dev" when the tip of "dev" branch was tagged
- with "ext4-for-linus" used the contents from the tag in the output
- but still asked the "dev" branch to be pulled, not the tag.
- (merge 682853e jc/request-pull-match-tagname later to maint).
+ * The error message from "git push $there :bogo" (and its equivalent
+ "git push $there --delete bogo") mentioned that we tried and failed
+ to guess what ref is being deleted based on the LHS of the refspec,
+ which we don't.
+ (merge 5742c82 jk/push-delete-ref-error-message later to maint).
+
+ * A handful of files and directories we create had tighter than
+ necessary permission bits when the user wanted to have group
+ writability (e.g. by setting "umask 002").
+ (merge 6ff2b72 ar/clone-honor-umask-at-top later to maint).
+
+ * "commit --amend" used to refuse amending a commit with an empty log
+ message, with or without "--allow-empty-message".
+ (merge d9a9357 cw/amend-commit-without-message later to maint).
+
+ * "git commit --amend --only --" was meant to allow "Clever" people to
+ rewrite the commit message without making any change even when they
+ have already changes for the next commit added to their index, but
+ it never worked as advertised since it was introduced in 1.3.0 era.
+ (merge ea2d4ed jk/maint-commit-amend-only-no-paths later to maint).
+
+ * Even though the index can record pathnames longer than 1<<12 bytes,
+ in some places we were not comparing them in full, potentially
+ replacing index entries instead of adding.
+ (merge d5f5333 tg/maint-cache-name-compare later to maint).
+
+ * "git show"'s auto-walking behaviour was an unreliable and
+ unpredictable hack; it now behaves just like "git log" does when it
+ walks.
+ (merge c5941f1 tr/maint-show-walk later to maint).
+
+ * "git diff", "git status" and anything that internally uses the
+ comparison machinery was utterly broken when the difference
+ involved a file with "-" as its name. This was due to the way "git
+ diff --no-index" was incorrectly bolted on to the system, making
+ any comparison that involves a file "-" at the root level
+ incorrectly read from the standard input.
+ (merge 4682d85 jc/refactor-diff-stdin later to maint).
+
+ * We did not have test to make sure "git rebase" without extra options
+ filters out an empty commit in the original history.
+ (merge 2b5ba7b mz/empty-rebase-test later to maint).
+
+ * "git fast-export" produced an input stream for fast-import without
+ properly quoting pathnames when they contain SPs in them.
+ (merge ff59f6d js/fast-export-paths-with-spaces later to maint).
+
+ * "git checkout --detach", when you are still on an unborn branch,
+ should be forbidden, but it wasn't.
+ (merge 8ced1aa cw/no-detaching-an-unborn later to maint).
+
+ * Some implementations of Perl terminates "lines" with CRLF even when
+ the script is operating on just a sequence of bytes. Make sure to
+ use "$PERL_PATH", the version of Perl the user told Git to use, in
+ our tests to avoid unnecessary breakages in tests.
+ (merge ad78585 vr/use-our-perl-in-tests later to maint).