* Scripts can ask Git that wildcard patterns in pathspecs they give do
not have any significance, i.e. take them as literal strings.
+ * The pathspec code learned to grok "foo/**/bar" as a pattern that
+ matches "bar" in 0-or-more levels of subdirectory in "foo".
+
+ * "git blame" (and "git diff") learned the "--no-follow" option.
+
+ * "git cherry-pick" can be used to replay a root commit to an unborn
+ branch.
+
+ * "git commit" can be told to use --cleanup=whitespace by setting the
+ configuration variable commit.cleanup to 'whitespace'.
+
* "git fetch --mirror" and fetch that uses other forms of refspec
with wildcard used to attempt to update a symbolic ref that match
the wildcard on the receiving end, which made little sense (the
is being exported, and uses the description for the branch, when
asked to write a cover letter for the series.
+ * "git format-patch" learned "-v $count" option, and prepends a
+ string "v$count-" to the names of its output files, and also
+ automatically sets the subject prefix to "PATCH v$count". This
+ allows patches from rerolled series to be stored under different
+ names and makes it easier to reuse cover letter messsages.
+
+ * "git log" and friends can be told with --use-mailmap option to
+ rewrite the names and email addresses of people using the mailmap
+ mechanism.
+
* "git push" now requires "-f" to update a tag, even if it is a
fast-forward, as tags are meant to be fixed points.
+ * When "git rebase" fails to generate patches to be applied (e.g. due
+ to oom), it failed to detect the failure and instead behaved as if
+ there were nothing to do. A workaround to use a temporary file has
+ been applied, but we probably would want to revisit this later, as
+ it hurts the common case of not failing at all.
+
+ * Input and preconditions to "git reset" has been loosened where
+ appropriate. "git reset $fromtree Makefile" requires $fromtree to
+ be any tree (it used to require it to be a commit), for example.
+ "git reset" (without options or parameters) used to error out when
+ you do not have any commits in your history, but it now gives you
+ an empty index (to match non-existent commit you are not even on).
+
* "git submodule" started learning a new mode to integrate with the
tip of the remote branch (as opposed to integrating with the commit
recorded in the superproject's gitlink).
* A new remote helper to interact with bzr has been added to contrib/.
+ * "git p4" got various bugfixes around its branch handling.
+
+ * The remote helper to interact with Hg in contrib/ has seen a few
+ fixes.
+
Performance, Internal Implementation, etc.
* Matching paths with common forms of pathspecs that contain wildcard
characters has been optimized further.
+ * "git reset" internals has been reworked and should be faster in
+ general. We tried to be careful not to break any behaviour but
+ there could be corner cases, especially when running the command
+ from a conflicted state, that we may have missed.
+
* The implementation of "imap-send" has been updated to reuse xml
quoting code from http-push codepath.
+ * There is a simple-minded checker for the test scripts in t/
+ directory to catch most common mistakes (it is not enabled by
+ default).
+
Also contains minor documentation updates and code clean-ups.
signal and die. We ignore these signals now.
(merge 1250857 pf/editor-ignore-sigint later to maint).
+ * A child process that was killed by a signal (e.g. SIGINT) was
+ reported in an inconsistent way depending on how the process was
+ spawned by us, with or without a shell in between.
+ (merge 709ca73 jk/unify-exit-code-by-receiving-signal later to maint).
+
* After failing to create a temporary file using mkstemp(), failing
pathname was not reported correctly on some platforms.
(merge f7be59b jc/mkstemp-more-careful-error-reporting later to maint).
* The attribute mechanism didn't allow limiting attributes to be
applied to only a single directory itself with "path/" like the
- exclude mechanism does.
- (merge 94bc671 ja/directory-attrs later to maint).
+ exclude mechanism does. The initial implementation of this that
+ was merged to 'maint' and 1.8.1.2 was with a severe performance
+ degradations and needs to merge a fix-up topic.
+ (merge 9db9eec nd/fix-directory-attrs-off-by-one later to maint).
* "git apply" misbehaved when fixing whitespace breakages by removing
excess trailing blank lines.
(merge 5de7166 jc/apply-trailing-blank-removal later to maint).
+ * A tar archive created by "git archive" recorded a directory in a
+ way that made NetBSD's implementation of "tar" sometimes unhappy.
+ (merge 22f0dcd rs/leave-base-name-in-name-field-of-tar later to maint).
+
+ * "git archive" did not record uncompressed size in the header when
+ streaming a zip archive, which confused some implementations of unzip.
+ (merge 5ea2c84 rs/zip-with-uncompressed-size-in-the-header later to maint).
+
+ * "git clean" showed what it was going to do, but sometimes end up
+ finding that it was not allowed to do so, which resulted in a
+ confusing output (e.g. after saying that it will remove an
+ untracked directory, it found an embedded git repository there
+ which it is not allowed to remove). It now performs the actions
+ and then reports the outcome more faithfully.
+ (merge f538a91 zk/clean-report-failure later to maint).
+
+ * When "git clone --separate-git-dir=$over_there" is interrupted, it
+ failed to remove the real location of the $GIT_DIR it created.
+ This was most visible when interrupting a submodule update.
+ (merge 9be1980 jl/interrupt-clone-remove-separate-git-dir later to maint).
+
* The way "git svn" asked for password using SSH_ASKPASS and
GIT_ASKPASS was not in line with the rest of the system.
(merge e9263e4 ss/svn-prompt later to maint).
index, the cache-tree data structure got corrupted.
(merge eec3e7e nd/invalidate-i-t-a-cache-tree later to maint).
+ * "git clone" used to allow --bare and --separate-git-dir=$there
+ options at the same time, which was nonsensical.
+ (merge 95b63f1 nd/clone-no-separate-git-dir-with-bare later to maint).
+
+ * "git rebase --preserve-merges" lost empty merges in recent versions
+ of Git.
+ (merge 9869778 ph/rebase-preserve-all-merges later to maint).
+
+ * "git merge --no-edit" computed who were involved in the work done
+ on the side branch, even though that information is to be discarded
+ without getting seen in the editor.
+ (merge 9bcbb1c jc/maint-fmt-merge-msg-no-edit-lose-credit later to maint).
+
* "git merge" started calling prepare-commit-msg hook like "git
commit" does some time ago, but forgot to pay attention to the exit
status of the hook.
(merge 3e4141d ap/merge-stop-at-prepare-commit-msg-failure later to maint).
+ * When users spell "cc:" in lowercase in the fake "header" in the
+ trailer part, "git send-email" failed to pick up the addresses from
+ there. As e-mail headers field names are case insensitive, this
+ script should follow suit and treat "cc:" and "Cc:" the same way.
+ (merge 6310071 nz/send-email-headers-are-case-insensitive later to maint).
+
+ * Output from "git status --ignored" showed an unexpected interaction
+ with "--untracked".
+ (merge a45fb69 ap/status-ignored-in-ignored-directory later to maint).
+
* "gitweb", when sorting by age to show repositories with new
activities first, used to sort repositories with absolutely
nothing in it early, which was not very useful.
to add a newline after such a line.
(merge e0db176 sp/shortlog-missing-lf later to maint).
+ * Command line completion leaked an unnecessary error message while
+ looking for possible matches with paths in <tree-ish>.
+ (merge ca87dd6 ds/completion-silence-in-tree-path-probe later to maint).
+
+ * Command line completion for "tcsh" emitted an unwanted space
+ after completing a single directory name.
+ (merge 92f1c04 mk/complete-tcsh later to maint).
+
* Some shells do not behave correctly when IFS is unset; work it
around by explicitly setting it to the default value.
(merge 393050c jc/maint-fbsd-sh-ifs-workaround later to maint).