Merge branch 'maint'
[gitweb.git] / Documentation / RelNotes / 2.7.0.txt
index 11b61222d0b8ac2bd4f5dad6d1287bd649c267f4..ca2c24bea259ba531449829f5a6fec80c0bf53b6 100644 (file)
@@ -31,7 +31,7 @@ UI, Workflows & Features
  * The use of 'good/bad' in "git bisect" made it confusing to use when
    hunting for a state change that is not a regression (e.g. bugfix).
    The command learned 'old/new' and then allows the end user to
-   say e.g. "bisect start --term-old=fast --term=new=slow" to find a
+   say e.g. "bisect start --term-old=fast --term-new=slow" to find a
    performance regression.
 
  * "git interpret-trailers" can now run outside of a Git repository.
@@ -45,6 +45,27 @@ UI, Workflows & Features
    appears in the same .gitignore file to make it easier to express
    "everything in /abc directory is ignored, except for ...".
 
+ * Teach "git p4" to send large blobs outside the repository by
+   talking to Git LFS.
+
+ * Prepare for Git on-disk repository representation to undergo
+   backward incompatible changes by introducing a new repository
+   format version "1", with an extension mechanism.
+   (merge 067fbd4 jk/repository-extension later to maint).
+
+ * "git worktree" learned a "list" subcommand.
+
+ * "git clone --dissociate" learned that it can be used even when
+   "--reference" was not used at the same time.
+
+ * "git blame" learnt to take "--first-parent" and "--reverse" at the
+   same time when it makes sense.
+
+ * "git checkout" did not follow the usual "--[no-]progress"
+   convention and implemented only "--quiet" that is essentially
+   a superset of "--no-progress".  Extend the command to support the
+   usual "--[no-]progress".
+
 
 Performance, Internal Implementation, Development Support etc.
 
@@ -55,7 +76,9 @@ Performance, Internal Implementation, Development Support etc.
 
  * Some features from "git tag -l" and "git branch -l" have been made
    available to "git for-each-ref" so that eventually the unified
-   implementation can be shared across all three.
+   implementation can be shared across all three.  The version merged
+   to the 'master' branch earlier had a performance regression in "tag
+   --contains", which has since been corrected.
 
  * Because "test_when_finished" in our test framework queues the
    clean-up tasks to be done in a shell variable, it should not be
@@ -67,6 +90,34 @@ Performance, Internal Implementation, Development Support etc.
    been improved to mark the side-band communication specifically.
    (merge fd89433 jk/async-pkt-line later to maint).
 
+ * Update "git branch" that list existing branches, using the
+   ref-filter API that is shared with "git tag" and "git
+   for-each-ref".
+
+ * The test for various line-ending conversions has been enhanced.
+
+ * A few test scripts around "git p4" have been improved for
+   portability.
+
+ * Many allocations that is manually counted (correctly) that are
+   followed by strcpy/sprintf have been replaced with a less error
+   prone constructs such as xstrfmt.
+
+ * The internal stripspace() function has been moved to where it
+   logically belongs to, i.e. strbuf API, and the command line parser
+   of "git stripspace" has been updated to use the parse_options API.
+   (merge bed4452 tk/stripspace later to maint).
+
+ * "git am" used to spawn "git mailinfo" via run_command() API once
+   per each patch, but learned to make a direct call to mailinfo()
+   instead.
+
+ * The implementation of "git mailinfo" was refactored so that a
+   mailinfo() function can be directly called from inside a process.
+
+ * With a "debug" helper, debugging of a single "git" invocation in
+   our test scripts has become a lot easier.
+
 
 Also contains various documentation updates and code clean-ups.
 
@@ -125,9 +176,186 @@ notes for details).
    DWIMmed was not clearly documented.
    (merge e14c92e jk/notes-dwim-doc later to maint).
 
- * Code clean-up and minor fixes.
+ * "git gc" used to barf when a symbolic ref has gone dangling
+   (e.g. the branch that used to be your upstream's default when you
+   cloned from it is now gone, and you did "fetch --prune").
+   (merge 14886b4 js/gc-with-stale-symref later to maint).
+
+ * "git clone --dissociate" runs a big "git repack" process at the
+   end, and it helps to close file descriptors that are open on the
+   packs and their idx files before doing so on filesystems that
+   cannot remove a file that is still open.
+   (merge 786b150 js/clone-dissociate later to maint).
+
+ * Description of the "log.follow" configuration variable in "git log"
+   documentation is now also copied to "git config" documentation.
+   (merge fd8d07e dt/log-follow-config later to maint).
+
+ * "git rebase -i" had a minor regression recently, which stopped
+   considering a line that begins with an indented '#' in its insn
+   sheet not a comment. Further, the code was still too picky on
+   Windows where CRLF left by the editor is turned into a trailing CR
+   on the line read via the "read" built-in command of bash.  Both of
+   these issues are now fixed.
+   (merge 39743cf gr/rebase-i-drop-warn later to maint).
+
+ * After "git checkout --detach", "git status" reported a fairly
+   useless "HEAD detached at HEAD", instead of saying at which exact
+   commit.
+   (merge 0eb8548 mm/detach-at-HEAD-reflog later to maint).
+
+ * When "git send-email" wanted to talk over Net::SMTP::SSL,
+   Net::Cmd::datasend() did not like to be fed too many bytes at the
+   same time and failed to send messages.  Send the payload one line
+   at a time to work around the problem.
+   (merge f60c483 sa/send-email-smtp-batch-data-limit later to maint).
+
+ * When "git am" was rewritten as a built-in, it stopped paying
+   attention to user.signingkey, which was fixed.
+   (merge 434c64d pt/am-builtin later to maint).
+
+ * It was not possible to use a repository-lookalike created by "git
+   worktree add" as a local source of "git clone".
+   (merge d78db84 nd/clone-linked-checkout later to maint).
+
+ * On a case insensitive filesystems, setting GIT_WORK_TREE variable
+   using a random cases that does not agree with what the filesystem
+   thinks confused Git that it wasn't inside the working tree.
+   (merge 63ec5e1 js/icase-wt-detection later to maint).
+
+ * Performance-measurement tests did not work without an installed Git.
+   (merge 31cd128 sb/perf-without-installed-git later to maint).
+
+ * A test script for the HTTP service had a timing dependent bug,
+   which was fixed.
+   (merge 362d8b6 sb/http-flaky-test-fix later to maint).
+
+ * There were some classes of errors that "git fsck" diagnosed to its
+   standard error that did not cause it to exit with non-zero status.
+   (merge 122f76f jc/fsck-dropped-errors later to maint).
+
+ * Work around "git p4" failing when the P4 depot records the contents
+   in UTF-16 without UTF-16 BOM.
+   (merge 1f5f390 ls/p4-translation-failure later to maint).
+
+ * When "git gc --auto" is backgrounded, its diagnosis message is
+   lost.  Save it to a file in $GIT_DIR and show it next time the "gc
+   --auto" is run.
+   (merge 329e6e8 nd/gc-auto-background-fix later to maint).
+
+ * The submodule code has been taught to work better with separate
+   work trees created via "git worktree add".
+   (merge 11f9dd7 mk/submodule-gitdir-path later to maint).
+
+ * "git gc" is safe to run anytime only because it has the built-in
+   grace period to protect young objects.  In order to run with no
+   grace period, the user must make sure that the repository is
+   quiescent.
+   (merge fae1a90 jc/doc-gc-prune-now later to maint).
+
+ * A recent "filter-branch --msg-filter" broke skipping of the commit
+   object header, which is fixed.
+   (merge a5a4b3f jk/filter-branch-use-of-sed-on-incomplete-line later to maint).
+
+ * The normalize_ceiling_entry() function does not muck with the end
+   of the path it accepts, and the real world callers do rely on that,
+   but a test insisted that the function drops a trailing slash.
+   (merge b2a7123 rd/test-path-utils later to maint).
+
+ * A test for interaction between untracked cache and sparse checkout
+   added in Git 2.5 days were flaky.
+   (merge 9b680fb dt/t7063-fix-flaky-test later to maint).
+
+ * A couple of commands still showed "[options]" in their usage string
+   to note where options should come on their command line, but we
+   spell that "[<options>]" in most places these days.
+   (merge d96a031 rt/placeholder-in-usage later to maint).
+
+ * The synopsis text and the usage string of subcommands that read
+   list of things from the standard input are often shown as if they
+   only take input from a file on a filesystem, which was misleading.
+   (merge 33e8fc8 jc/usage-stdin later to maint).
+
+ * "git am -3" had a small regression where it is aborted in its error
+   handling codepath when underlying merge-recursive failed in certain
+   ways, as it assumed that the internal call to merge-recursive will
+   never die, which is not the case (yet).
+   (merge c63d4b2 jc/am-3-fallback-regression-fix later to maint).
+
+ * The linkage order of libraries was wrong in places around libcurl.
+   (merge 7e91e8d rp/link-curl-before-ssl later to maint).
+
+ * The name-hash subsystem that is used to cope with case insensitive
+   filesystems keeps track of directories and their on-filesystem
+   cases for all the paths in the index by holding a pointer to a
+   randomly chosen cache entry that is inside the directory (for its
+   ce->ce_name component).  This pointer was not updated even when the
+   cache entry was removed from the index, leading to use after free.
+   This was fixed by recording the path for each directory instead of
+   borrowing cache entries and restructuring the API somewhat.
+   (merge 41284eb dt/name-hash-dir-entry-fix later to maint).
+
+ * "git merge-file" tried to signal how many conflicts it found, which
+   obviously would not work well when there are too many of them.
+   (merge e34f802 jk/merge-file-exit-code later to maint).
+
+ * The error message from "git blame --contents --reverse" incorrectly
+   talked about "--contents --children".
+   (merge 9526197 mk/blame-error-message later to maint).
+
+ * "git imap-send" did not compile well with older version of cURL library.
+   (merge 71d9257 js/imap-send-curl-compilation-fix later to maint).
+
+ * Merging a branch that removes a path and another that changes the
+   mode bits on the same path should have conflicted at the path, but
+   it didn't and silently favoured the removal.
+   (merge 72fac66 jk/delete-modechange-conflict later to maint).
+
+ * "git --literal-pathspecs add -u/-A" without any command line
+   argument misbehaved ever since Git 2.0.
+   (merge 29abb33 jc/add-u-A-default-to-top later to maint).
+
+ * "git daemon" uses "run_command()" without "finish_command()", so it
+   needs to release resources itself, which it forgot to do.
+   (merge b1b49ff rs/daemon-plug-child-leak later to maint).
+
+ * "git status --branch --short" accessed beyond the constant string
+   "HEAD", which has been corrected.
+   (merge c72b49d rs/wt-status-detached-branch-fix later to maint).
+
+ * We peek objects from submodule's object store by linking it to the
+   list of alternate object databases, but the code to do so forgot to
+   correctly initialize the list.
+   (merge 9a6e4f0 jk/initialization-fix-to-add-submodule-odb later to maint).
+
+ * The code to prepare the working tree side of temporary directory
+   for the "dir-diff" feature forgot that symbolic links need not be
+   copied (or symlinked) to the temporary area, as the code already
+   special cases and overwrites them.  Besides, it was wrong to try
+   computing the object name of the target of symbolic link, which may
+   not even exist or may be a directory.
+   (merge cfe2d4b da/difftool later to maint).
+
+ * A Range: request can be responded with a full response and when
+   asked properly libcurl knows how to strip the result down to the
+   requested range.  However, we were hand-crafting a range request
+   and it did not kick in.
+
+ * Code clean-up, minor fixes etc.
    (merge 15ed07d jc/rerere later to maint).
-   (merge b744767 pt/pull-builtin later to maint).
+   (merge e7a7401 pt/pull-builtin later to maint).
    (merge 29bc480 nd/ls-remote-does-not-have-u-option later to maint).
    (merge be510e0 jk/asciidoctor-section-heading-markup-fix later to maint).
    (merge 83e6bda tk/typofix-connect-unknown-proto-error later to maint).
+   (merge a43eb67 tk/doc-interpret-trailers-grammo later to maint).
+   (merge ba128e2 es/worktree-add-cleanup later to maint).
+   (merge 44cd91e cc/quote-comments later to maint).
+   (merge 147875f sb/submodule-config-parse later to maint).
+   (merge ae9f274 es/worktree-add later to maint).
+   (merge 3b19dba jc/em-dash-in-doc later to maint).
+   (merge f3f38c7 jc/everyday-markup later to maint).
+   (merge 77d5f71 xf/user-manual-markup later to maint).
+   (merge b2af482 xf/user-manual-ff later to maint).
+   (merge e510ab8 rs/pop-commit later to maint).
+   (merge fdcdb77 js/misc-fixes later to maint).
+   (merge c949b00 rs/show-branch-argv-array later to maint).