Merge branch 'rj/maint-grep-remove-redundant-test'
[gitweb.git] / Documentation / RelNotes / 1.7.12.txt
index 79cbb564c321e6352018e5e9c002f6288461641d..4de5b6611c16d90576aedf4925409ac809215ffd 100644 (file)
@@ -6,6 +6,34 @@ Updates since v1.7.11
 
 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/git/attributes and $HOME/.config/git/ignore respectively
+   when these files exist.
+
+ * Logic to disambiguate abbreviated object names have been taught to
+   take advantage of object types that are expected in the context,
+   e.g. XXXXXX in the "git describe" output v1.2.3-gXXXXXX must be a
+   commit object, not a blob nor a tree.  This will help us prolong
+   the lifetime of abbreviated object names.
+
+ * "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.
 
@@ -16,13 +44,54 @@ UI, Workflows & Features
    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.
+
+ * "gitweb" pays attention to various forms of credits that are
+   similar to "Signed-off-by:" lines in the commit objects and
+   highlights them accordingly.
+
 
 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)
 
@@ -31,6 +100,25 @@ 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.
+
+ * "git log -n 1 -- rarely-touched-path" was spending unnecessary
+   cycles after showing the first change to find the next one, only to
+   discard it.
+
+ * "git svn" got a large-looking code reorganization at the last
+   minute before the code freeze.
 
 Also contains minor documentation updates and code clean-ups.
 
@@ -42,24 +130,55 @@ Unless otherwise noted, all the fixes since v1.7.11 in the maintenance
 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).
+ * "git checkout <branchname>" to come back from a detached HEAD state
+   incorrectly computed reachability of the detached HEAD, resulting
+   in unnecessary warnings.
+   (merge add416a jk/maint-checkout-orphan-check-fix later to maint).
+
+ * The documentation for revision range specifiers (e.g. A..B, A^@)
+   has been updated.
+   (merge ca5ee2d mh/maint-revisions-doc later to maint).
+
+ * "git submodule add" was confused when the superproject did not have
+   its repository in its usual place in the working tree and GIT_DIR
+   and GIT_WORK_TREE was used to access it.
+
+ * "git mergetool" did not support --tool-help option to give the list
+   of supported backends, like "git difftool" does.
+   (merge 109859e jc/mergetool-tool-help later to maint).
+
+ * "$GIT_DIR/COMMIT_EDITMSG" file that is used to hold the commit log
+   message user edits was not documented.
+   (merge 41f597d jk/maint-commit-document-editmsg later to maint).
+
+ * "git commit --amend" let the user edit the log message and then died
+   when the human-readable committer name was given insufficiently by
+   getpwent(3).
+   (merge f20f387 jk/maint-commit-check-committer-early later to maint).
+
+ * The advise() function did not use varargs correctly to format
+   its message.
+   (merge 447b99c jk/maint-advise-vaddf later to maint).
+
+ * "git commit-tree" learned a more natural "-p <parent> <tree>" order
+   of arguments long time ago, but recently forgot it by mistake.
+   (merge 4b7518a kk/maint-commit-tree later to maint).
+
+ * "git diff --no-ext-diff" did not output anything for a typechange
+   filepair when GIT_EXTERNAL_DIFF is in effect.
+   (merge c12f82a jv/maint-no-ext-diff later to maint).
+
+ * When "git am" failed, old timers knew to check .git/rebase-apply/patch
+   to see what went wrong, but we never told the users about it.
+   (merge 14bf2d5 pg/maint-1.7.9-am-where-is-patch later to maint).
+
+ * When "git submodule add" clones a submodule repository, it can get
+   confused where to store the resulting submodule repository in the
+   superproject's .git/ directory when there is a symbolic link in the
+   path to the current directory.
+   (merge 6eafa6d jl/maint-1.7.10-recurse-submodules-with-symlink later to maint).
+
+ * In 1.7.9 era, we taught "git rebase" about the raw timestamp format
+   but we did not teach the same trick to "filter-branch", which rolled
+   a similar logic on its own.
+   (merge 44b85e89 jc/maint-filter-branch-epoch-date later to maint).