Sync with 2.4.8
[git] / Documentation / RelNotes / 1.5.2.txt
1 GIT v1.5.2 Release Notes
2 ========================
3
4 Updates since v1.5.1
5 --------------------
6
7 * Plumbing level superproject support.
8
9   You can include a subdirectory that has an independent git
10   repository in your index and tree objects of your project
11   ("superproject").  This plumbing (i.e. "core") level
12   superproject support explicitly excludes recursive behaviour.
13
14   The "subproject" entries in the index and trees of a superproject
15   are 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 '$Id$' 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 keyword
36   expansion).  These conversions apply when checking files in
37   or out, and exporting via git-archive.
38
39 * The packfile format now optionally supports 64-bit index.
40
41   This release supports the "version 2" format of the .idx
42   file.  This is automatically enabled when a huge packfile
43   needs more than 32-bit to express offsets of objects in the
44   pack.
45
46 * Comes with an updated git-gui 0.7.1
47
48 * Updated gitweb:
49
50   - can show combined diff for merges;
51   - uses font size of user's preference, not hardcoded in pixels;
52   - can now 'grep';
53
54 * New commands and options.
55
56   - "git bisect start" can optionally take a single bad commit and
57     zero or more good commits on the command line.
58
59   - "git shortlog" can optionally be told to wrap its output.
60
61   - "subtree" merge strategy allows another project to be merged in as
62     your subdirectory.
63
64   - "git format-patch" learned a new --subject-prefix=<string>
65     option, to override the built-in "[PATCH]".
66
67   - "git add -u" is a quick way to do the first stage of "git
68     commit -a" (i.e. update the index to match the working
69     tree); it obviously does not make a commit.
70
71   - "git clean" honors a new configuration, "clean.requireforce".  When
72     set to true, this makes "git clean" a no-op, preventing you
73     from losing files by typing "git clean" when you meant to
74     say "make clean".  You can still say "git clean -f" to
75     override this.
76
77   - "git log" family of commands learned --date={local,relative,default}
78     option.  --date=relative is synonym to the --relative-date.
79     --date=local gives the timestamp in local timezone.
80
81 * Updated behavior of existing commands.
82
83   - When $GIT_COMMITTER_EMAIL or $GIT_AUTHOR_EMAIL is not set
84     but $EMAIL is set, the latter is used as a substitute.
85
86   - "git diff --stat" shows size of preimage and postimage blobs
87     for binary contents.  Earlier it only said "Bin".
88
89   - "git lost-found" shows stuff that are unreachable except
90     from reflogs.
91
92   - "git checkout branch^0" now detaches HEAD at the tip commit
93     on the named branch, instead of just switching to the
94     branch (use "git checkout branch" to switch to the branch,
95     as before).
96
97   - "git bisect next" can be used after giving only a bad commit
98     without giving a good one (this starts bisection half-way to
99     the root commit).  We used to refuse to operate without a
100     good and a bad commit.
101
102   - "git push", when pushing into more than one repository, does
103     not stop at the first error.
104
105   - "git archive" does not insist you to give --format parameter
106     anymore; it defaults to "tar".
107
108   - "git cvsserver" can use backends other than sqlite.
109
110   - "gitview" (in contrib/ section) learned to better support
111     "git-annotate".
112
113   - "git diff $commit1:$path2 $commit2:$path2" can now report
114     mode changes between the two blobs.
115
116   - Local "git fetch" from a repository whose object store is
117     one of the alternates (e.g. fetching from the origin in a
118     repository created with "git clone -l -s") avoids
119     downloading objects unnecessarily.
120
121   - "git blame" uses .mailmap to canonicalize the author name
122     just like "git shortlog" does.
123
124   - "git pack-objects" pays attention to pack.depth
125     configuration variable.
126
127   - "git cherry-pick" and "git revert" does not use .msg file in
128     the working tree to prepare commit message; instead it uses
129     $GIT_DIR/MERGE_MSG as other commands do.
130
131 * Builds
132
133   - git-p4import has never been installed; now there is an
134     installation option to do so.
135
136   - gitk and git-gui can be configured out.
137
138   - Generated documentation pages automatically get version
139     information from GIT_VERSION.
140
141   - Parallel build with "make -j" descending into subdirectory
142     was fixed.
143
144 * Performance Tweaks
145
146   - Optimized "git-rev-list --bisect" (hence "git-bisect").
147
148   - Optimized "git-add $path" in a large directory, most of
149     whose contents are ignored.
150
151   - Optimized "git-diff-tree" for reduced memory footprint.
152
153   - The recursive merge strategy updated a worktree file that
154     was changed identically in two branches, when one of them
155     renamed it.  We do not do that when there is no rename, so
156     match that behaviour.  This avoids excessive rebuilds.
157
158   - The default pack depth has been increased to 50, as the
159     recent addition of delta_base_cache makes deeper delta chains
160     much less expensive to access.  Depending on the project, it was
161     reported that this reduces the resulting pack file by 10%
162     or so.
163
164
165 Fixes since v1.5.1
166 ------------------
167
168 All of the fixes in v1.5.1 maintenance series are included in
169 this release, unless otherwise noted.
170
171 * Bugfixes
172
173   - Switching branches with "git checkout" refused to work when
174     a path changes from a file to a directory between the
175     current branch and the new branch, in order not to lose
176     possible local changes in the directory that is being turned
177     into a file with the switch.  We now allow such a branch
178     switch after making sure that there is no locally modified
179     file nor un-ignored file in the directory.  This has not
180     been backported to 1.5.1.x series, as it is rather an
181     intrusive change.
182
183   - Merging branches that have a file in one and a directory in
184     another at the same path used to get quite confused.  We
185     handle such a case a bit more carefully, even though that is
186     still left as a conflict for the user to sort out.  This
187     will not be backported to 1.5.1.x series, as it is rather an
188     intrusive change.
189
190   - git-fetch had trouble with a remote with insanely large number
191     of refs.
192
193   - "git clean -d -X" now does not remove non-excluded directories.
194
195   - rebasing (without -m) a series that changes a symlink to a directory
196     in the middle of a path confused git-apply greatly and refused to
197     operate.