|
| 1 | +Git v2.0 Release Notes |
| 2 | +====================== |
| 3 | + |
| 4 | +Backward compatibility notes |
| 5 | +---------------------------- |
| 6 | + |
| 7 | +When "git push [$there]" does not say what to push, we have used the |
| 8 | +traditional "matching" semantics so far (all your branches were sent |
| 9 | +to the remote as long as there already are branches of the same name |
| 10 | +over there). In Git 2.0, the default is now the "simple" semantics, |
| 11 | +which pushes: |
| 12 | + |
| 13 | + - only the current branch to the branch with the same name, and only |
| 14 | + when the current branch is set to integrate with that remote |
| 15 | + branch, if you are pushing to the same remote as you fetch from; or |
| 16 | + |
| 17 | + - only the current branch to the branch with the same name, if you |
| 18 | + are pushing to a remote that is not where you usually fetch from. |
| 19 | + |
| 20 | +You can use the configuration variable "push.default" to change |
| 21 | +this. If you are an old-timer who wants to keep using the |
| 22 | +"matching" semantics, you can set the variable to "matching", for |
| 23 | +example. Read the documentation for other possibilities. |
| 24 | + |
| 25 | +When "git add -u" and "git add -A" are run inside a subdirectory |
| 26 | +without specifying which paths to add on the command line, they |
| 27 | +operate on the entire tree for consistency with "git commit -a" and |
| 28 | +other commands (these commands used to operate only on the current |
| 29 | +subdirectory). Say "git add -u ." or "git add -A ." if you want to |
| 30 | +limit the operation to the current directory. |
| 31 | + |
| 32 | +"git add <path>" is the same as "git add -A <path>" now, so that |
| 33 | +"git add dir/" will notice paths you removed from the directory and |
| 34 | +record the removal. In older versions of Git, "git add <path>" used |
| 35 | +to ignore removals. You can say "git add --ignore-removal <path>" to |
| 36 | +add only added or modified paths in <path>, if you really want to. |
| 37 | + |
| 38 | +The "-q" option to "git diff-files", which does *NOT* mean "quiet", |
| 39 | +has been removed (it told Git to ignore deletion, which you can do |
| 40 | +with "git diff-files --diff-filter=d"). |
| 41 | + |
| 42 | + |
| 43 | +Updates since v1.9 series |
| 44 | +------------------------- |
| 45 | + |
| 46 | +Foreign interfaces, subsystems and ports. |
| 47 | + |
| 48 | + |
| 49 | +UI, Workflows & Features |
| 50 | + |
| 51 | + * The "simple" mode is the default for "git push". |
| 52 | + |
| 53 | + * "git add -u" and "git add -A", when run without any pathspec, is a |
| 54 | + tree-wide operation even when run inside a subdirectory of a |
| 55 | + working tree. |
| 56 | + |
| 57 | + * "git add <path> is the same as "git add -A <path>" now. |
| 58 | + |
| 59 | + * "core.statinfo" configuration variable, which is a |
| 60 | + never-advertised synonym to "core.checkstat", has been removed. |
| 61 | + |
| 62 | + * The "-q" option to "git diff-files", which does *NOT* mean |
| 63 | + "quiet", has been removed (it told Git to ignore deletion, which |
| 64 | + you can do with "git diff-files --diff-filter=d"). |
| 65 | + |
| 66 | + * Many commands that creates commits, e.g. "pull", "rebase", |
| 67 | + learned to take the --gpg-sign option on the command line. |
| 68 | + |
| 69 | + * "git commit" can be told to always GPG sign the resulting commit |
| 70 | + by setting "commit.gpgsign" configuration variable to true (the |
| 71 | + command line option --no-gpg-sign should override it). |
| 72 | + |
| 73 | + * "git pull" can be told to only accept fast-forward by setting the |
| 74 | + new "pull.ff" configuration. |
| 75 | + |
| 76 | + * "git reset" learned "-N" option, which does not reset the index |
| 77 | + fully for paths the index knows about but the tree-ish the command |
| 78 | + resets to does not (these paths are kept as intend-to-add entries). |
| 79 | + |
| 80 | + * Newly cloned submodule repositories by "git submodule update", |
| 81 | + when the "checkout" update mode is used, will be on a local |
| 82 | + branch instead of on a detached HEAD, just like submodules added |
| 83 | + with "git submodule add". |
| 84 | + |
| 85 | + |
| 86 | +Performance, Internal Implementation, etc. |
| 87 | + |
| 88 | + * The bitmap-index feature from JGit has been ported, which should |
| 89 | + significantly improve performance when serving objects form a |
| 90 | + repository that uses it. |
| 91 | + |
| 92 | + * The way "git log --cc" shows a combined diff against multiple |
| 93 | + parents have been optimized. |
| 94 | + |
| 95 | + * The prefixcmp() and suffixcmp() functions are gone. Use |
| 96 | + starts_with() and ends_with(), and also consider if skip_prefix() |
| 97 | + suits your needs better when using the former. |
| 98 | + |
| 99 | + |
| 100 | +Also contains various documentation updates and code clean-ups. |
| 101 | + |
| 102 | + |
| 103 | +Fixes since v1.9 series |
| 104 | +----------------------- |
| 105 | + |
| 106 | +Unless otherwise noted, all the fixes since v1.9 in the maintenance |
| 107 | +track are contained in this release (see the maintenance releases' |
| 108 | +notes for details). |
| 109 | + |
| 110 | + * "merge-recursive" was broken in 1.7.7 era and stopped working in |
| 111 | + an empty (temporary) working tree, when there are renames |
| 112 | + involved. This has been corrected. |
| 113 | + (merge 6e2068a bk/refresh-missing-ok-in-merge-recursive later to maint.) |
| 114 | + |
| 115 | + * "git rev-parse" was loose in rejecting command line arguments |
| 116 | + that do not make sense, e.g. "--default" without the required |
| 117 | + value for that option. |
| 118 | + (merge a43219f ds/rev-parse-required-args later to maint.) |
| 119 | + |
| 120 | + * include.path variable (or any variable that expects a path that |
| 121 | + can use ~username expansion) in the configuration file is not a |
| 122 | + boolean, but the code failed to check it. |
| 123 | + (merge 67beb60 jk/config-path-include-fix later to maint.) |
| 124 | + |
| 125 | + * Commands that take pathspecs on the command line misbehaved when |
| 126 | + the pathspec is given as an absolute pathname (which is a |
| 127 | + practice not particularly encouraged) that points at a symbolic |
| 128 | + link in the working tree. |
| 129 | + (merge later 655ee9e mw/symlinks to maint.) |
| 130 | + |
| 131 | + * "git diff --quiet -- pathspec1 pathspec2" sometimes did not return |
| 132 | + correct status value. |
| 133 | + (merge f34b205 nd/diff-quiet-stat-dirty later to maint.) |
| 134 | + |
| 135 | + * Attempting to deepen a shallow repository by fetching over smart |
| 136 | + HTTP transport failed in the protocol exchange, when no-done |
| 137 | + extension was used. The fetching side waited for the list of |
| 138 | + shallow boundary commits after the sending end stopped talking to |
| 139 | + it. |
| 140 | + (merge 0232852 nd/http-fetch-shallow-fix later to maint.) |
| 141 | + |
| 142 | + * Allow "git cmd path/", when the 'path' is where a submodule is |
| 143 | + bound to the top-level working tree, to match 'path', despite the |
| 144 | + extra and unnecessary trailing slash (such a slash is often |
| 145 | + given by command line completion). |
| 146 | + (merge 2e70c01 nd/submodule-pathspec-ending-with-slash later to maint.) |
0 commit comments