Merge branch 'sb/unpack-trees-grammofix'
[gitweb.git] / Documentation / RelNotes / 2.10.0.txt
index d9ac291f5fb9c2b0193cf0086c4c3287a7b79a4d..f4da28ab669034e2e047c43cf939af795f1f3ba2 100644 (file)
@@ -71,15 +71,14 @@ UI, Workflows & Features
    command line option "--no-show-signature" to countermand it.
    (merge fce04c3 mj/log-show-signature-conf later to maint).
 
- * A couple of "git svn" updates.
-
  * More markings of messages for i18n, with updates to various tests
    to pass GETTEXT_POISON tests.
 
  * "git archive" learned to handle files that are larger than 8GB and
    commits far in the future than expressible by the traditional US-TAR
    format.
-   (merge 5caeeb8 jk/big-and-future-archive-tar later to maint).
+   (merge 560b0e8 jk/big-and-future-archive-tar later to maint).
+
 
  * A new configuration variable core.sshCommand has been added to
    specify what value for GIT_SSH_COMMAND to use per repository.
@@ -106,8 +105,8 @@ UI, Workflows & Features
 
  * An entry "git log --decorate" for the tip of the current branch is
    shown as "HEAD -> name" (where "name" is the name of the branch);
-   paint the arrow in the same color as "HEAD", not in the color for
-   commits.
+   the arrow is now painted in the same color as "HEAD", not in the
+   color for commits.
 
  * "git format-patch" learned format.from configuration variable to
    specify the default settings for its "--from" option.
@@ -116,6 +115,19 @@ UI, Workflows & Features
    to a three-way merge; this call has been turned into an internal
    subroutine call instead of spawning a separate subprocess.
 
+ * The command line completion scripts (in contrib/) now knows about
+   "git branch --delete/--move [--remote]".
+   (merge 2703c22 vs/completion-branch-fully-spelled-d-m-r later to maint).
+
+ * "git rev-parse --git-path hooks/<hook>" learned to take
+   core.hooksPath configuration variable (introduced during 2.9 cycle)
+   into account.
+   (merge 9445b49 ab/hooks later to maint).
+
+ * "git log --show-signature" and other commands that display the
+   verification status of PGP signature now shows the longer key-id,
+   as 32-bit key-id is so last century.
+
 
 Performance, Internal Implementation, Development Support etc.
 
@@ -131,19 +143,19 @@ Performance, Internal Implementation, Development Support etc.
  * "git upload-pack" command has been updated to use the parse-options
    API.
 
- * The "git apply" standalone program is being libified; this is the
-   first step to move many state variables into a structure that can
-   be explicitly (re)initialized to make the machinery callable more
-   than once.
+ * The "git apply" standalone program is being libified; the first
+   step to move many state variables into a structure that can be
+   explicitly (re)initialized to make the machinery callable more
+   than once has been merged.
 
  * HTTP transport gained an option to produce more detailed debugging
    trace.
    (merge 73e57aa ep/http-curl-trace later to maint).
 
- * Instead of taking advantage of a struct string_list that is
-   allocated with all NULs happens to be STRING_LIST_INIT_NODUP kind,
-   initialize them explicitly as such, to document their behaviour
-   better.
+ * Instead of taking advantage of the fact that a struct string_list
+   that is allocated with all NULs happens to be the INIT_NODUP kind,
+   the users of string_list structures are taught to initialize them
+   explicitly as such, to document their behaviour better.
    (merge 2721ce2 jk/string-list-static-init later to maint).
 
  * HTTPd tests learned to show the server error log to help diagnosing
@@ -168,7 +180,7 @@ Performance, Internal Implementation, Development Support etc.
    the standard output and the standard error of an external process,
    which is cumbersome to hand-roll correctly without deadlocking.
 
  The codepath to sign data in a prepared buffer with GPG has been
* The codepath to sign data in a prepared buffer with GPG has been
    updated to use this API to read from the status-fd to check for
    errors (instead of relying on GPG's exit status).
    (merge efee955 jk/gpg-interface-cleanup later to maint).
@@ -233,6 +245,17 @@ Performance, Internal Implementation, Development Support etc.
  * The API to iterate over all the refs (i.e. for_each_ref(), etc.)
    has been revamped.
 
+ * The handling of the "text=auto" attribute has been corrected.
+   $ echo "* text=auto eol=crlf" >.gitattributes
+   used to have the same effect as
+   $ echo "* text eol=crlf" >.gitattributes
+   i.e. declaring all files are text (ignoring "auto").  The
+   combination has been fixed to be equivalent to doing
+   $ git config core.autocrlf true
+
+ * Documentation has been updated to show better example usage
+   of the updated "text=auto" attribute.
+
  * A few tests that specifically target "git rebase -i" have been
    added.
 
@@ -274,6 +297,25 @@ Performance, Internal Implementation, Development Support etc.
    mechanism is used to tweak the default settings to MORE on FreeBSD.
    (merge 995bc22 ew/build-time-pager-tweaks later to maint).
 
+ * The http-backend (the server-side component of smart-http
+   transport) used to trickle the HTTP header one at a time.  Now
+   these write(2)s are batched.
+   (merge b36045c ew/http-backend-batch-headers later to maint).
+
+ * When "git rebase" tries to compare set of changes on the updated
+   upstream and our own branch, it computes patch-id for all of these
+   changes and attempts to find matches. This has been optimized by
+   lazily computing the full patch-id (which is expensive) to be
+   compared only for changes that touch the same set of paths.
+   (merge ba67504 kw/patch-ids-optim later to maint).
+
+ * A handful of tests that were broken under gettext-poison build have
+   been fixed.
+
+ * The recent i18n patch we added during this cycle did a bit too much
+   refactoring of the messages to avoid word-legos; the repetition has
+   been reduced to help translators.
+
 
 Also contains various documentation updates and code clean-ups.
 
@@ -520,7 +562,6 @@ notes for details).
  * "git difftool <paths>..." started in a subdirectory failed to
    interpret the paths relative to that directory, which has been
    fixed.
-   (merge 32b8c58 jk/difftool-in-subdir later to maint).
 
  * The characters in the label shown for tags/refs for commits in
    "gitweb" output are now properly escaped for proper HTML output.
@@ -530,7 +571,7 @@ notes for details).
    caused tests in t7063 to fail because it wanted to verify the
    behaviour of the fast-path.
 
- * Squelch compiler warnings for netmalloc (in compat/) library.
+ * Squelch compiler warnings for nedmalloc (in compat/) library.
 
  * A small memory leak in the command line parsing of "git blame"
    has been plugged.
@@ -544,7 +585,6 @@ notes for details).
    that no matter how many seconds it took to apply many patches, the
    resulting committer timestamp for the resulting commits were all
    the same.
-   (merge 4d9c7e6 jk/reset-ident-time-per-commit later to maint).
 
  * "git push --force-with-lease" already had enough logic to allow
    ensuring that such a push results in creation of a ref (i.e. the
@@ -553,4 +593,83 @@ notes for details).
    to the users.  It does so now.
    (merge 9eed4f3 jk/push-force-with-lease-creation later to maint).
 
+ * The mechanism to limit the pack window memory size, when packing is
+   done using multiple threads (which is the default), is per-thread,
+   but this was not documented clearly.
+   (merge 954176c ms/document-pack-window-memory-is-per-thread later to maint).
+
+ * "import-tars" fast-import script (in contrib/) used to ignore a
+   hardlink target and replaced it with an empty file, which has been
+   corrected to record the same blob as the other file the hardlink is
+   shared with.
+   (merge 04e0869 js/import-tars-hardlinks later to maint).
+
+ * "git mv dir non-existing-dir/" did not work in some environments
+   the same way as existing mainstream platforms.  The code now moves
+   "dir" to "non-existing-dir", without relying on rename("A", "B/")
+   that strips the trailing slash of '/'.
+   (merge 189d035 js/mv-dir-to-new-directory later to maint).
+
+ * The "t/" hierarchy is prone to get an unusual pathname; "make test"
+   has been taught to make sure they do not contain paths that cannot
+   be checked out on Windows (and the mechanism can be reusable to
+   catch pathnames that are not portable to other platforms as need
+   arises).
+   (merge c2cafd3 js/test-lint-pathname later to maint).
+
+ * When "git merge-recursive" works on history with many criss-cross
+   merges in "verbose" mode, the names the command assigns to the
+   virtual merge bases could have overwritten each other by unintended
+   reuse of the same piece of memory.
+   (merge 5447a76 rs/pull-signed-tag later to maint).
+
+ * "git checkout --detach <branch>" used to give the same advice
+   message as that is issued when "git checkout <tag>" (or anything
+   that is not a branch name) is given, but asking with "--detach" is
+   an explicit enough sign that the user knows what is going on.  The
+   advice message has been squelched in this case.
+   (merge 779b88a sb/checkout-explit-detach-no-advice later to maint).
+
+ * "git difftool" by default ignores the error exit from the backend
+   commands it spawns, because often they signal that they found
+   differences by exiting with a non-zero status code just like "diff"
+   does; the exit status codes 126 and above however are special in
+   that they are used to signal that the command is not executable,
+   does not exist, or killed by a signal.  "git difftool" has been
+   taught to notice these exit status codes.
+   (merge 45a4f5d jk/difftool-command-not-found later to maint).
+
+ * On Windows, help.browser configuration variable used to be ignored,
+   which has been corrected.
+   (merge 6db5967 js/no-html-bypass-on-windows later to maint).
+
+ * The "git -c var[=val] cmd" facility to append a configuration
+   variable definition at the end of the search order was described in
+   git(1) manual page, but not in git-config(1), which was more likely
+   place for people to look for when they ask "can I make a one-shot
+   override, and if so how?"
+   (merge ae1f709 dg/document-git-c-in-git-config-doc later to maint).
+
+ * The tempfile (hence its user lockfile) API lets the caller to open
+   a file descriptor to a temporary file, write into it and then
+   finalize it by first closing the filehandle and then either
+   removing or renaming the temporary file.  When the process spawns a
+   subprocess after obtaining the file descriptor, and if the
+   subprocess has not exited when the attempt to remove or rename is
+   made, the last step fails on Windows, because the subprocess has
+   the file descriptor still open.  Open tempfile with O_CLOEXEC flag
+   to avoid this (on Windows, this is mapped to O_NOINHERIT).
+   (merge 05d1ed6 bw/mingw-avoid-inheriting-fd-to-lockfile later to maint).
+
+ * Correct an age-old calco (is that a typo-like word for calc)
+   in the documentation.
+   (merge 7841c48 ls/packet-line-protocol-doc-fix later to maint).
+
  * Other minor clean-ups and documentation updates
+   (merge 02a8cfa rs/merge-add-strategies-simplification later to maint).
+   (merge af4941d rs/merge-recursive-string-list-init later to maint).
+   (merge 1eb47f1 rs/use-strbuf-add-unique-abbrev later to maint).
+   (merge ddd0bfa jk/tighten-alloc later to maint).
+   (merge ecf30b2 rs/mailinfo-lib later to maint).
+   (merge 0eb75ce sg/reflog-past-root later to maint).
+   (merge 4369523 hv/doc-commit-reference-style later to maint).