1GIT v1.5.4 Release Notes 2======================== 3 4Removal 5------- 6 7 * "git svnimport" was removed in favor of "git svn". It is still there 8 in the source tree (contrib/examples) but unsupported. 9 10 * As git-commit and git-status have been rewritten, "git runstatus" 11 helper script lost all its users and has been removed. 12 13 14Temporarily disabled 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. 25 26 27Deprecation notices 28------------------- 29 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: 34 35 - Using dashed forms of git commands (e.g. "git-commit") from the 36 command line has been informally deprecated since early 2006, but 37 now it officially is, and will be removed in the future. Use 38 dash-less forms (e.g. "git commit") instead. 39 40 - Using dashed forms from your scripts, without first prepending the 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 44 - Use of dashed forms with "PATH=$(git --exec-path):$PATH; export 45 PATH" early in your script is not deprecated with this change. 46 47 Users are strongly encouraged to adjust their habits and scripts now 48 to prepare for this change. 49 50 * The post-receive hook was introduced in March 2007 to supersede 51 the post-update hook, primarily to overcome the command line length 52 limitation of the latter. Use of post-update hook will be deprecated 53 in future versions of git, starting from v1.6.0. 54 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 59 and works for all transports; "git peek-remote" will be removed in 60 the future. 61 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 66 * From v1.6.0, the repack.usedeltabaseoffset config option will default 67 to true, which will give denser packfiles (i.e. more efficient storage). 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 71 * From v1.6.0, the pack.indexversion config option will default to 2, 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 77 78Updates since v1.5.3 79-------------------- 80 81 * Comes with much improved gitk, with i18n. 82 83 * Comes with git-gui 0.9.2 with i18n. 84 85 * gitk is now merged as a subdirectory of git.git project, in 86 preparation for its i18n. 87 88 * progress displays from many commands are a lot nicer to the eye. 89 Transfer commands show throughput data. 90 91 * many commands that pay attention to per-directory .gitignore now do 92 so lazily, which makes the usual case go much faster. 93 94 * Output processing for '--pretty=format:<user format>' has been 95 optimized. 96 97 * Rename detection of diff family while detecting exact matches has 98 been greatly optimized. 99 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. 103 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 108 * "git diff" Porcelain now respects diff.external configuration, which 109 is another way to specify GIT_EXTERNAL_DIFF. 110 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 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 132 * "git reset" is now built-in and its output can be squelched with -q. 133 134 * "git reset --hard" does not make any sense in a bare 135 repository, but did not error out; fixed. 136 137 * "git send-email" can optionally talk over ssmtp and use SMTP-AUTH. 138 139 * "git rebase" learned --whitespace option. 140 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 143 --skip" without first running "git reset --hard", as the command now 144 runs it for you. 145 146 * "git rebase --interactive" mode can now work on detached HEAD. 147 148 * Other minor to serious bugs in "git rebase -i" have been fixed. 149 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 157 * "git merge" can call the "post-merge" hook. 158 159 * "git pack-objects" can optionally run deltification with multiple 160 threads. 161 162 * "git archive" can optionally substitute keywords in files marked with 163 export-subst attribute. 164 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. 168 169 * "git for-each-ref" learned %(xxxdate:<date-format>) syntax to show the 170 various date fields in different formats. 171 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. 176 177 * "git clean" has been rewritten in C. 178 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). 183 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 188 * "git push" learned --dry-run option to show what would happen if a 189 push is run. 190 191 * "git push" does not update a tracking ref on the local side when the 192 remote refused to update the corresponding ref. 193 194 * "git push" learned --mirror option. This is to push the local refs 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 198 * "git push" can remove a corrupt ref at the remote site with the usual 199 ":ref" refspec. 200 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. 208 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. 212 213 * "git cvsserver" acts more like receive-pack by running post-receive 214 and post-update hooks. 215 216 * "git am" and "git rebase" are far less verbose. 217 218 * "git pull" learned to pass --[no-]ff option to underlying "git 219 merge". 220 221 * "git pull --rebase" is a different way to integrate what you fetched 222 into your current branch. 223 224 * "git fast-export" produces data-stream that can be fed to fast-import 225 to reproduce the history recorded in a git repository. 226 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 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. 236 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 244 * "git commit" used to unconditionally strip comment lines that 245 began with '#' and removed excess blank lines. This behavior has 246 been made configurable. 247 248 * "git commit" has been rewritten in C. 249 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 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 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. 264 265 * "git log" learned --early-output option to help interactive GUI 266 implementations. 267 268 * "git bisect" learned "skip" action to mark untestable commits. 269 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 276 * "git format-patch" learned "format.numbered" configuration variable 277 to automatically turn --numbered option on when more than one commits 278 are formatted. 279 280 * "git ls-files" learned "--exclude-standard" to use the canned set of 281 exclude files. 282 283 * "git tag -a -f existing" begins the editor session using the existing 284 annotation message. 285 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. 289 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 293 reasonable usability fix and people's scripts shouldn't have been 294 relying on the exact output from "git show" Porcelain anyway. 295 296 * "git cvsimport" did not notice errors from underlying "cvsps" 297 and produced a corrupt import silently. 298 299 * "git cvsexportcommit" learned -w option to specify and switch to the 300 CVS working directory. 301 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. 304 305 * "git checkout" from and to detached HEAD leaves a bit more 306 information in the reflog. 307 308 * "git send-email --dry-run" shows full headers for easier diagnosis. 309 310 * "git merge-ours" is now built-in. 311 312 * "git svn" learned "info" and "show-externals" subcommands. 313 314 * "git svn" run from a subdirectory failed to read settings from the 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. 320 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 325 * "git svn" left temporary index files it used without cleaning them 326 up; this was corrected. 327 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 330 traditional behavior to show the full path relative to the top of 331 the work tree can be had by setting status.relativepaths 332 configuration variable to false. 333 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 345 * In addition there are quite a few internal clean-ups. Notably: 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 354 * Makefile tweaks to support HP-UX is in. 355 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 362These fixes are only in v1.5.4 and not backported to v1.5.3 maintenance 363series. 364 365 * The way "git diff --check" behaves is much more consistent with the way 366 "git apply --whitespace=warn" works. 367 368 * "git svn" talking with the SVN over HTTP will correctly quote branch 369 and project names. 370 371 * "git config" did not work correctly on platforms that define 372 REG_NOMATCH to an even number. 373 374 * Recent versions of AsciiDoc 8 has a change to break our 375 documentation; a workaround has been implemented. 376 377 * "git diff --color-words" colored context lines in a wrong color.