Merge branch 'jc/submodule-anchor-git-dir'
[gitweb.git] / Documentation / RelNotes / 2.10.0.txt
index 8abb67881e8215343880e89f345515db84eeed36..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.
@@ -97,7 +96,6 @@ UI, Workflows & Features
  * "git status" learned to suggest "merge --abort" during a conflicted
    merge, just like it already suggests "rebase --abort" during a
    conflicted rebase.
-   (merge b0a61ab mm/status-suggest-merge-abort later to maint).
 
  * "git jump" script (in contrib/) has been updated a bit.
    (merge a91e692 jk/git-jump later to maint).
@@ -107,8 +105,28 @@ 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.
+
+ * "git am -3" calls "git merge-recursive" when it needs to fall back
+   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.
@@ -125,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
@@ -162,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).
@@ -185,7 +203,6 @@ Performance, Internal Implementation, Development Support etc.
 
  * The .c/.h sources are marked as such in our .gitattributes file so
    that "git diff -W" and friends would work better.
-   (merge e82675a rs/help-c-source-with-gitattributes later to maint).
 
  * Code clean-up to avoid using a variable string that compilers may
    feel untrustable as printf-style format given to write_file()
@@ -198,7 +215,6 @@ Performance, Internal Implementation, Development Support etc.
    library did not check all the functions from pthread libraries;
    recent FreeBSD has some functions in libc but not others, and we
    mistakenly thought linking with libc is enough when it is not.
-   (merge a9b02de ew/autoconf-pthread later to maint).
 
  * When "git fsck" reports a broken link (e.g. a tree object contains
    a blob that does not exist), both containing object and the object
@@ -207,7 +223,6 @@ Performance, Internal Implementation, Development Support etc.
    the containing object from existing refs (e.g. "HEAD~24^2:file.txt").
 
  * Allow http daemon tests in Travis CI tests.
-   (merge d9d1426 ls/travis-enable-httpd-tests later to maint).
 
  * Makefile assumed that -lrt is always available on platforms that
    want to use clock_gettime() and CLOCK_MONOTONIC, which is not a
@@ -230,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.
 
@@ -241,7 +267,6 @@ Performance, Internal Implementation, Development Support etc.
    to decide the set of supported options dynamically, which makes the
    code error-prone and hard to read.  This has been corrected by tweaking
    the API to allocate and return a new copy of "struct option" array.
-   (merge 023ff39 jk/parse-options-concat later to maint).
 
  * "git fetch" exchanges batched have/ack messages between the sender
    and the receiver, initially doubling every time and then falling
@@ -272,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.
 
@@ -457,7 +501,6 @@ notes for details).
 
  * The use of strbuf in "git rm" to build filename to remove was a bit
    suboptimal, which has been fixed.
-   (merge deb8e15 rs/rm-strbuf-optim later to maint).
 
  * An age old bug that caused "git diff --ignore-space-at-eol"
    misbehave has been fixed.
@@ -483,19 +526,16 @@ notes for details).
  * "git commit --help" said "--no-verify" is only about skipping the
    pre-commit hook, and failed to say that it also skipped the
    commit-msg hook.
-   (merge def480f os/no-verify-skips-commit-msg-too later to maint).
 
  * "git merge" in Git v2.9 was taught to forbid merging an unrelated
    lines of history by default, but that is exactly the kind of thing
    the "--rejoin" mode of "git subtree" (in contrib/) wants to do.
    "git subtree" has been taught to use the "--allow-unrelated-histories"
    option to override the default.
-   (merge 0f12c7d da/subtree-2.9-regression later to maint).
 
  * The build procedure for "git persistent-https" helper (in contrib/)
    has been updated so that it can be built with more recent versions
    of Go.
-   (merge accb613 pm/build-persistent-https-with-recent-go later to maint).
 
  * There is an optimization used in "git diff $treeA $treeB" to borrow
    an already checked-out copy in the working tree when it is known to
@@ -506,16 +546,13 @@ notes for details).
    conversion (including the clean filter), which defeats the whole
    point of the optimization.  The optimization has been disabled when
    the conversion is necessary.
-   (merge 06dec43 jk/diff-do-not-reuse-wtf-needs-cleaning later to maint).
 
  * "git -c grep.patternType=extended log --basic-regexp" misbehaved
    because the internal API to access the grep machinery was not
    designed well.
-   (merge 8465541 jc/grep-commandline-vs-configuration later to maint).
 
  * Windows port was failing some tests in t4130, due to the lack of
    inum in the returned values by its lstat(2) emulation.
-   (merge 54956df js/t4130-rename-without-ino later to maint).
 
  * The reflog output format is documented better, and a new format
    --date=unix to report the seconds-since-epoch (without timezone)
@@ -525,20 +562,16 @@ 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.
-   (merge 77947bb ab/gitweb-link-html-escape later to maint).
 
  * FreeBSD can lie when asked mtime of a directory, which made the
    untracked cache code to fall back to a slow-path, which in turn
    caused tests in t7063 to fail because it wanted to verify the
    behaviour of the fast-path.
-   (merge 6b7728d nd/fbsd-lazy-mtime later to maint).
 
- * Squelch compiler warnings for netmalloc (in compat/) library.
-   (merge c6c9e18 js/nedmalloc-gcc6-warnings later to maint).
+ * Squelch compiler warnings for nedmalloc (in compat/) library.
 
  * A small memory leak in the command line parsing of "git blame"
    has been plugged.
@@ -546,10 +579,97 @@ notes for details).
  * The API documentation for hashmap was unclear if hashmap_entry
    can be safely discarded without any other consideration.  State
    that it is safe to do so.
-   (merge 54ba5a1 jc/hashmap-doc-init later to maint).
+
+ * Not-so-recent rewrite of "git am" that started making internal
+   calls into the commit machinery had an unintended regression, in
+   that no matter how many seconds it took to apply many patches, the
+   resulting committer timestamp for the resulting commits were all
+   the same.
+
+ * "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
+   receiving end did not have another push from sideways that would be
+   discarded by our force-pushing), but didn't expose this possibility
+   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 9d1ca1d jk/t4205-cleanup later to maint).
-   (merge 5f072e0 cp/completion-clone-recurse-submodules later to maint).
-   (merge bc57b9c rs/use-strbuf-addstr later to maint).
-   (merge 52db4b0 jh/clean-smudge-f-doc later to maint).
+   (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).