Merge branch 'maint'
[git] / Documentation / RelNotes-1.5.2.txt
1 GIT v1.5.2 Release Notes (draft)
2 ========================
3
4 Updates since v1.5.1
5 --------------------
6
7 * Plumbing level subproject support.
8
9   You can include a subdirectory that has an independent git
10   repository in your index and tree objects as a
11   "subproject".  This plumbing (i.e. "core") level subproject
12   support explicitly excludes recursive behaviour.
13
14   The "subproject" entries in the index and trees are
15   incompatible with older versions of git.  Experimenting with
16   the plumbing level support is encouraged, but be warned that
17   unless everybody in your project updates to this release or
18   later, using this feature would make your project
19   inaccessible by people with older versions of git.
20
21 * Plumbing level gitattributes support.
22
23   The gitattributes mechanism allows you to add 'attributes' to
24   paths in your project, and affect the way certain git
25   operations work.  Currently you can influence if a path is
26   considered a binary or text (the former would be treated by
27   'git diff' not to produce textual output; the latter can go
28   through the line endings conversion process in repositories
29   with core.autocrlf set), expand and unexpand '$ident$' keyword
30   with blob object name, specify a custom 3-way merge driver,
31   and specify a custom diff driver.  You can also apply
32   arbitrary filter to contents on check-in/check-out codepath
33   but this feature is an extremely sharp-edged razor and needs
34   to be handled with caution (do not use it unless you
35   understand the earlier mailing list discussion on keyward
36   expansion).
37
38 * The packfile format now optionally suports 64-bit index.
39
40   This release supports the "version 2" format of the .idx
41   file.  This is automatically enabled when a huge packfile
42   needs more than 32-bit to express offsets of objects in the
43   pack
44
45 * New commands and options.
46
47   - "git bisect start" can optionally take a single bad commit and
48     zero or more good commits on the command line.
49
50   - "git shortlog" can optionally be told to wrap its output.
51
52   - "subtree" merge strategy allows another project to be merged in as
53     your subdirectory.
54
55   - "git format-patch" learned a new --subject-prefix=<string>
56     option, to override the built-in "[PATCH]".
57
58   - "git add -u" is a quick way to do the first stage of "git
59     commit -a" (i.e. update the index to match the working
60     tree); it obviously does not make a commit.
61
62   - "git clean" honors a new configuration, "clean.requireforce".  When
63     set to true, this makes "git clean" a no-op, preventing you
64     from losing files by typing "git clean" when you meant to
65     say "make clean".  You can still say "git clean -f" to
66     override this.
67
68   - "git log" family of commands learned --date={local,relative,default}
69     option.  --date=relative is synonym to the --relative-date.
70     --date=local gives the timestamp in local timezone.
71
72 * Updated behavior of existing commands.
73
74   - When $GIT_COMMITTER_EMAIL or $GIT_AUTHOR_EMAIL is not set
75     but $EMAIL is set, the latter is used as a substitute.
76
77   - "git diff --stat" shows size of preimage and postimage blobs
78     for binary contents.  Earlier it only said "Bin".
79
80   - "git lost-found" shows stuff that are unreachable except
81     from reflogs.
82
83   - "git checkout branch^0" now detaches HEAD at the tip commit
84     on the named branch, instead of just switching to the
85     branch (use "git checkout branch" to switch to the branch,
86     as before).
87
88   - "git bisect next" can be used after giving only a bad commit
89     without giving a good one (this starts bisection half-way to
90     the root commit).  We used to refuse to operate without a
91     good and a bad commit.
92
93   - "git push", when pushing into more than one repository, does
94     not stop at the first error.
95
96   - "git archive" does not insist you to give --format parameter
97     anymore; it defaults to "tar".
98
99   - "git cvsserver" can use backends other than sqlite.
100
101   - "gitview" (in contrib/ section) learned to better support
102     "git-annotate".
103
104   - "git diff $commit1:$path2 $commit2:$path2" can now report
105     mode changes between the two blobs.
106
107   - Local "git fetch" from a repository whose object store is
108     one of the alternates (e.g. fetching from the origin in a
109     repository created with "git clone -l -s") avoids
110     downloading objects unnecessary.
111
112   - "git blame" uses .mailmap to canonicalize the author name
113     just like "git shortlog" does.
114
115 * Builds
116
117   - git-p4import has never been installed; now there is an
118     installation option to do so.
119
120   - gitk and git-gui can be configured out.
121
122   - Generated documentation pages automatically get version
123     information from GIT_VERSION
124
125   - Parallel build with "make -j" descending into subdirectory
126     was fixed.
127
128 * Performance Tweaks
129
130   - Optimized "git-rev-list --bisect" (hence "git-bisect").
131
132   - Optimized "git-add $path" in a large directory, most of
133     whose contents are ignored.
134
135   - The recursive merge strategy updated a worktree file that
136     was changed identically in two branches, when one of them
137     renamed it.  We do not do that when there is no rename, so
138     match that behaviour.
139
140 Fixes since v1.5.1
141 ------------------
142
143 All of the fixes in v1.5.1 maintenance series are included in
144 this release, unless otherwise noted.
145
146 * Bugfixes
147
148   - Switching branches with "git checkout" refused to work when
149     a path changes from a file to a directory between the
150     current branch and the new branch, in order not to lose
151     possible local changes in the directory that is being turned
152     into a file with the switch.  We now allow such a branch
153     switch after making sure that there is no locally modified
154     file nor un-ignored file in the directory.  This has not
155     been backported to 1.5.1.x series, as it is rather an
156     intrusive change.
157
158   - Merging branches that have a file in one and a directory in
159     another at the same path used to get quite confused.  We
160     handle such a case a bit more carefully, even though that is
161     still left as a conflict for the user to sort out.  This
162     will not be backported to 1.5.1.x series, as it is rather an
163     intrusive change.
164
165   - git-fetch had trouble with a remote with insanely large number
166     of refs.
167
168 * Documentation updates
169
170 * Performance Tweaks
171
172 --
173 exec >/var/tmp/1
174 O=v1.5.2-rc0-106-g07c785d
175 echo O=`git describe refs/heads/master`
176 git shortlog --no-merges $O..refs/heads/master ^refs/heads/maint