]> git.ipfire.org Git - thirdparty/git.git/blame - Documentation/RelNotes-1.5.4.txt
Merge branch 'tf/diff-whitespace-incomplete-line' into maint
[thirdparty/git.git] / Documentation / RelNotes-1.5.4.txt
CommitLineData
1e61b764
JH
1GIT v1.5.4 Release Notes
2========================
3
1c46ab1f
JH
4Removal
5-------
6
afc67036
JH
7 * "git svnimport" was removed in favor of "git svn". It is still there
8 in the source tree (contrib/examples) but unsupported.
1c46ab1f 9
7680087e
JH
10 * As git-commit and git-status have been rewritten, "git runstatus"
11 helper script lost all its users and has been removed.
12
4f5f998f 13
bf5aeb15 14Temporarily disabled
4f5f998f
JH
15--------------------
16
17 * "git http-push" is known not to work well with cURL library older
18 than 7.16, and we had reports of repository corruption. It is
19 disabled on such platforms for now. Unfortunately, 1.5.3.8 shares
20 the same issue. In other words, this does not mean you will be
21 fine if you stick to an older git release. For now, please do not
22 use http-push from older git with cURL older than 7.16 if you
23 value your data. A proper fix will hopefully materialize in
24 later versions.
ce33288e 25
1c46ab1f 26
2221a675
JH
27Deprecation notices
28-------------------
29
bf5aeb15
JH
30 * From v1.6.0, git will by default install dashed form of commands
31 (e.g. "git-commit") outside of users' normal $PATH, and will install
32 only selected commands ("git" itself, and "gitk") in $PATH. This
33 implies:
2221a675 34
6a7f14c4 35 - Using dashed forms of git commands (e.g. "git-commit") from the
2221a675
JH
36 command line has been informally deprecated since early 2006, but
37 now it officially is, and will be removed in the future. Use
c3c13529 38 dash-less forms (e.g. "git commit") instead.
2221a675 39
6a7f14c4 40 - Using dashed forms from your scripts, without first prepending the
2221a675
JH
41 return value from "git --exec-path" to the scripts' PATH, has been
42 informally deprecated since early 2006, but now it officially is.
43
6a7f14c4 44 - Use of dashed forms with "PATH=$(git --exec-path):$PATH; export
2221a675
JH
45 PATH" early in your script is not deprecated with this change.
46
bf5aeb15
JH
47 Users are strongly encouraged to adjust their habits and scripts now
48 to prepare for this change.
2221a675
JH
49
50 * The post-receive hook was introduced in March 2007 to supersede
6a7f14c4 51 the post-update hook, primarily to overcome the command line length
2221a675 52 limitation of the latter. Use of post-update hook will be deprecated
74f6b03c 53 in future versions of git, starting from v1.6.0.
2221a675 54
1c46ab1f
JH
55 * "git lost-found" was deprecated in favor of "git fsck"'s --lost-found
56 option, and will be removed in the future.
57
58 * "git peek-remote" is deprecated, as "git ls-remote" was written in C
6a7f14c4
JK
59 and works for all transports; "git peek-remote" will be removed in
60 the future.
1c46ab1f 61
5c66d0d4
JH
62 * "git repo-config" which was an old name for "git config" command
63 has been supported without being advertised for a long time. The
64 next feature release will remove it.
65
74f6b03c 66 * From v1.6.0, the repack.usedeltabaseoffset config option will default
6a7f14c4 67 to true, which will give denser packfiles (i.e. more efficient storage).
792c1583
NP
68 The downside is that git older than version 1.4.4 will not be able
69 to directly use a repository packed using this setting.
70
74f6b03c 71 * From v1.6.0, the pack.indexversion config option will default to 2,
792c1583
NP
72 which is slightly more efficient, and makes repacking more immune to
73 data corruptions. Git older than version 1.5.2 may revert to version 1
74 of the pack index with a manual "git index-pack" to be able to directly
75 access corresponding pack files.
76
2221a675 77
1e61b764
JH
78Updates since v1.5.3
79--------------------
80
145d0824 81 * Comes with much improved gitk, with i18n.
79f3368d 82
bf5aeb15 83 * Comes with git-gui 0.9.2 with i18n.
afc67036
JH
84
85 * gitk is now merged as a subdirectory of git.git project, in
86 preparation for its i18n.
92b7ba16 87
6a7f14c4 88 * progress displays from many commands are a lot nicer to the eye.
1c46ab1f 89 Transfer commands show throughput data.
92b7ba16 90
1c46ab1f
JH
91 * many commands that pay attention to per-directory .gitignore now do
92 so lazily, which makes the usual case go much faster.
92b7ba16 93
1c46ab1f
JH
94 * Output processing for '--pretty=format:<user format>' has been
95 optimized.
2221a675 96
6a7f14c4 97 * Rename detection of diff family while detecting exact matches has
1c46ab1f 98 been greatly optimized.
c238dad4 99
6a7f14c4
JK
100 * Rename detection of diff family tries to make more natural looking
101 pairing. Earlier, if multiple identical rename sources were
102 found in the preimage, the source used was picked pretty much at random.
2221a675 103
afc67036
JH
104 * Value "true" for color.diff and color.status configuration used to
105 mean "always" (even when the output is not going to a terminal).
106 This has been corrected to mean the same thing as "auto".
107
74f6b03c
JH
108 * "git diff" Porcelain now respects diff.external configuration, which
109 is another way to specify GIT_EXTERNAL_DIFF.
110
bbff2dce
JH
111 * "git diff" can be told to use different prefixes other than
112 "a/" and "b/" e.g. "git diff --src-prefix=l/ --dst-prefix=k/".
113
114 * "git diff" sometimes did not quote paths with funny
115 characters properly.
116
117 * "git log" (and any revision traversal commands) misbehaved
118 when --diff-filter is given but was not asked to actually
119 produce diff.
120
afc67036
JH
121 * HTTP proxy can be specified per remote repository using
122 remote.*.httpproxy configuration, or global http.proxy configuration
123 variable.
124
125 * Various Perforce importer updates.
126
127 * Example update and post-receive hooks have been improved.
128
129 * Any command that wants to take a commit object name can now use
130 ":/string" syntax to name a commit.
131
1c46ab1f 132 * "git reset" is now built-in and its output can be squelched with -q.
1e61b764 133
d6da3cde
JH
134 * "git reset --hard" does not make any sense in a bare
135 repository, but did not error out; fixed.
136
1c46ab1f 137 * "git send-email" can optionally talk over ssmtp and use SMTP-AUTH.
bc12651b 138
1c46ab1f 139 * "git rebase" learned --whitespace option.
bc12651b 140
1c46ab1f
JH
141 * In "git rebase", when you decide not to replay a particular change
142 after the command stopped with a conflict, you can say "git rebase
92b7ba16 143 --skip" without first running "git reset --hard", as the command now
e0fda6ab 144 runs it for you.
92b7ba16 145
afc67036
JH
146 * "git rebase --interactive" mode can now work on detached HEAD.
147
6a7f14c4 148 * Other minor to serious bugs in "git rebase -i" have been fixed.
74f6b03c 149
afc67036
JH
150 * "git rebase" now detaches head during its operation, so after a
151 successful "git rebase" operation, the reflog entry branch@{1} for
152 the current branch points at the commit before the rebase was
153 started.
154
155 * "git rebase -i" also triggers rerere to help your repeated merges.
156
1c46ab1f 157 * "git merge" can call the "post-merge" hook.
bc12651b 158
1c46ab1f
JH
159 * "git pack-objects" can optionally run deltification with multiple
160 threads.
bc12651b 161
1c46ab1f 162 * "git archive" can optionally substitute keywords in files marked with
bc12651b
JH
163 export-subst attribute.
164
1c46ab1f
JH
165 * "git cherry-pick" made a misguided attempt to repeat the original
166 command line in the generated log message, when told to cherry-pick a
167 commit by naming a tag that points at it. It does not anymore.
79f3368d 168
c3c13529 169 * "git for-each-ref" learned %(xxxdate:<date-format>) syntax to show the
1c46ab1f 170 various date fields in different formats.
79f3368d 171
1c46ab1f
JH
172 * "git gc --auto" is a low-impact way to automatically run a variant of
173 "git repack" that does not lose unreferenced objects (read: safer
174 than the usual one) after the user accumulates too many loose
175 objects.
dee1b1ea 176
afc67036
JH
177 * "git clean" has been rewritten in C.
178
1c46ab1f
JH
179 * You need to explicitly set clean.requireForce to "false" to allow
180 "git clean" without -f to do any damage (lack of the configuration
181 variable used to mean "do not require -f option to lose untracked
182 files", but we now use the safer default).
92b7ba16 183
591aa253
JH
184 * The kinds of whitespace errors "git diff" and "git apply" notice (and
185 fix) can be controlled via 'core.whitespace' configuration variable
186 and 'whitespace' attribute in .gitattributes file.
187
1c46ab1f
JH
188 * "git push" learned --dry-run option to show what would happen if a
189 push is run.
79f3368d 190
1c46ab1f 191 * "git push" does not update a tracking ref on the local side when the
92b7ba16
JH
192 remote refused to update the corresponding ref.
193
1c46ab1f 194 * "git push" learned --mirror option. This is to push the local refs
92b7ba16
JH
195 one-to-one to the remote, and deletes refs from the remote that do
196 not exist anymore in the repository on the pushing side.
197
afc67036
JH
198 * "git push" can remove a corrupt ref at the remote site with the usual
199 ":ref" refspec.
200
1c46ab1f
JH
201 * "git remote" knows --mirror mode. This is to set up configuration to
202 push into a remote repository to store local branch heads to the same
203 branch on the remote side, and remove branch heads locally removed
204 from local repository at the same time. Suitable for pushing into a
205 back-up repository.
206
207 * "git remote" learned "rm" subcommand.
79f3368d 208
cdd85915
JS
209 * "git cvsserver" can be run via "git shell". Also, "cvs" is
210 recognized as a synonym for "git cvsserver", so that CVS users
211 can be switched to git just by changing their login shell.
79f3368d 212
9758ecde
JH
213 * "git cvsserver" acts more like receive-pack by running post-receive
214 and post-update hooks.
215
1c46ab1f 216 * "git am" and "git rebase" are far less verbose.
79f3368d 217
1c46ab1f
JH
218 * "git pull" learned to pass --[no-]ff option to underlying "git
219 merge".
79f3368d 220
afc67036
JH
221 * "git pull --rebase" is a different way to integrate what you fetched
222 into your current branch.
223
c3c13529 224 * "git fast-export" produces data-stream that can be fed to fast-import
afc67036
JH
225 to reproduce the history recorded in a git repository.
226
9758ecde
JH
227 * "git add -i" takes pathspecs to limit the set of files to work on.
228
229 * "git add -p" is a short-hand to go directly to the selective patch
230 subcommand in the interactive command loop and to exit when done.
231
b2e62a7d
JH
232 * "git add -i" UI has been colorized. The interactive prompt
233 and menu can be colored by setting color.interactive
234 configuration. The diff output (including the hunk picker)
235 are colored with color.diff configuration.
9758ecde 236
afc67036
JH
237 * "git commit --allow-empty" allows you to create a single-parent
238 commit that records the same tree as its parent, overriding the usual
239 safety valve.
240
241 * "git commit --amend" can amend a merge that does not change the tree
242 from its first parent.
243
bbff2dce 244 * "git commit" used to unconditionally strip comment lines that
bf5aeb15
JH
245 began with '#' and removed excess blank lines. This behavior has
246 been made configurable.
bbff2dce 247
9758ecde
JH
248 * "git commit" has been rewritten in C.
249
afc67036
JH
250 * "git stash random-text" does not create a new stash anymore. It was
251 a UI mistake. Use "git stash save random-text", or "git stash"
252 (without extra args) for that.
253
b2e62a7d
JH
254 * "git stash clear extra-text" does not clear the whole stash
255 anymore. It is tempting to expect "git stash clear stash@{2}"
256 to drop only a single named stash entry, and it is rude to
257 discard everything when that is asked (but not provided).
258
afc67036
JH
259 * "git prune --expire <time>" can exempt young loose objects from
260 getting pruned.
261
262 * "git branch --contains <commit>" can list branches that are
263 descendants of a given commit.
1e61b764 264
1c46ab1f
JH
265 * "git log" learned --early-output option to help interactive GUI
266 implementations.
ea559605 267
1c46ab1f 268 * "git bisect" learned "skip" action to mark untestable commits.
c238dad4 269
591aa253
JH
270 * "git bisect visualize" learned a shorter synonym "git bisect view".
271
272 * "git bisect visualize" runs "git log" in a non-windowed
273 environments. It also can be told what command to run (e.g. "git
274 bisect visualize tig").
275
1c46ab1f
JH
276 * "git format-patch" learned "format.numbered" configuration variable
277 to automatically turn --numbered option on when more than one commits
278 are formatted.
c238dad4 279
1c46ab1f
JH
280 * "git ls-files" learned "--exclude-standard" to use the canned set of
281 exclude files.
dee1b1ea 282
1c46ab1f
JH
283 * "git tag -a -f existing" begins the editor session using the existing
284 annotation message.
dee1b1ea 285
1c46ab1f
JH
286 * "git tag -m one -m bar" (multiple -m options) behaves similarly to
287 "git commit"; the parameters to -m options are formatted as separate
288 paragraphs.
dee1b1ea 289
74f6b03c
JH
290 * The format "git show" outputs an annotated tag has been updated to
291 include "Tagger: " and "Date: " lines from the tag itself. Strictly
292 speaking this is a backward incompatible change, but this is a
6a7f14c4 293 reasonable usability fix and people's scripts shouldn't have been
74f6b03c
JH
294 relying on the exact output from "git show" Porcelain anyway.
295
bbff2dce
JH
296 * "git cvsimport" did not notice errors from underlying "cvsps"
297 and produced a corrupt import silently.
298
1c46ab1f
JH
299 * "git cvsexportcommit" learned -w option to specify and switch to the
300 CVS working directory.
dee1b1ea 301
1c46ab1f
JH
302 * "git checkout" from a subdirectory learned to use "../path" to allow
303 checking out a path outside the current directory without cd'ing up.
ea559605 304
591aa253
JH
305 * "git checkout" from and to detached HEAD leaves a bit more
306 information in the reflog.
307
1c46ab1f 308 * "git send-email --dry-run" shows full headers for easier diagnosis.
92b7ba16 309
1c46ab1f 310 * "git merge-ours" is now built-in.
92b7ba16 311
2221a675
JH
312 * "git svn" learned "info" and "show-externals" subcommands.
313
1c46ab1f 314 * "git svn" run from a subdirectory failed to read settings from the
2221a675
JH
315 .git/config.
316
317 * "git svn" learned --use-log-author option, which picks up more
318 descriptive name from From: and Signed-off-by: lines in the commit
319 message.
92b7ba16 320
1e8df762
JH
321 * "git svn" wasted way too much disk to record revision mappings
322 between svn and git; a new representation that is much more compact
323 for this information has been introduced to correct this.
324
7680087e
JH
325 * "git svn" left temporary index files it used without cleaning them
326 up; this was corrected.
327
591aa253
JH
328 * "git status" from a subdirectory now shows relative paths, which
329 makes copy-and-pasting for git-checkout/git-add/git-rm easier. The
bf5aeb15 330 traditional behavior to show the full path relative to the top of
591aa253 331 the work tree can be had by setting status.relativepaths
6a7f14c4 332 configuration variable to false.
2221a675 333
1e8df762
JH
334 * "git blame" kept text for each annotated revision in core needlessly;
335 this has been corrected.
336
337 * "git shortlog" learned to default to HEAD when the standard input is
338 a terminal and the user did not give any revision parameter.
339
340 * "git shortlog" learned "-e" option to show e-mail addresses as well as
341 authors' names.
342
343 * "git help" learned "-w" option to show documentation in browsers.
344
c3c13529 345 * In addition there are quite a few internal clean-ups. Notably:
c238dad4
JH
346
347 - many fork/exec have been replaced with run-command API,
348 brought from the msysgit effort.
349
350 - introduction and more use of the option parser API.
351
352 - enhancement and more use of the strbuf API.
353
bf5aeb15 354 * Makefile tweaks to support HP-UX is in.
c238dad4 355
1e61b764
JH
356Fixes since v1.5.3
357------------------
358
359All of the fixes in v1.5.3 maintenance series are included in
360this release, unless otherwise noted.
361
1c46ab1f
JH
362These fixes are only in v1.5.4 and not backported to v1.5.3 maintenance
363series.
dee1b1ea 364
7680087e
JH
365 * The way "git diff --check" behaves is much more consistent with the way
366 "git apply --whitespace=warn" works.
367
c3c13529 368 * "git svn" talking with the SVN over HTTP will correctly quote branch
1c46ab1f 369 and project names.
ea559605 370
9758ecde
JH
371 * "git config" did not work correctly on platforms that define
372 REG_NOMATCH to an even number.
373
b2e62a7d
JH
374 * Recent versions of AsciiDoc 8 has a change to break our
375 documentation; a workaround has been implemented.
376
ce33288e 377 * "git diff --color-words" colored context lines in a wrong color.