]>
Commit | Line | Data |
---|---|---|
6fc66686 JH |
1 | GIT v1.5.1 Release Notes |
2 | ======================== | |
3 | ||
4 | Updates since v1.5.0 | |
5 | -------------------- | |
6 | ||
7 | * Deprecated commands and options. | |
8 | ||
9 | - git-diff-stages and git-resolve have been removed. | |
10 | ||
11 | * New commands and options. | |
12 | ||
b6da18b1 JH |
13 | - "git log" and friends take --reverse, which instructs them |
14 | to give their output in the order opposite from their usual. | |
15 | They typically output from new to old, but with this option | |
16 | their output would read from old to new. "git shortlog" | |
17 | usually lists older commits first, but with this option, | |
18 | they are shown from new to old. | |
19 | ||
20 | - "git log --pretty=format:<string>" to allow more flexible | |
21 | custom log output. | |
6fc66686 JH |
22 | |
23 | - "git diff" learned --ignore-space-at-eol. This is a weaker | |
24 | form of --ignore-space-change. | |
25 | ||
2eb06531 JH |
26 | - "git diff --no-index pathA pathB" can be used as diff |
27 | replacement with git specific enhancements. | |
28 | ||
ceb8442a JH |
29 | - "git diff --no-index" can read from '-' (standard input). |
30 | ||
31 | - "git diff" also learned --exit-code to exit with non-zero | |
32 | status when it found differences. In the future we might | |
33 | want to make this the default but that would be a rather big | |
34 | backward incompatible change; it will stay as an option for | |
35 | now. | |
36 | ||
b6da18b1 JH |
37 | - "git diff --quiet" is --exit-code with output turned off, |
38 | meant for scripted use to quickly determine if there is any | |
39 | tree-level difference. | |
40 | ||
41 | - Textual patch generation with "git diff" without -w/-b | |
42 | option has been significantly optimized. "git blame" got | |
43 | faster because of the same change. | |
44 | ||
45 | - "git log" and "git rev-list" has been optimized | |
46 | significantly when they are used with pathspecs. | |
47 | ||
ceb8442a JH |
48 | - "git branch --track" can be used to set up configuration |
49 | variables to help it easier to base your work on branches | |
50 | you track from a remote site. | |
51 | ||
52 | - "git format-patch --attach" now emits attachments. Use | |
53 | --inline to get an inlined multipart/mixed. | |
54 | ||
b7581201 JH |
55 | - "git name-rev" learned --refs=<pattern>, to limit the tags |
56 | used for naming the given revisions only to the ones | |
57 | matching the given pattern. | |
58 | ||
2eb06531 JH |
59 | - "git remote update" is to run "git fetch" for defined remotes |
60 | to update tracking branches. | |
61 | ||
62 | - "git cvsimport" can now take '-d' to talk with a CVS | |
63 | repository different from what are recorded in CVS/Root | |
64 | (overriding it with environment CVSROOT does not work). | |
65 | ||
66 | - "git bundle" can help sneaker-netting your changes between | |
67 | repositories. | |
68 | ||
ceb8442a JH |
69 | - "git mergetool" can help 3-way file-level conflict |
70 | resolution with your favorite graphical merge tools. | |
71 | ||
46d49472 JH |
72 | - A new configuration "core.symlinks" can be used to disable |
73 | symlinks on filesystems that do not support them; they are | |
74 | checked out as regular files instead. | |
75 | ||
b6da18b1 JH |
76 | - You can name a commit object with its first line of the |
77 | message. The syntax to use is ':/message text'. E.g. | |
78 | ||
79 | $ git show ":/object name: introduce ':/<oneline prefix>' notation" | |
80 | ||
81 | means the same thing as: | |
82 | ||
83 | $ git show 28a4d940443806412effa246ecc7768a21553ec7 | |
84 | ||
85 | - "git bisect" learned a new command "run" that takes a script | |
86 | to run after each revision is checked out to determine if it | |
87 | is good or bad, to automate the bisection process. | |
88 | ||
a208362f JH |
89 | - "git log" family learned a new traversal option --first-parent, |
90 | which does what the name suggests. | |
91 | ||
2eb06531 | 92 | |
a8f4ef72 JH |
93 | * Updated behavior of existing commands. |
94 | ||
95 | - "git-merge-recursive" used to barf when there are more than | |
96 | one common ancestors for the merge, and merging them had a | |
97 | rename/rename conflict. This has been fixed. | |
6fc66686 | 98 | |
ceb8442a JH |
99 | - "git fsck" does not barf on corrupt loose objects. |
100 | ||
a208362f JH |
101 | - "git rm" does not remove newly added files without -f. |
102 | ||
ceb8442a JH |
103 | - "git archimport" allows remapping when coming up with git |
104 | branch names from arch names. | |
105 | ||
2eb06531 JH |
106 | - git-svn got almost a rewrite. |
107 | ||
108 | - core.autocrlf configuration, when set to 'true', makes git | |
109 | to convert CRLF at the end of lines in text files to LF when | |
110 | reading from the filesystem, and convert in reverse when | |
111 | writing to the filesystem. The variable can be set to | |
112 | 'input', in which case the conversion happens only while | |
113 | reading from the filesystem but files are written out with | |
114 | LF at the end of lines. Currently, which paths to consider | |
115 | 'text' (i.e. be subjected to the autocrlf mechanism) is | |
116 | decided purely based on the contents, but the plan is to | |
20f50f16 | 117 | allow users to explicitly override this heuristic based on |
2eb06531 JH |
118 | paths. |
119 | ||
a8f4ef72 | 120 | - The behavior of 'git-apply', when run in a subdirectory, |
2eb06531 JH |
121 | without --index nor --cached were inconsistent with that of |
122 | the command with these options. This was fixed to match the | |
a8f4ef72 | 123 | behavior with --index. A patch that is meant to be applied |
2eb06531 JH |
124 | with -p1 from the toplevel of the project tree can be |
125 | applied with any custom -p<n> option. A patch that is not | |
126 | relative to the toplevel needs to be applied with -p<n> | |
127 | option with or without --index (or --cached). | |
128 | ||
b7581201 JH |
129 | - "git diff" outputs a trailing HT when pathnames have embedded |
130 | SP on +++/--- header lines, in order to help "GNU patch" to | |
131 | parse its output. "git apply" was already updated to accept | |
132 | this modified output format since ce74618d (Sep 22, 2006). | |
6fc66686 | 133 | |
2eb06531 JH |
134 | - "git cvsserver" runs hooks/update and honors its exit status. |
135 | ||
136 | - "git cvsserver" can be told to send everything with -kb. | |
137 | ||
138 | - "git diff --check" also honors the --color output option. | |
139 | ||
140 | - "git name-rev" used to stress the fact that a ref is a tag too | |
141 | much, by saying something like "v1.2.3^0~22". It now says | |
142 | "v1.2.3~22" in such a case (it still says "v1.2.3^0" if it does | |
143 | not talk about an ancestor of the commit that is tagged, which | |
144 | makes sense). | |
145 | ||
146 | - "git rev-list --boundary" now shows boundary markers for the | |
147 | commits omitted by --max-age and --max-count condition. | |
148 | ||
149 | - The configuration mechanism now reads $(prefix)/etc/gitconfig. | |
150 | ||
151 | - "git apply --verbose" shows what preimage lines were wanted | |
152 | when it couldn't find them. | |
153 | ||
154 | - "git status" in a read-only repository got a bit saner. | |
155 | ||
46d49472 JH |
156 | - "git fetch" (hence "git clone" and "git pull") are less |
157 | noisy when the output does not go to tty. | |
158 | ||
ceb8442a JH |
159 | - "git fetch" between repositories with many refs were slow |
160 | even when there are not many changes that needed | |
161 | transferring. This has been sped up by partially rewriting | |
162 | the heaviest parts in C. | |
163 | ||
164 | - "git mailinfo" which splits an e-mail into a patch and the | |
a8f4ef72 JH |
165 | meta-information was rewritten, thanks to Don Zickus. It |
166 | handles nested multipart better. The command was broken for | |
167 | a brief period on 'master' branch since 1.5.0 but the | |
168 | breakage is fixed now. | |
ceb8442a JH |
169 | |
170 | - send-email learned configurable bcc and chain-reply-to. | |
171 | ||
b6da18b1 JH |
172 | - "git remote show $remote" also talks about branches that |
173 | would be pushed if you run "git push remote". | |
174 | ||
a8f4ef72 | 175 | - Using objects from packs is now seriously optimized by clever |
ceb8442a JH |
176 | use of a cache. This should be most noticeable in git-log |
177 | family of commands that involve reading many tree objects. | |
178 | In addition, traversing revisions while filtering changes | |
179 | with pathspecs is made faster by terminating the comparison | |
180 | between the trees as early as possible. | |
181 | ||
182 | ||
6fc66686 JH |
183 | * Hooks |
184 | ||
b6da18b1 JH |
185 | - The part to send out notification e-mails was removed from |
186 | the sample update hook, as it was not an appropriate place | |
a8f4ef72 JH |
187 | to do so. The proper place to do this is the new post-receive |
188 | hook. An example hook has been added to contrib/hooks/. | |
6fc66686 | 189 | |
ceb8442a JH |
190 | |
191 | * Others | |
192 | ||
193 | - git-revert, git-gc and git-cherry-pick are now built-ins. | |
194 | ||
89815cab JH |
195 | Fixes since v1.5.0 |
196 | ------------------ | |
ceb8442a | 197 | |
89815cab | 198 | These are all in v1.5.0.x series. |
2eb06531 | 199 | |
89815cab JH |
200 | * Documentation updates |
201 | ||
202 | - Clarifications and corrections to 1.5.0 release notes. | |
203 | ||
204 | - The main documentation did not link to git-remote documentation. | |
205 | ||
206 | - Clarified introductory text of git-rebase documentation. | |
207 | ||
208 | - Converted remaining mentions of update-index on Porcelain | |
209 | documents to git-add/git-rm. | |
210 | ||
211 | - Some i18n.* configuration variables were incorrectly | |
212 | described as core.*; fixed. | |
213 | ||
214 | - added and clarified core.bare, core.legacyheaders configurations. | |
215 | ||
216 | - updated "git-clone --depth" documentation. | |
217 | ||
218 | - user-manual updates. | |
219 | ||
220 | - Options to 'git remote add' were described insufficiently. | |
221 | ||
222 | - Configuration format.suffix was not documented. | |
223 | ||
224 | - Other formatting and spelling fixes. | |
225 | ||
226 | - user-manual has better cross references. | |
227 | ||
228 | - gitweb installation/deployment procedure is now documented. | |
229 | ||
230 | ||
231 | * Bugfixes | |
232 | ||
233 | - git-upload-pack closes unused pipe ends; earlier this caused | |
234 | many zombies to hang around. | |
235 | ||
236 | - git-rerere was recording the contents of earlier hunks | |
237 | duplicated in later hunks. This prevented resolving the same | |
238 | conflict when performing the same merge the other way around. | |
239 | ||
240 | - git-add and git-update-index on a filesystem on which | |
241 | executable bits are unreliable incorrectly reused st_mode | |
242 | bits even when the path changed between symlink and regular | |
243 | file. | |
244 | ||
245 | - git-daemon marks the listening sockets with FD_CLOEXEC so | |
246 | that it won't be leaked into the children. | |
247 | ||
248 | - segfault from git-blame when the mandatory pathname | |
249 | parameter was missing was fixed; usage() message is given | |
250 | instead. | |
251 | ||
252 | - git-rev-list did not read $GIT_DIR/config file, which means | |
253 | that did not honor i18n.logoutputencoding correctly. | |
254 | ||
255 | - Automated merge conflict handling when changes to symbolic | |
256 | links conflicted were completely broken. The merge-resolve | |
257 | strategy created a regular file with conflict markers in it | |
258 | in place of the symbolic link. The default strategy, | |
259 | merge-recursive was even more broken. It removed the path | |
260 | that was pointed at by the symbolic link. Both of these | |
261 | problems have been fixed. | |
262 | ||
263 | - 'git diff maint master next' did not correctly give combined | |
264 | diff across three trees. | |
265 | ||
266 | - 'git fast-import' portability fix for Solaris. | |
267 | ||
268 | - 'git show-ref --verify' without arguments did not error out | |
269 | but segfaulted. | |
270 | ||
271 | - 'git diff :tracked-file `pwd`/an-untracked-file' gave an extra | |
272 | slashes after a/ and b/. | |
273 | ||
274 | - 'git format-patch' produced too long filenames if the commit | |
275 | message had too long line at the beginning. | |
276 | ||
277 | - Running 'make all' and then without changing anything | |
278 | running 'make install' still rebuilt some files. This | |
279 | was inconvenient when building as yourself and then | |
280 | installing as root (especially problematic when the source | |
281 | directory is on NFS and root is mapped to nobody). | |
282 | ||
283 | - 'git-rerere' failed to deal with two unconflicted paths that | |
284 | sorted next to each other. | |
285 | ||
286 | - 'git-rerere' attempted to open(2) a symlink and failed if | |
287 | there was a conflict. Since a conflicting change to a | |
288 | symlink would not benefit from rerere anyway, the command | |
289 | now ignores conflicting changes to symlinks. | |
290 | ||
291 | - 'git-repack' did not like to pass more than 64 arguments | |
292 | internally to underlying 'rev-list' logic, which made it | |
293 | impossible to repack after accumulating many (small) packs | |
294 | in the repository. | |
295 | ||
296 | - 'git-diff' to review the combined diff during a conflicted | |
297 | merge were not reading the working tree version correctly | |
298 | when changes to a symbolic link conflicted. It should have | |
299 | read the data using readlink(2) but read from the regular | |
300 | file the symbolic link pointed at. | |
301 | ||
302 | - 'git-remote' did not like period in a remote's name. | |
303 | ||
304 | - 'git.el' honors the commit coding system from the configuration. | |
305 | ||
306 | - 'blameview' in contrib/ correctly digs deeper when a line is | |
307 | clicked. | |
308 | ||
309 | - 'http-push' correctly makes sure the remote side has leading | |
310 | path. Earlier it started in the middle of the path, and | |
311 | incorrectly. | |
312 | ||
313 | - 'git-merge' did not exit with non-zero status when the | |
314 | working tree was dirty and cannot fast forward. It does | |
315 | now. | |
316 | ||
317 | - 'cvsexportcommit' does not lose yet-to-be-used message file. | |
318 | ||
319 | - int-vs-size_t typefix when running combined diff on files | |
320 | over 2GB long. | |
321 | ||
322 | - 'git apply --whitespace=strip' should not touch unmodified | |
323 | lines. | |
324 | ||
325 | - 'git-mailinfo' choke when a logical header line was too long. | |
326 | ||
327 | - 'git show A..B' did not error out. Negative ref ("not A" in | |
328 | this example) does not make sense for the purpose of the | |
329 | command, so now it errors out. | |
330 | ||
331 | - 'git fmt-merge-msg --file' without file parameter did not | |
332 | correctly error out. | |
333 | ||
334 | - 'git archimport' barfed upon encountering a commit without | |
335 | summary. | |
336 | ||
337 | - 'git index-pack' did not protect itself from getting a short | |
338 | read out of pread(2). | |
339 | ||
340 | - 'git http-push' had a few buffer overruns. | |
341 | ||
342 | - Build dependency fixes to rebuild fetch.o when other headers | |
343 | change. | |
344 | ||
345 | - git.el does not add duplicate sign-off lines. | |
346 | ||
347 | - git-commit shows the full stat of the resulting commit, not | |
348 | just about the files in the current directory, when run from | |
349 | a subdirectory. | |
350 | ||
351 | - "git-checkout -m '@{8 hours ago}'" had a funny failure from | |
352 | eval; fixed. | |
353 | ||
354 | - git-merge (hence git-pull) did not refuse fast-forwarding | |
355 | when the working tree had local changes that would have | |
356 | conflicted with it. | |
357 | ||
358 | - a handful small fixes to gitweb. | |
359 | ||
360 | - build procedure for user-manual is fixed not to require locally | |
361 | installed stylesheets. | |
362 | ||
363 | - "git commit $paths" on paths whose earlier contents were | |
364 | already updated in the index were failing out. | |
365 | ||
366 | ||
367 | * Tweaks | |
368 | ||
369 | - sliding mmap() inefficiently mmaped the same region of a | |
370 | packfile with an access pattern that used objects in the | |
371 | reverse order. This has been made more efficient. |