|
| 1 | +Git v1.9 Release Notes |
| 2 | +====================== |
| 3 | + |
| 4 | +Backward compatibility notes |
| 5 | +---------------------------- |
| 6 | + |
| 7 | +"git submodule foreach $cmd $args" used to treat "$cmd $args" the same |
| 8 | +way "ssh" did, concatenating them into a single string and letting the |
| 9 | +shell unquote. Careless users who forget to sufficiently quote $args |
| 10 | +gets their argument split at $IFS whitespaces by the shell, and got |
| 11 | +unexpected results due to this. Starting from this release, the |
| 12 | +command line is passed directly to the shell, if it has an argument. |
| 13 | + |
| 14 | +Read-only support for experimental loose-object format, in which users |
| 15 | +could optionally choose to write in their loose objects for a short |
| 16 | +while between v1.4.3 to v1.5.3 era, has been dropped. |
| 17 | + |
| 18 | + |
| 19 | +Backward compatibility notes (for Git 2.0) |
| 20 | +------------------------------------------ |
| 21 | + |
| 22 | +When "git push [$there]" does not say what to push, we have used the |
| 23 | +traditional "matching" semantics so far (all your branches were sent |
| 24 | +to the remote as long as there already are branches of the same name |
| 25 | +over there). In Git 2.0, the default will change to the "simple" |
| 26 | +semantics, which pushes: |
| 27 | + |
| 28 | + - only the current branch to the branch with the same name, and only |
| 29 | + when the current branch is set to integrate with that remote |
| 30 | + branch, if you are pushing to the same remote as you fetch from; or |
| 31 | + |
| 32 | + - only the current branch to the branch with the same name, if you |
| 33 | + are pushing to a remote that is not where you usually fetch from. |
| 34 | + |
| 35 | +Use the user preference configuration variable "push.default" to |
| 36 | +change this. If you are an old-timer who is used to the "matching" |
| 37 | +semantics, you can set the variable to "matching" to keep the |
| 38 | +traditional behaviour. If you want to live in the future early, you |
| 39 | +can set it to "simple" today without waiting for Git 2.0. |
| 40 | + |
| 41 | +When "git add -u" (and "git add -A") is run inside a subdirectory and |
| 42 | +does not specify which paths to add on the command line, it |
| 43 | +will operate on the entire tree in Git 2.0 for consistency |
| 44 | +with "git commit -a" and other commands. There will be no |
| 45 | +mechanism to make plain "git add -u" behave like "git add -u .". |
| 46 | +Current users of "git add -u" (without a pathspec) should start |
| 47 | +training their fingers to explicitly say "git add -u ." |
| 48 | +before Git 2.0 comes. A warning is issued when these commands are |
| 49 | +run without a pathspec and when you have local changes outside the |
| 50 | +current directory, because the behaviour in Git 2.0 will be different |
| 51 | +from today's version in such a situation. |
| 52 | + |
| 53 | +In Git 2.0, "git add <path>" will behave as "git add -A <path>", so |
| 54 | +that "git add dir/" will notice paths you removed from the directory |
| 55 | +and record the removal. Versions before Git 2.0, including this |
| 56 | +release, will keep ignoring removals, but the users who rely on this |
| 57 | +behaviour are encouraged to start using "git add --ignore-removal <path>" |
| 58 | +now before 2.0 is released. |
| 59 | + |
| 60 | +The default prefix for "git svn" will change in Git 2.0. For a long |
| 61 | +time, "git svn" created its remote-tracking branches directly under |
| 62 | +refs/remotes, but it will place them under refs/remotes/origin/ unless |
| 63 | +it is told otherwise with its --prefix option. |
| 64 | + |
| 65 | + |
| 66 | +Updates since v1.8.5 |
| 67 | +-------------------- |
| 68 | + |
| 69 | +Foreign interfaces, subsystems and ports. |
| 70 | + |
| 71 | + * The HTTP transport, when talking GSS-Negotinate, uses "100 |
| 72 | + Continue" response to avoid having to rewind and resend a large |
| 73 | + payload, which may not be always doable. |
| 74 | + |
| 75 | + * Various bugfixes to remote-bzr and remote-hg (in contrib/). |
| 76 | + |
| 77 | + |
| 78 | +UI, Workflows & Features |
| 79 | + |
| 80 | + * "git for-each-ref --format=..." learned a few formatting directives; |
| 81 | + e.g. "%(color:red)%(HEAD)%(color:reset) %(refname:short) %(subject)". |
| 82 | + |
| 83 | + * The command string given to "git submodule foreach" is passed |
| 84 | + directly to the shell, without being eval'ed. This is a backward |
| 85 | + incompatible change that may break existing users. |
| 86 | + |
| 87 | + * "git log" and friends learned the "--exclude=<glob>" option, to |
| 88 | + allow people to say "list history of all branches except those that |
| 89 | + match this pattern" with "git log --exclude='*/*' --branches". |
| 90 | + |
| 91 | + * "git rev-parse --parseopt" learned a new "--stuck-long" option to |
| 92 | + help scripts parse options with an optional parameter. |
| 93 | + |
| 94 | + |
| 95 | +Performance, Internal Implementation, etc. |
| 96 | + |
| 97 | + * The new PERLLIB_EXTRA makefile variable can be used to specify |
| 98 | + additional directories Perl modules (e.g. the ones necessary to run |
| 99 | + git-svn) are installed on the platform when building. |
| 100 | + |
| 101 | + * "git merge-base" learned the "--fork-point" mode, that implements |
| 102 | + the same logic used in "git pull --rebase" to find a suitable fork |
| 103 | + point out of the reflog entries for the remote-tracking branch the |
| 104 | + work has been based on. |
| 105 | + |
| 106 | + |
| 107 | + |
| 108 | +Also contains various documentation updates and code clean-ups. |
| 109 | + |
| 110 | + |
| 111 | +Fixes since v1.8.5 |
| 112 | +------------------ |
| 113 | + |
| 114 | +Unless otherwise noted, all the fixes since v1.8.5 in the maintenance |
| 115 | +track are contained in this release (see the maintenance releases' notes |
| 116 | +for details). |
| 117 | + |
| 118 | + * "git diff -- ':(icase)makefile'" was unnecessarily rejected at the |
| 119 | + command line parser. |
| 120 | + (merge 887c6c1 nd/magic-pathspec later to maint). |
| 121 | + |
| 122 | + * "git cat-file --batch-check=ok" did not check the existence of |
| 123 | + the named object. |
| 124 | + (merge 4ef8d1d sb/sha1-loose-object-info-check-existence later to maint). |
| 125 | + |
| 126 | + * "git am --abort" sometimes complained about not being able to write |
| 127 | + a tree with an 0{40} object in it. |
| 128 | + (merge 77b43ca jk/two-way-merge-corner-case-fix later to maint). |
| 129 | + |
| 130 | + * Two processes creating loose objects at the same time could have |
| 131 | + failed unnecessarily when the name of their new objects started |
| 132 | + with the same byte value, due to a race condition. |
| 133 | + (merge b2476a6 jh/loose-object-dirs-creation-race later to maint). |
0 commit comments