about summary refs log tree commit diff
path: root/third_party/git/Documentation/RelNotes/2.9.0.txt
diff options
context:
space:
mode:
Diffstat (limited to 'third_party/git/Documentation/RelNotes/2.9.0.txt')
-rw-r--r--third_party/git/Documentation/RelNotes/2.9.0.txt512
1 files changed, 0 insertions, 512 deletions
diff --git a/third_party/git/Documentation/RelNotes/2.9.0.txt b/third_party/git/Documentation/RelNotes/2.9.0.txt
deleted file mode 100644
index b61d36712f..0000000000
--- a/third_party/git/Documentation/RelNotes/2.9.0.txt
+++ /dev/null
@@ -1,512 +0,0 @@
-Git 2.9 Release Notes
-=====================
-
-Backward compatibility notes
-----------------------------
-
-The end-user facing Porcelain level commands in the "git diff" and
-"git log" family by default enable the rename detection; you can still
-use "diff.renames" configuration variable to disable this.
-
-Merging two branches that have no common ancestor with "git merge" is
-by default forbidden now to prevent creating such an unusual merge by
-mistake.
-
-The output formats of "git log" that indents the commit log message by
-4 spaces now expands HT in the log message by default.  You can use
-the "--no-expand-tabs" option to disable this.
-
-"git commit-tree" plumbing command required the user to always sign
-its result when the user sets the commit.gpgsign configuration
-variable, which was an ancient mistake, which this release corrects.
-A script that drives commit-tree, if it relies on this mistake, now
-needs to read commit.gpgsign and pass the -S option as necessary.
-
-
-Updates since v2.8
-------------------
-
-UI, Workflows & Features
-
- * Comes with git-multimail 1.3.1 (in contrib/).
-
- * The end-user facing commands like "git diff" and "git log"
-   now enable the rename detection by default.
-
- * The credential.helper configuration variable is cumulative and
-   there is no good way to override it from the command line.  As
-   a special case, giving an empty string as its value now serves
-   as the signal to clear the values specified in various files.
-
- * A new "interactive.diffFilter" configuration can be used to
-   customize the diff shown in "git add -i" sessions.
-
- * "git p4" now allows P4 author names to be mapped to Git author
-   names.
-
- * "git rebase -x" can be used without passing "-i" option.
-
- * "git -c credential.<var>=<value> submodule" can now be used to
-   propagate configuration variables related to credential helper
-   down to the submodules.
-
- * "git tag" can create an annotated tag without explicitly given an
-   "-a" (or "-s") option (i.e. when a tag message is given).  A new
-   configuration variable, tag.forceSignAnnotated, can be used to tell
-   the command to create signed tag in such a situation.
-
- * "git merge" used to allow merging two branches that have no common
-   base by default, which led to a brand new history of an existing
-   project created and then get pulled by an unsuspecting maintainer,
-   which allowed an unnecessary parallel history merged into the
-   existing project.  The command has been taught not to allow this by
-   default, with an escape hatch "--allow-unrelated-histories" option
-   to be used in a rare event that merges histories of two projects
-   that started their lives independently.
-
- * "git pull" has been taught to pass the "--allow-unrelated-histories"
-   option to underlying "git merge".
-
- * "git apply -v" learned to report paths in the patch that were
-   skipped via --include/--exclude mechanism or being outside the
-   current working directory.
-
- * Shell completion (in contrib/) updates.
-
- * The commit object name reported when "rebase -i" stops has been
-   shortened.
-
- * "git worktree add" can be given "--no-checkout" option to only
-   create an empty worktree without checking out the files.
-
- * "git mergetools" learned to drive ExamDiff.
-
- * "git pull --rebase" learned "--[no-]autostash" option, so that
-   the rebase.autostash configuration variable set to true can be
-   overridden from the command line.
-
- * When "git log" shows the log message indented by 4-spaces, the
-   remainder of a line after a HT does not align in the way the author
-   originally intended.  The command now expands tabs by default to help
-   such a case, and allows the users to override it with a new option,
-   "--no-expand-tabs".
-
- * "git send-email" now uses a more readable timestamps when
-   formulating a message ID.
-
- * "git rerere" can encounter two or more files with the same conflict
-   signature that have to be resolved in different ways, but there was
-   no way to record these separate resolutions.
-
- * "git p4" learned to record P4 jobs in Git commit that imports from
-   the history in Perforce.
-
- * "git describe --contains" often made a hard-to-justify choice of
-   tag to name a given commit, because it tried to come up
-   with a name with smallest number of hops from a tag, causing an old
-   commit whose close descendant that is recently tagged were not
-   described with respect to an old tag but with a newer tag.  It did
-   not help that its computation of "hop" count was further tweaked to
-   penalize being on a side branch of a merge.  The logic has been
-   updated to favor using the tag with the oldest tagger date, which
-   is a lot easier to explain to the end users: "We describe a commit
-   in terms of the (chronologically) oldest tag that contains the
-   commit."
-
- * "git clone" learned the "--shallow-submodules" option.
-
- * HTTP transport clients learned to throw extra HTTP headers at the
-   server, specified via http.extraHeader configuration variable.
-
- * The "--compaction-heuristic" option to "git diff" family of
-   commands enables a heuristic to make the patch output more readable
-   by using a blank line as a strong hint that the contents before and
-   after it belong to logically separate units.  It is still
-   experimental.
-
- * A new configuration variable core.hooksPath allows customizing
-   where the hook directory is.
-
- * An earlier addition of "sanitize_submodule_env" with 14111fc4 (git:
-   submodule honor -c credential.* from command line, 2016-02-29)
-   turned out to be a convoluted no-op; implement what it wanted to do
-   correctly, and stop filtering settings given via "git -c var=val".
-
- * "git commit --dry-run" reported "No, no, you cannot commit." in one
-   case where "git commit" would have allowed you to commit, and this
-   improves it a little bit ("git commit --dry-run --short" still does
-   not give you the correct answer, for example).  This is a stop-gap
-   measure in that "commit --short --dry-run" still gives an incorrect
-   result.
-
- * The experimental "multiple worktree" feature gains more safety to
-   forbid operations on a branch that is checked out or being actively
-   worked on elsewhere, by noticing that e.g. it is being rebased.
-
- * "git format-patch" learned a new "--base" option to record what
-   (public, well-known) commit the original series was built on in
-   its output.
-
- * "git commit" learned to pay attention to the "commit.verbose"
-   configuration variable and act as if the "--verbose" option
-   was given from the command line.
-
- * Updated documentation gives hints to GMail users with two-factor
-   auth enabled that they need app-specific-password when using
-   "git send-email".
-
- * The manpage output of our documentation did not render well in
-   terminal; typeset literals in bold by default to make them stand
-   out more.
-
- * The mark-up in the top-level README.md file has been updated to
-   typeset CLI command names differently from the body text.
-
-
-Performance, Internal Implementation, Development Support etc.
-
- * The embedded args argv-array in the child process is used to build
-   the command line to run pack-objects instead of using a separate
-   array of strings.
-
- * A test for tags has been restructured so that more parts of it can
-   easily be run on a platform without a working GnuPG.
-
- * The startup_info data, which records if we are working inside a
-   repository (among other things), are now uniformly available to Git
-   subcommand implementations, and Git avoids attempting to touch
-   references when we are not in a repository.
-
- * The command line argument parser for "receive-pack" has been
-   rewritten to use parse-options.
-
- * A major part of "git submodule update" has been ported to C to take
-   advantage of the recently added framework to run download tasks in
-   parallel.  Other updates to "git submodule" that move pieces of
-   logic to C continues.
-
- * Rename bunch of tests on "git clone" for better organization.
-
- * The tests that involve running httpd leaked the system-wide
-   configuration in /etc/gitconfig to the tested environment.
-
- * Build updates for MSVC.
-
- * The repository set-up sequence has been streamlined (the biggest
-   change is that there is no longer git_config_early()), so that we
-   do not attempt to look into refs/* when we know we do not have a
-   Git repository.
-
- * Code restructuring around the "refs" API to prepare for pluggable
-   refs backends.
-
- * Sources to many test helper binaries and the generated helpers
-   have been moved to t/helper/ subdirectory to reduce clutter at the
-   top level of the tree.
-
- * Unify internal logic between "git tag -v" and "git verify-tag"
-   commands by making one directly call into the other.
-
- * "merge-recursive" strategy incorrectly checked if a path that is
-   involved in its internal merge exists in the working tree.
-
- * The test scripts for "git p4" (but not "git p4" implementation
-   itself) has been updated so that they would work even on a system
-   where the installed version of Python is python 3.
-
- * As nobody maintains our in-tree git.spec.in and distros use their
-   own spec file, we stopped pretending that we support "make rpm".
-
- * Move from "unsigned char[20]" to "struct object_id" continues.
-
- * The code for warning_errno/die_errno has been refactored and a new
-   error_errno() reporting helper is introduced.
-   (merge 1da045f nd/error-errno later to maint).
-
- * Running tests with '-x' option to trace the individual command
-   executions is a useful way to debug test scripts, but some tests
-   that capture the standard error stream and check what the command
-   said can be broken with the trace output mixed in.  When running
-   our tests under "bash", however, we can redirect the trace output
-   to another file descriptor to keep the standard error of programs
-   being tested intact.
-
- * t0040 had too many unnecessary repetitions in its test data.  Teach
-   test-parse-options program so that a caller can tell what it
-   expects in its output, so that these repetitions can be cleaned up.
-
- * Add perf test for "rebase -i".
-
- * Common mistakes when writing gitlink: in our documentation are
-   found by "make check-docs".
-
- * t9xxx series has been updated primarily for readability, while
-   fixing small bugs in it.  A few scripted Porcelain commands have
-   also been updated to fix possible bugs around their use of
-   "test -z" and "test -n".
-
- * CI test was taught to run git-svn tests.
-
- * "git cat-file --batch-all" has been sped up, by taking advantage
-   of the fact that it does not have to read a list of objects, in two
-   ways.
-
- * test updates to make it more readable and maintainable.
-   (merge e6273f4 es/t1500-modernize later to maint).
-
- * "make DEVELOPER=1" worked as expected; setting DEVELOPER=1 in
-   config.mak didn't.
-   (merge 51dd3e8 mm/makefile-developer-can-be-in-config-mak later to maint).
-
- * The way how "submodule--helper list" signals unmatch error to its
-   callers has been updated.
-
- * A bash-ism "local" has been removed from "git submodule" scripted
-   Porcelain.
-
-
-Also contains various documentation updates and code clean-ups.
-
-
-Fixes since v2.8
-----------------
-
-Unless otherwise noted, all the fixes since v2.8 in the maintenance
-track are contained in this release (see the maintenance releases'
-notes for details).
-
- * "git config --get-urlmatch", unlike other variants of the "git
-   config --get" family, did not signal error with its exit status
-   when there was no matching configuration.
-
- * The "--local-env-vars" and "--resolve-git-dir" options of "git
-   rev-parse" failed to work outside a repository when the command's
-   option parsing was rewritten in 1.8.5 era.
-
- * "git index-pack --keep[=<msg>] pack-$name.pack" simply did not work.
-
- * Fetching of history by naming a commit object name directly didn't
-   work across remote-curl transport.
-
- * A small memory leak in an error codepath has been plugged in xdiff
-   code.
-
- * strbuf_getwholeline() did not NUL-terminate the buffer on certain
-   corner cases in its error codepath.
-
- * "git mergetool" did not work well with conflicts that both sides
-   deleted.
-
- * "git send-email" had trouble parsing alias file in mailrc format
-   when lines in it had trailing whitespaces on them.
-
- * When "git merge --squash" stopped due to conflict, the concluding
-   "git commit" failed to read in the SQUASH_MSG that shows the log
-   messages from all the squashed commits.
-
- * "git merge FETCH_HEAD" dereferenced NULL pointer when merging
-   nothing into an unborn history (which is arguably unusual usage,
-   which perhaps was the reason why nobody noticed it).
-
- * When "git worktree" feature is in use, "git branch -d" allowed
-   deletion of a branch that is checked out in another worktree,
-   which was wrong.
-
- * When "git worktree" feature is in use, "git branch -m" renamed a
-   branch that is checked out in another worktree without adjusting
-   the HEAD symbolic ref for the worktree.
-
- * "git diff -M" used to work better when two originally identical
-   files A and B got renamed to X/A and X/B by pairing A to X/A and B
-   to X/B, but this was broken in the 2.0 timeframe.
-
- * "git send-pack --all <there>" was broken when its command line
-   option parsing was written in the 2.6 timeframe.
-
- * "git format-patch --help" showed `-s` and `--no-patch` as if these
-   are valid options to the command.  We already hide `--patch` option
-   from the documentation, because format-patch is about showing the
-   diff, and the documentation now hides these options as well.
-
- * When running "git blame $path" with unnormalized data in the index
-   for the path, the data in the working tree was blamed, even though
-   "git add" would not have changed what is already in the index, due
-   to "safe crlf" that disables the line-end conversion.  It has been
-   corrected.
-
- * A change back in version 2.7 to "git branch" broke display of a
-   symbolic ref in a non-standard place in the refs/ hierarchy (we
-   expect symbolic refs to appear in refs/remotes/*/HEAD to point at
-   the primary branch the remote has, and as .git/HEAD to point at the
-   branch we locally checked out).
-
- * A partial rewrite of "git submodule" in the 2.7 timeframe changed
-   the way the gitdir: pointer in the submodules point at the real
-   repository location to use absolute paths by accident.  This has
-   been corrected.
-
- * "git commit" misbehaved in a few minor ways when an empty message
-   is given via -m '', all of which has been corrected.
-
- * Support for CRAM-MD5 authentication method in "git imap-send" did
-   not work well.
-
- * Upcoming OpenSSL 1.1.0 will break compilation by updating a few API
-   elements we use in imap-send, which has been adjusted for the change.
-
- * The socks5:// proxy support added back in 2.6.4 days was not aware
-   that socks5h:// proxies behave differently from socks5:// proxies.
-
- * "git config" had a codepath that tried to pass a NULL to
-   printf("%s"), which nobody seems to have noticed.
-
- * On Cygwin, object creation uses the "create a temporary and then
-   rename it to the final name" pattern, not "create a temporary,
-   hardlink it to the final name and then unlink the temporary"
-   pattern.
-
-   This is necessary to use Git on Windows shared directories, and is
-   already enabled for the MinGW and plain Windows builds.  It also
-   has been used in Cygwin packaged versions of Git for quite a while.
-   See http://thread.gmane.org/gmane.comp.version-control.git/291853
-
- * "merge-octopus" strategy did not ensure that the index is clean
-   when merge begins.
-
- * When "git merge" notices that the merge can be resolved purely at
-   the tree level (without having to merge blobs) and the resulting
-   tree happens to already exist in the object store, it forgot to
-   update the index, which left an inconsistent state that would
-   break later operations.
-
- * "git submodule" reports the paths of submodules the command
-   recurses into, but these paths were incorrectly reported when
-   the command was not run from the root level of the superproject.
-
- * The "user.useConfigOnly" configuration variable makes it an error
-   if users do not explicitly set user.name and user.email.  However,
-   its check was not done early enough and allowed another error to
-   trigger, reporting that the default value we guessed from the
-   system setting was unusable.  This was a suboptimal end-user
-   experience as we want the users to set user.name/user.email without
-   relying on the auto-detection at all.
-
- * "git mv old new" did not adjust the path for a submodule that lives
-   as a subdirectory inside old/ directory correctly.
-
- * "git replace -e" did not honour "core.editor" configuration.
-
- * "git push" from a corrupt repository that attempts to push a large
-   number of refs deadlocked; the thread to relay rejection notices
-   for these ref updates blocked on writing them to the main thread,
-   after the main thread at the receiving end notices that the push
-   failed and decides not to read these notices and return a failure.
-
- * mmap emulation on Windows has been optimized and work better without
-   consuming paging store when not needed.
-
- * A question by "git send-email" to ask the identity of the sender
-   has been updated.
-
- * UI consistency improvements for "git mergetool".
-
- * "git rebase -m" could be asked to rebase an entire branch starting
-   from the root, but failed by assuming that there always is a parent
-   commit to the first commit on the branch.
-
- * Fix a broken "p4 lfs" test.
-
- * Recent update to Git LFS broke "git p4" by changing the output from
-   its "lfs pointer" subcommand.
-
- * "git fetch" test t5510 was flaky while running a (forced) automagic
-   garbage collection.
-
- * Documentation updates to help contributors setting up Travis CI
-   test for their patches.
-
- * Some multi-byte encoding can have a backslash byte as a later part
-   of one letter, which would confuse "highlight" filter used in
-   gitweb.
-
- * "git commit-tree" plumbing command required the user to always sign
-   its result when the user sets the commit.gpgsign configuration
-   variable, which was an ancient mistake.  Rework "git rebase" that
-   relied on this mistake so that it reads commit.gpgsign and pass (or
-   not pass) the -S option to "git commit-tree" to keep the end-user
-   expectation the same, while teaching "git commit-tree" to ignore
-   the configuration variable.  This will stop requiring the users to
-   sign commit objects used internally as an implementation detail of
-   "git stash".
-
- * "http.cookieFile" configuration variable clearly wants a pathname,
-   but we forgot to treat it as such by e.g. applying tilde expansion.
-
- * Consolidate description of tilde-expansion that is done to
-   configuration variables that take pathname to a single place.
-
- * Correct faulty recommendation to use "git submodule deinit ." when
-   de-initialising all submodules, which would result in a strange
-   error message in a pathological corner case.
-
- * Many 'linkgit:<git documentation page>' references were broken,
-   which are all fixed with this.
-
- * "git rerere" can get confused by conflict markers deliberately left
-   by the inner merge step, because they are indistinguishable from
-   the real conflict markers left by the outermost merge which are
-   what the end user and "rerere" need to look at.  This was fixed by
-   making the conflict markers left by the inner merges a bit longer.
-   (merge 0f9fd5c jc/ll-merge-internal later to maint).
-
- * CI test was taught to build documentation pages.
-
- * "git fsck" learned to catch NUL byte in a commit object as
-   potential error and warn.
-
- * Portability enhancement for "rebase -i" to help platforms whose
-   shell does not like "for i in <empty>" (which is not POSIX-kosher).
-
- * On Windows, .git and optionally any files whose name starts with a
-   dot are now marked as hidden, with a core.hideDotFiles knob to
-   customize this behaviour.
-
- * Documentation for "git merge --verify-signatures" has been updated
-   to clarify that the signature of only the commit at the tip is
-   verified.  Also the phrasing used for signature and key validity is
-   adjusted to align with that used by OpenPGP.
-
- * A couple of bugs around core.autocrlf have been fixed.
-
- * Many commands normalize command line arguments from NFD to NFC
-   variant of UTF-8 on OSX, but commands in the "diff" family did
-   not, causing "git diff $path" to complain that no such path is
-   known to Git.  They have been taught to do the normalization.
-
- * "git difftool" learned to handle unmerged paths correctly in
-   dir-diff mode.
-
- * The "are we talking with TTY, doing an interactive session?"
-   detection has been updated to work better for "Git for Windows".
-
- * We forgot to add "git log --decorate=auto" to documentation when we
-   added the feature back in v2.1.0 timeframe.
-   (merge 462cbb4 rj/log-decorate-auto later to maint).
-
- * "git fast-import --export-marks" would overwrite the existing marks
-   file even when it makes a dump from its custom die routine.
-   Prevent it from doing so when we have an import-marks file but
-   haven't finished reading it.
-   (merge f4beed6 fc/fast-import-broken-marks-file later to maint).
-
- * "git rebase -i", after it fails to auto-resolve the conflict, had
-   an unnecessary call to "git rerere" from its very early days, which
-   was spotted recently; the call has been removed.
-   (merge 7063693 js/rebase-i-dedup-call-to-rerere later to maint).
-
- * Other minor clean-ups and documentation updates
-   (merge cd82b7a pa/cherry-pick-doc-typo later to maint).
-   (merge 2bb73ae rs/patch-id-use-skip-prefix later to maint).
-   (merge aa20cbc rs/apply-name-terminate later to maint).
-   (merge fe17fc0 jc/t2300-setup later to maint).
-   (merge e256eec jk/shell-portability later to maint).