diff options
Diffstat (limited to 'Documentation/RelNotes/2.9.0.txt')
-rw-r--r-- | Documentation/RelNotes/2.9.0.txt | 220 |
1 files changed, 220 insertions, 0 deletions
diff --git a/Documentation/RelNotes/2.9.0.txt b/Documentation/RelNotes/2.9.0.txt new file mode 100644 index 0000000000..7bf95f8519 --- /dev/null +++ b/Documentation/RelNotes/2.9.0.txt @@ -0,0 +1,220 @@ +Git 2.9 Release Notes +===================== + +Backward compatibility note +--------------------------- + +The end-user facing Porcelain level commands in the "git diff" and +"git log" by default enables 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. + + +Updates since v2.8 +------------------ + +UI, Workflows & Features + + * The end-user facing Porcelain level commands like "diff" and "log" + now enables 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" session. + + * "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 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 in + such a case, and allows the users to override it with a new option, + "--no-expand-tabs". + + +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. + (merge 65a3629 mp/upload-pack-use-embedded-args later to maint). + + * 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. + (merge 11e6b3f jk/startup-info later to maint). + + * 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. + + * Rename bunch of tests on "git clone" for better organization. + (merge 8fbb03a sb/clone-t57-t56 later to maint). + + * The tests that involve running httpd leaked the system-wide + configuration in /etc/gitconfig to the tested environment. + (merge 1fad503 jk/test-httpd-config-nosystem later to maint). + + * Build updates for MSVC. + (merge 0ef60af ss/msvc later to maint). + + * 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. + (merge 274db84 jk/check-repository-format later to maint). + + +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. + (merge 24990b2 jk/config-get-urlmatch later to maint). + + * 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. + (merge fc7d47f jk/rev-parse-local-env-vars later to maint). + + * "git index-pack --keep[=<msg>] pack-$name.pack" simply did not work. + (merge 0e94242 jc/maint-index-pack-keep later to maint). + + * Fetching of history by naming a commit object name directly didn't + work across remote-curl transport. + (merge 754ecb1 gf/fetch-pack-direct-object-fetch later to maint). + + * A small memory leak in an error codepath has been plugged in xdiff + code. + (merge 87f1625 rj/xdiff-prepare-plug-leak-on-error-codepath later to maint). + + * strbuf_getwholeline() did not NUL-terminate the buffer on certain + corner cases in its error codepath. + (merge b709043 jk/getwholeline-getdelim-empty later to maint). + + * "git mergetool" did not work well with conflicts that both sides + deleted. + (merge a298604 da/mergetool-delete-delete-conflict later to maint). + + * "git send-email" had trouble parsing alias file in mailrc format + when lines in it had trailing whitespaces on them. + (merge a277d1e jk/send-email-rtrim-mailrc-alias later to maint). + + * 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. + (merge b64c1e0 ss/commit-squash-msg later to maint). + + * "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). + (merge b84e65d jv/merge-nothing-into-void later to maint). + + * 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. + (merge f292244 ky/branch-d-worktree later to maint). + + * "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. + (merge ca4e3ca sg/diff-multiple-identical-renames later to maint). + + * "git send-pack --all <there>" was broken when its command line + option parsing was written in the 2.6 timeframe. + (merge c677756 sk/send-pack-all-fix later to maint). + + * "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. + (merge b73a1bc es/format-patch-doc-hide-no-patch later to maint). + + * 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. + (merge a08feb8 tb/blame-force-read-cache-to-workaround-safe-crlf later to maint). + + * Other minor clean-ups and documentation updates + (merge aed7480 mm/lockfile-error-message later to maint). + (merge bfee614 jc/index-pack later to maint). + (merge f870899 ss/exc-flag-is-a-collection-of-bits later to maint). + (merge dde7891 pb/t7502-drop-dup later to maint). + (merge 3bd1b51 cc/doc-recommend-performance-trace-to-file later to maint). + (merge 7d5e9c9 jk/credential-cache-comment-exit later to maint). + (merge 16a86d4 nd/apply-doc later to maint). + (merge c3f6b85 pb/opt-cmdmode-doc later to maint). + (merge 30211fb oa/doc-diff-check later to maint). + (merge 01d98e8 ak/use-hashmap-iter-first-in-submodule-config later to maint). + (merge 8b5a3e9 kn/for-each-tag-branch later to maint). + (merge 9c60d9f sb/misc-cleanups later to maint). + (merge 7a6a44c cc/apply later to maint). + (merge 8e9b208 js/mingw-tests-2.8 later to maint). + (merge d55de70 jc/makefile-redirection-stderr later to maint). + (merge 4232b21 ep/trace-doc-sample-fix later to maint). |