]>
Commit | Line | Data |
---|---|---|
124d3e4c | 1 | GIT v1.5.3 Release Notes |
556df5e9 JH |
2 | ======================== |
3 | ||
4 | Updates since v1.5.2 | |
5 | -------------------- | |
6 | ||
14a4091c JH |
7 | * The commit walkers other than http are officially deprecated, |
8 | but still supported for now. | |
556df5e9 | 9 | |
14a4091c JH |
10 | * The submodule support has Porcelain layer. |
11 | ||
1467b5fe JH |
12 | Note that the current submodule support is minimal and this is |
13 | deliberately so. A design decision we made is that operations | |
14 | at the supermodule level do not recurse into submodules by | |
15 | default. The expectation is that later we would add a | |
16 | mechanism to tell git which submodules the user is interested | |
17 | in, and this information might be used to determine the | |
18 | recursive behaviour of certain commands (e.g. "git checkout" | |
19 | and "git diff"), but currently we haven't agreed on what that | |
20 | mechanism should look like. Therefore, if you use submodules, | |
21 | you would probably need "git submodule update" on the | |
22 | submodules you care about after running a "git checkout" at | |
23 | the supermodule level. | |
24 | ||
14a4091c JH |
25 | * There are a handful pack-objects changes to help you cope better |
26 | with repositories with pathologically large blobs in them. | |
556df5e9 | 27 | |
124d3e4c | 28 | * For people who need to import from Perforce, a front-end for |
14a4091c | 29 | fast-import is in contrib/fast-import/. |
124d3e4c | 30 | |
17437d45 | 31 | * Comes with git-gui 0.8.2. |
124d3e4c JH |
32 | |
33 | * Comes with updated gitk. | |
34 | ||
556df5e9 JH |
35 | * New commands and options. |
36 | ||
9dfdf14b JH |
37 | - "git log --date=<format>" can use more formats: iso8601, rfc2822. |
38 | ||
61c3f908 JH |
39 | - The hunk header output from "git diff" family can be customized |
40 | with the attributes mechanism. See gitattributes(5) for details. | |
41 | ||
14a4091c JH |
42 | - "git stash" allows you to quickly save away your work in |
43 | progress and replay it later on an updated state. | |
44 | ||
45 | - "git rebase" learned an "interactive" mode that let you | |
46 | pick and reorder which commits to rebuild. | |
47 | ||
f48a203a JH |
48 | - "git fsck" can save its findings in $GIT_DIR/lost-found, without a |
49 | separate invocation of "git lost-found" command. The blobs stored by | |
50 | lost-found are stored in plain format to allow you to grep in them. | |
14a4091c JH |
51 | |
52 | - $GIT_WORK_TREE environment variable can be used together with | |
53 | $GIT_DIR to work in a subdirectory of a working tree that is | |
54 | not located at "$GIT_DIR/..". | |
55 | ||
68d42298 JH |
56 | - Giving "--file=<file>" option to "git config" is the same as |
57 | running the command with GIT_CONFIG=<file> environment. | |
58 | ||
14a4091c | 59 | - "git log" learned a new option "--follow", to follow |
124d3e4c JH |
60 | renaming history of a single file. |
61 | ||
1467b5fe | 62 | - "git filter-branch" lets you rewrite the revision history of |
4f8f03d6 JH |
63 | specified branches. You can specify a number of filters to |
64 | modify the commits, files and trees. | |
124d3e4c | 65 | |
1467b5fe JH |
66 | - "git cvsserver" learned new options (--base-path, --export-all, |
67 | --strict-paths) inspired by "git daemon". | |
124d3e4c | 68 | |
68d42298 JH |
69 | - "git daemon --base-path-relaxed" can help migrating a repository URL |
70 | that did not use to use --base-path to use --base-path. | |
71 | ||
1467b5fe | 72 | - "git commit" can use "-t templatefile" option and commit.template |
f48a203a JH |
73 | configuration variable to prime the commit message given to you in the |
74 | editor. | |
75 | ||
1467b5fe | 76 | - "git submodule" command helps you manage the projects from |
556df5e9 JH |
77 | the superproject that contain them. |
78 | ||
79 | - In addition to core.compression configuration option, | |
80 | core.loosecompression and pack.compression options can | |
81 | independently tweak zlib compression levels used for loose | |
82 | and packed objects. | |
83 | ||
1467b5fe | 84 | - "git ls-tree -l" shows size of blobs pointed at by the |
556df5e9 JH |
85 | tree entries, similar to "/bin/ls -l". |
86 | ||
1467b5fe | 87 | - "git rev-list" learned --regexp-ignore-case and |
556df5e9 | 88 | --extended-regexp options to tweak its matching logic used |
f70f988b | 89 | for --grep filtering. |
556df5e9 | 90 | |
1467b5fe JH |
91 | - "git describe --contains" is a handier way to call more |
92 | obscure command "git name-rev --tags". | |
556df5e9 JH |
93 | |
94 | - "git gc --aggressive" tells the command to spend more cycles | |
95 | to optimize the repository harder. | |
96 | ||
9dfdf14b JH |
97 | - "git repack" learned a "window-memory" limit which |
98 | dynamically reduces the window size to stay within the | |
99 | specified memory usage. | |
100 | ||
556df5e9 JH |
101 | - "git repack" can be told to split resulting packs to avoid |
102 | exceeding limit specified with "--max-pack-size". | |
103 | ||
124d3e4c JH |
104 | - "git fsck" gained --verbose option. This is really really |
105 | verbose but it might help you identify exact commit that is | |
106 | corrupt in your repository. | |
107 | ||
108 | - "git format-patch" learned --numbered-files option. This | |
109 | may be useful for MH users. | |
110 | ||
14a4091c JH |
111 | - "git format-patch" learned format.subjectprefix configuration |
112 | variable, which serves the same purpose as "--subject-prefix" | |
113 | option. | |
114 | ||
124d3e4c JH |
115 | - "git tag -n -l" shows tag annotations while listing tags. |
116 | ||
117 | - "git cvsimport" can optionally use the separate-remote layout. | |
118 | ||
14a4091c | 119 | - "git blame" can be told to see through commits that change |
124d3e4c JH |
120 | whitespaces and indentation levels with "-w" option. |
121 | ||
122 | - "git send-email" can be told not to thread the messages when | |
123 | sending out more than one patches. | |
124 | ||
86bab961 JH |
125 | - "git send-email" can also be told how to find whom to cc the |
126 | message to for each message via --cc-cmd. | |
127 | ||
124d3e4c JH |
128 | - "git config" learned NUL terminated output format via -z to |
129 | help scripts. | |
130 | ||
1467b5fe JH |
131 | - "git add" learned "--refresh <paths>..." option to selectively refresh |
132 | the cached stat information. | |
133 | ||
14a4091c JH |
134 | - "git init -q" makes the command quieter. |
135 | ||
a475e809 JH |
136 | - "git -p command" now has a cousin of opposite sex, "git --no-pager |
137 | command". | |
138 | ||
556df5e9 JH |
139 | * Updated behavior of existing commands. |
140 | ||
f48a203a JH |
141 | - "gitweb" can offer multiple snapshot formats. |
142 | ||
143 | ***NOTE*** Unfortunately, this changes the format of the | |
144 | $feature{snapshot}{default} entry in the per-site | |
145 | configuration file 'gitweb_config.perl'. It used to be a | |
146 | three-element tuple that describe a single format; with the | |
147 | new configuration item format, you only have to say the name | |
148 | of the format ('tgz', 'tbz2' or 'zip'). Please update the | |
149 | your configuration file accordingly. | |
150 | ||
1467b5fe JH |
151 | - "git clone" uses -l (hardlink files under .git) by default when |
152 | cloning locally. | |
153 | ||
86bab961 | 154 | - URL used for "git clone" and friends can specify nonstandard SSH port |
030e0e5f | 155 | by using ssh://host:port/path/to/repo syntax. |
86bab961 | 156 | |
1467b5fe JH |
157 | - "git bundle create" can now create a bundle without negative refs, |
158 | i.e. "everything since the beginning up to certain points". | |
159 | ||
68d42298 JH |
160 | - "git diff" (but not the plumbing level "git diff-tree") now |
161 | recursively descends into trees by default. | |
162 | ||
1467b5fe | 163 | - "git diff" does not show differences that come only from |
86bab961 JH |
164 | stat-dirtiness in the form of "diff --git" header anymore. |
165 | It runs "update-index --refresh" silently as needed. | |
166 | ||
167 | - "git tag -l" used to match tags by globbing its parameter as if it | |
168 | has wildcard '*' on both ends, which made "git tag -l gui" to match | |
169 | tag 'gitgui-0.7.0'; this was very annoying. You now have to add | |
170 | asterisk on the sides you want to wildcard yourself. | |
1467b5fe | 171 | |
f48a203a JH |
172 | - The editor to use with many interactive commands can be |
173 | overridden with GIT_EDITOR environment variable, or if it | |
174 | does not exist, with core.editor configuration variable. As | |
175 | before, if you have neither, environment variables VISUAL | |
176 | and EDITOR are consulted in this order, and then finally we | |
177 | fall back on "vi". | |
178 | ||
9dfdf14b JH |
179 | - "git rm --cached" does not complain when removing a newly |
180 | added file from the index anymore. | |
181 | ||
f48a203a JH |
182 | - Options to "git log" to affect how --grep/--author options look for |
183 | given strings now have shorter abbreviations. -i is for ignore case, | |
184 | and -E is for extended regexp. | |
185 | ||
1467b5fe JH |
186 | - "git log" learned --log-size to show the number of bytes in |
187 | the log message part of the output to help qgit. | |
188 | ||
99c7ff35 JH |
189 | - "git log --name-status" does not require you to give "-r" anymore. |
190 | As a general rule, Porcelain commands should recurse when showing | |
191 | diff. | |
192 | ||
193 | - "git format-patch --root A" can be used to format everything | |
194 | since the beginning up to A. This was supported with | |
195 | "git format-patch --root A A" for a long time, but was not | |
196 | properly documented. | |
197 | ||
14a4091c JH |
198 | - "git svn dcommit" retains local merge information. |
199 | ||
1467b5fe JH |
200 | - "git svnimport" allows an empty string to be specified as the |
201 | trunk/ directory. This is necessary to suck data from a SVN | |
202 | repository that doe not have trunk/ branches/ and tags/ organization | |
203 | at all. | |
204 | ||
14a4091c JH |
205 | - "git config" to set values also honors type flags like --bool |
206 | and --int. | |
207 | ||
208 | - core.quotepath configuration can be used to make textual git | |
209 | output to emit most of the characters in the path literally. | |
210 | ||
124d3e4c JH |
211 | - "git mergetool" chooses its backend more wisely, taking |
212 | notice of its environment such as use of X, Gnome/KDE, etc. | |
213 | ||
214 | - "gitweb" shows merge commits a lot nicer than before. The | |
215 | default view uses more compact --cc format, while the UI | |
216 | allows to choose normal diff with any parent. | |
217 | ||
218 | - snapshot files "gitweb" creates from a repository at | |
219 | $path/$project/.git are more useful. We use $project part | |
220 | in the filename, which we used to discard. | |
221 | ||
14a4091c | 222 | - "git cvsimport" creates lightweight tags; there is no |
124d3e4c JH |
223 | interesting information we can record in an annotated tag, |
224 | and the handcrafted ones the old code created was not | |
225 | properly formed anyway. | |
226 | ||
1467b5fe | 227 | - "git push" pretends that you immediately fetched back from |
556df5e9 JH |
228 | the remote by updating corresponding remote tracking |
229 | branches if you have any. | |
230 | ||
231 | - The diffstat given after a merge (or a pull) honors the | |
232 | color.diff configuration. | |
233 | ||
68d42298 JH |
234 | - "git commit --amend" is now compatible with various message source |
235 | options such as -m/-C/-c/-F. | |
236 | ||
1467b5fe | 237 | - "git apply --whitespace=strip" removes blank lines added at |
556df5e9 JH |
238 | the end of the file. |
239 | ||
1467b5fe | 240 | - "git fetch" over git native protocols with "-v" option shows |
14a4091c JH |
241 | connection status, and the IP address of the other end, to |
242 | help diagnosing problems. | |
556df5e9 | 243 | |
124d3e4c JH |
244 | - We used to have core.legacyheaders configuration, when |
245 | set to false, allowed git to write loose objects in a format | |
f70f988b | 246 | that mimics the format used by objects stored in packs. It |
124d3e4c JH |
247 | turns out that this was not so useful. Although we will |
248 | continue to read objects written in that format, we do not | |
249 | honor that configuration anymore and create loose objects in | |
250 | the legacy/traditional format. | |
251 | ||
252 | - "--find-copies-harder" option to diff family can now be | |
253 | spelled as "-C -C" for brevity. | |
556df5e9 | 254 | |
1467b5fe | 255 | - "git mailsplit" (hence "git am") can read from Maildir |
556df5e9 JH |
256 | formatted mailboxes. |
257 | ||
1467b5fe | 258 | - "git cvsserver" does not barf upon seeing "cvs login" |
556df5e9 JH |
259 | request. |
260 | ||
261 | - "pack-objects" honors "delta" attribute set in | |
262 | .gitattributes. It does not attempt to deltify blobs that | |
263 | come from paths with delta attribute set to false. | |
264 | ||
14a4091c JH |
265 | - "new-workdir" script (in contrib) can now be used with a |
266 | bare repository. | |
556df5e9 | 267 | |
1467b5fe | 268 | - "git mergetool" learned to use gvimdiff. |
124d3e4c JH |
269 | |
270 | - "gitview" (in contrib) has a better blame interface. | |
271 | ||
272 | - "git log" and friends did not handle a commit log message | |
273 | that is larger than 16kB; they do now. | |
274 | ||
275 | - "--pretty=oneline" output format for "git log" and friends | |
276 | deals with "malformed" commit log messages that have more | |
277 | than one lines in the first paragraph better. We used to | |
278 | show the first line, cutting the title at mid-sentence; we | |
279 | concatenate them into a single line and treat the result as | |
280 | "oneline". | |
556df5e9 | 281 | |
9dfdf14b | 282 | - "git p4import" has been demoted to contrib status. For |
1467b5fe JH |
283 | a superior option, checkout the "git p4" front end to |
284 | "git fast-import" (also in contrib). The man page and p4 | |
9dfdf14b JH |
285 | rpm have been removed as well. |
286 | ||
f48a203a JH |
287 | - "git mailinfo" (hence "am") now tries to see if the message |
288 | is in utf-8 first, instead of assuming iso-8859-1, if | |
289 | incoming e-mail does not say what encoding it is in. | |
290 | ||
556df5e9 JH |
291 | * Builds |
292 | ||
124d3e4c JH |
293 | - old-style function definitions (most notably, a function |
294 | without parameter defined with "func()", not "func(void)") | |
295 | have been eradicated. | |
556df5e9 | 296 | |
1467b5fe JH |
297 | - "git tag" and "git verify-tag" have been rewritten in C. |
298 | ||
556df5e9 JH |
299 | * Performance Tweaks |
300 | ||
1467b5fe | 301 | - "git pack-objects" avoids re-deltification cost by caching |
556df5e9 JH |
302 | small enough delta results it creates while looking for the |
303 | best delta candidates. | |
304 | ||
f70f988b | 305 | - "git pack-objects" learned a new heuristic to prefer delta |
61c3f908 JH |
306 | that is shallower in depth over the smallest delta |
307 | possible. This improves both overall packfile access | |
308 | performance and packfile density. | |
309 | ||
556df5e9 JH |
310 | - diff-delta code that is used for packing has been improved |
311 | to work better on big files. | |
312 | ||
313 | - when there are more than one pack files in the repository, | |
314 | the runtime used to try finding an object always from the | |
315 | newest packfile; it now tries the same packfile as we found | |
316 | the object requested the last time, which exploits the | |
317 | locality of references. | |
318 | ||
124d3e4c JH |
319 | - verifying pack contents done by "git fsck --full" got boost |
320 | by carefully choosing the order to verify objects in them. | |
321 | ||
1467b5fe JH |
322 | - "git read-tree -m" to read into an already populated index |
323 | has been optimized vastly. The effect of this can be seen | |
324 | when switching branches that have differences in only a | |
325 | handful paths. | |
326 | ||
99c7ff35 JH |
327 | - "git add paths..." and "git commit paths..." has also been |
328 | heavily optimized. | |
124d3e4c | 329 | |
556df5e9 JH |
330 | Fixes since v1.5.2 |
331 | ------------------ | |
332 | ||
333 | All of the fixes in v1.5.2 maintenance series are included in | |
334 | this release, unless otherwise noted. | |
335 | ||
336 | * Bugfixes | |
337 | ||
124d3e4c JH |
338 | - "gitweb" had trouble handling non UTF-8 text with older |
339 | Encode.pm Perl module. | |
556df5e9 | 340 | |
86bab961 JH |
341 | - "git svn" misparsed the data from the commits in the repository when |
342 | the user had "color.diff = true" in the configuration. This has been | |
343 | fixed. | |
344 | ||
345 | - There was a case where "git svn dcommit" clobbered changes made on the | |
346 | SVN side while committing multiple changes. | |
347 | ||
17437d45 JH |
348 | - "git-write-tree" had a bad interaction with racy-git avoidance and |
349 | gitattributes mechanisms. | |
350 | ||
99c7ff35 JH |
351 | - "git --bare command" overrode existing GIT_DIR setting and always |
352 | made it treat the current working directory as GIT_DIR. | |
353 | ||
e340d7d3 JH |
354 | - "git ls-files --error-unmatch" does not complain if you give the |
355 | same path pattern twice by mistake. | |
356 | ||
357 | - "git init" autodetected core.filemode but not core.symlinks, which | |
358 | made a new directory created automatically by "git clone" cumbersome | |
359 | to use on filesystems that require these configurations to be set. | |
360 | ||
361 | - "git log" family of commands behaved differently when run as "git | |
362 | log" (no pathspec) and as "git log --" (again, no pathspec). This | |
363 | inconsistency was introduced somewhere in v1.3.0 series but now has | |
364 | been corrected. | |
365 | ||
86bab961 | 366 | - "git rebase -m" incorrectly displayed commits that were skipped. |