git p4 doc: use two-line style for options with multiple spellings
[git/mingw/j6t.git] / Documentation / RelNotes / 1.9.txt
blob9debcc41eb39e10b9b27d69d40b891beda9fc226
1 Git v1.9 Release Notes
2 ======================
4 Backward compatibility notes
5 ----------------------------
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.
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.
19 Backward compatibility notes (for Git 2.0)
20 ------------------------------------------
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:
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
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.
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.
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.
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.
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.
66 Updates since v1.8.5
67 --------------------
69 Foreign interfaces, subsystems and ports.
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.
75  * Various bugfixes to remote-bzr and remote-hg (in contrib/).
78 UI, Workflows & Features
80  * "git for-each-ref --format=..." learned a few formatting directives;
81    e.g. "%(color:red)%(HEAD)%(color:reset) %(refname:short) %(subject)".
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.
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".
91  * "git rev-parse --parseopt" learned a new "--stuck-long" option to
92    help scripts parse options with an optional parameter.
95 Performance, Internal Implementation, etc.
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.
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.
108 Also contains various documentation updates and code clean-ups.
111 Fixes since v1.8.5
112 ------------------
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).
118  * "git diff -- ':(icase)makefile'" was unnecessarily rejected at the
119    command line parser.
120    (merge 887c6c1 nd/magic-pathspec later to maint).
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).
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).
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).