Merge gitk to pick up emergency build fix
[gitweb.git] / Documentation / RelNotes / 1.7.12.txt
index 4ecaa2f4cbe0732124ad36931a27e2c45c082190..010d8c7de471a373cf6f1d26422c4ed84ce23ced 100644 (file)
@@ -6,12 +6,30 @@ 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/attributes and $HOME/.config/ignore respectively when
-   these files exist.
+   $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.
@@ -33,15 +51,14 @@ UI, Workflows & Features
    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.
 
@@ -56,9 +73,21 @@ UI, Workflows & Features
    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)
 
@@ -67,6 +96,11 @@ 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.
@@ -75,6 +109,13 @@ Performance, Internal Implementation, etc. (please report possible regressions)
    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.
 
@@ -86,81 +127,10 @@ 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).
 
- * 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).
-
- * "git blame" did not try to make sure that the abbreviated commit
-   object names in its output are unique.
-   (merge b31272f jc/maint-blame-unique-abbrev later to maint).
-
- * On Cygwin, the platform pread(2) is not thread safe, just like our
-   own compat/ emulation, and cannot be used in the index-pack
-   program.  Makefile variable NO_THREAD_SAFE_PREAD can be defined to
-   avoid use of this function in a threaded program.
-   (merge c0f8654 rj/platform-pread-may-be-thread-unsafe later to maint).
-
- * "git clone --single-branch" to clone a single branch did not limit
-   the cloning to the specified branch.
-   (merge 0ec4b16 nd/clone-single-fix later to maint).
-
- * "git diff --no-index" did not correctly handle relative paths and
-   did not correctly give exit codes when run under "--quiet" option.
-   (merge 304970d th/diff-no-index-fixes later to maint).
-
- * When "git log" gets "--simplify-merges/by-decoration" together with
-   "--first-parent", the combination of these options makes the
-   simplification logic to use in-core commit objects that haven't
-   been examined for relevance, either producing incorrect result or
-   taking too long to produce any output.  Teach the simplification
-   logic to ignore commits that the first-parent traversal logic
-   ignored when both are in effect to work around the issue.
-   (merge 6e513ba jc/rev-list-simplify-merges-first-parent later to maint).
-
- * "git add" allows adding a regular file to the path where a
-   submodule used to exist, but "git update-index" does not allow an
-   equivalent operation to Porcelain writers.
-   (merge 242f55f hv/submodule-update-nuke-submodules later to maint).
-
- * "git diff --no-index" did not work with pagers correctly.
-   (merge af63b54 jk/diff-no-index-pager later to maint).
-
- * "git diff COPYING HEAD:COPYING" gave a nonsense error message that
-   claimed that the treeish HEAD did not have COPYING in it.
-   (merge 023e37c mm/verify-filename-fix later to maint).
-
- * 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 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 commit --amend" let the user edit the log message and then died
+   when the human-readable committer name was given insufficiently by
+   getpwent(3).