tracking. Also "branch" learned the "-q"uiet option to squelch
informational message.
+ * Your build platform may support hardlinks but you may prefer not to
+ use them, e.g. when installing to DESTDIR to make a tarball and
+ untarring on a filesystem that has poor support for hardlinks.
+ There is a Makefile option NO_INSTALL_HARDLINKS for you.
+
* The smart-http backend used to always override GIT_COMMITTER_*
variables with REMOTE_USER and REMOTE_ADDR, but these variables are
now preserved when set.
- * "include.path" mechanism of the configuration files learned to
- understand "~/path" and "~user/path".
-
* "git am" learned the "--include" option, which is an opposite of
existing the "--exclude" option.
* The "fmt-merge-msg" command learns to list the primary contributors
involved in the side topic you are merging.
- * The cases "git push" fails due to non-ff can be broken into three
- categories; each case is given a separate advise message.
-
* "git rebase" learned to optionally keep commits that do not
introduce any change in the original history.
Performance and Internal Implementation (please report possible regressions)
+ * Bash completion script (in contrib/) have been cleaned up to make
+ future work on it simpler.
+
* An experimental "version 4" format of the index file has been
introduced to reduce on-disk footprint and I/O overhead.
+ * "git archive" learned to produce its output without reading the
+ blob object it writes out in memory in its entirety.
+
+ * "git index-pack" that runs when fetching or pushing objects to
+ complete the packfile on the receiving end learned to use multiple
+ threads to do its job when available.
+
* The code to compute hash values for lines used by the internal diff
engine was optimized on little-endian machines, using the same
trick the kernel folks came up with.
* "git apply" had some memory leaks plugged.
- * "git repack" used to write out unreachable objects as loose objects
- when repacking, even if such loose objects will immediately pruned
- due to its age.
-
* Setting up a revision traversal with many starting points was
inefficient as these were placed in a date-order priority queue
one-by-one. Now they are collected in the queue unordered first,
and sorted immediately before getting used.
- * "git rev-parse --show-prefix" used to emit nothing when run at the
- top-level of the working tree, but now it gives a blank line.
-
- * Minor memory leak during unpack_trees (hence "merge" and "checkout"
- to check out another branch) has been plugged.
-
* More lower-level commands learned to use the streaming API to read
from the object store without keeping everything in core.
+ * The weighting parameters to suggestion command name typo have been
+ tweaked, so that "git tags" will suggest "tag?" and not "stage?".
+
* Because "sh" on the user's PATH may be utterly broken on some
systems, run-command API now uses SHELL_PATH, not /bin/sh, when
spawning an external command (not applicable to Windows port).
releases are contained in this release (see release notes to them for
details).
- * "git diff --stat" used to fully count a binary file with modified
- execution bits whose contents is unmodified, which was not quite
- right.
-
- * "log -z --pretty=tformat:..." did not terminate each record with
- NUL. The fix is not entirely correct when the output also asks for
- --patch and/or --stat, though.
- (merge fafd382 jk/maint-tformat-with-z later to maint).
+ * When "git rebase" is fed a bad revision name (either as base, or
+ with the --onto option), it did not correctly give the command line
+ parameter it had trouble with in its error message.
+ (merge 9180fea ef/maint-rebase-error-message later to maint).
- * "git push" over smart-http lost progress output a few releases ago.
- (merge e304aeb jk/maint-push-progress later to maint).
+ * "git rebase -p" used to pay attention to rebase.autosquash which
+ was wrong. "git rebase -p -i" should, but "git rebase -p" by
+ itself should not.
+ (merge 8a6dae1 vr/rebase-autosquash-does-not-imply-i later to maint).
- * A contrib script "rerere-train" did not work out of the box unless
- user futzed with her $PATH.
- (merge 53876fc jc/rerere-train later to maint).
+ * "git submodule init" used to report "registered for path ..."
+ even for submodules that were registered earlier.
+ (cherry-pick c1c259e jl/submodule-report-new-path-once later to maint).
- * "log --graph" was not very friendly with "--stat" option and its
- output had line breaks at wrong places.
- (merge bafa16e lp/diffstat-with-graph later to maint).
+ * "git diff --stat" used to fully count a binary file with modified
+ execution bits whose contents is unmodified, which was not quite
+ right.