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 14Deprecation notices 15------------------- 16 17 * Next feature release of git (this change is scheduled for v1.6.0) 18 will by default install dashed form of commands (e.g. "git-commit") 19 outside of users' normal $PATH, and will install only selected 20 commands ("git" itself, and "gitk") in $PATH. This implies: 21 22 - Using dashed form of git commands (e.g. "git-commit") from the 23 command line has been informally deprecated since early 2006, but 24 now it officially is, and will be removed in the future. Use 25 dashless form (e.g. "git commit") instead. 26 27 - Using dashed from from your scripts, without first prepending the 28 return value from "git --exec-path" to the scripts' PATH, has been 29 informally deprecated since early 2006, but now it officially is. 30 31 - Use of dashed form with "PATH=$(git --exec-path):$PATH; export 32 PATH" early in your script is not deprecated with this change. 33 34 Users are strongly encouraged to adjust their habits and scripts now 35 to prepare for this. 36 37 * The post-receive hook was introduced in March 2007 to supersede 38 post-update hook, primarily to overcome the command line length 39 limitation of the latter. Use of post-update hook will be deprecated 40 in future versions of git, starting from v1.6.0. 41 42 * "git lost-found" was deprecated in favor of "git fsck"'s --lost-found 43 option, and will be removed in the future. 44 45 * "git peek-remote" is deprecated, as "git ls-remote" was written in C 46 and works for all transports, and will be removed in the future. 47 48 * From v1.6.0, the repack.usedeltabaseoffset config option will default 49 to true, which will give denser packfile (i.e. more efficient storage). 50 The downside is that git older than version 1.4.4 will not be able 51 to directly use a repository packed using this setting. 52 53 * From v1.6.0, the pack.indexversion config option will default to 2, 54 which is slightly more efficient, and makes repacking more immune to 55 data corruptions. Git older than version 1.5.2 may revert to version 1 56 of the pack index with a manual "git index-pack" to be able to directly 57 access corresponding pack files. 58 59 60Updates since v1.5.3 61-------------------- 62 63 * Comes with much improved gitk. 64 65 * Comes with "git gui" 0.9.1 with i18n. 66 67 * gitk is now merged as a subdirectory of git.git project, in 68 preparation for its i18n. 69 70 * progress display from many commands are a lot nicer to the eye. 71 Transfer commands show throughput data. 72 73 * many commands that pay attention to per-directory .gitignore now do 74 so lazily, which makes the usual case go much faster. 75 76 * Output processing for '--pretty=format:<user format>' has been 77 optimized. 78 79 * Rename detection of diff family, while detecting exact matches, has 80 been greatly optimized. 81 82 * Rename detection of diff family tries to make more naturally looking 83 pairing. Earlier if more than one identical rename sources were 84 found in the preimage, they were picked pretty much at random. 85 86 * Value "true" for color.diff and color.status configuration used to 87 mean "always" (even when the output is not going to a terminal). 88 This has been corrected to mean the same thing as "auto". 89 90 * "git diff" Porcelain now respects diff.external configuration, which 91 is another way to specify GIT_EXTERNAL_DIFF. 92 93 * HTTP proxy can be specified per remote repository using 94 remote.*.httpproxy configuration, or global http.proxy configuration 95 variable. 96 97 * Various Perforce importer updates. 98 99 * Example update and post-receive hooks have been improved. 100 101 * Any command that wants to take a commit object name can now use 102 ":/string" syntax to name a commit. 103 104 * "git reset" is now built-in and its output can be squelched with -q. 105 106 * "git send-email" can optionally talk over ssmtp and use SMTP-AUTH. 107 108 * "git rebase" learned --whitespace option. 109 110 * In "git rebase", when you decide not to replay a particular change 111 after the command stopped with a conflict, you can say "git rebase 112 --skip" without first running "git reset --hard", as the command now 113 runs it for you. 114 115 * "git rebase --interactive" mode can now work on detached HEAD. 116 117 * Other minor to serious bugs in "git rebase -i" has been fixed. 118 119 * "git rebase" now detaches head during its operation, so after a 120 successful "git rebase" operation, the reflog entry branch@{1} for 121 the current branch points at the commit before the rebase was 122 started. 123 124 * "git rebase -i" also triggers rerere to help your repeated merges. 125 126 * "git merge" can call the "post-merge" hook. 127 128 * "git pack-objects" can optionally run deltification with multiple 129 threads. 130 131 * "git archive" can optionally substitute keywords in files marked with 132 export-subst attribute. 133 134 * "git cherry-pick" made a misguided attempt to repeat the original 135 command line in the generated log message, when told to cherry-pick a 136 commit by naming a tag that points at it. It does not anymore. 137 138 * "git for-each-ref" learned %(xxxdate:<dateformat>) syntax to show the 139 various date fields in different formats. 140 141 * "git gc --auto" is a low-impact way to automatically run a variant of 142 "git repack" that does not lose unreferenced objects (read: safer 143 than the usual one) after the user accumulates too many loose 144 objects. 145 146 * "git clean" has been rewritten in C. 147 148 * You need to explicitly set clean.requireForce to "false" to allow 149 "git clean" without -f to do any damage (lack of the configuration 150 variable used to mean "do not require -f option to lose untracked 151 files", but we now use the safer default). 152 153 * The kinds of whitespace errors "git diff" and "git apply" notice (and 154 fix) can be controlled via 'core.whitespace' configuration variable 155 and 'whitespace' attribute in .gitattributes file. 156 157 * "git push" learned --dry-run option to show what would happen if a 158 push is run. 159 160 * "git push" does not update a tracking ref on the local side when the 161 remote refused to update the corresponding ref. 162 163 * "git push" learned --mirror option. This is to push the local refs 164 one-to-one to the remote, and deletes refs from the remote that do 165 not exist anymore in the repository on the pushing side. 166 167 * "git push" can remove a corrupt ref at the remote site with the usual 168 ":ref" refspec. 169 170 * "git remote" knows --mirror mode. This is to set up configuration to 171 push into a remote repository to store local branch heads to the same 172 branch on the remote side, and remove branch heads locally removed 173 from local repository at the same time. Suitable for pushing into a 174 back-up repository. 175 176 * "git remote" learned "rm" subcommand. 177 178 * "git cvsserver" can be run via "git shell". 179 180 * "git cvsserver" acts more like receive-pack by running post-receive 181 and post-update hooks. 182 183 * "git am" and "git rebase" are far less verbose. 184 185 * "git pull" learned to pass --[no-]ff option to underlying "git 186 merge". 187 188 * "git pull --rebase" is a different way to integrate what you fetched 189 into your current branch. 190 191 * "git fast-export" produces datastream that can be fed to fast-import 192 to reproduce the history recorded in a git repository. 193 194 * "git add -i" takes pathspecs to limit the set of files to work on. 195 196 * "git add -p" is a short-hand to go directly to the selective patch 197 subcommand in the interactive command loop and to exit when done. 198 199 * "git add -i" UI has been colorized. 200 201 * "git commit --allow-empty" allows you to create a single-parent 202 commit that records the same tree as its parent, overriding the usual 203 safety valve. 204 205 * "git commit --amend" can amend a merge that does not change the tree 206 from its first parent. 207 208 * "git commit" has been rewritten in C. 209 210 * "git stash random-text" does not create a new stash anymore. It was 211 a UI mistake. Use "git stash save random-text", or "git stash" 212 (without extra args) for that. 213 214 * "git prune --expire <time>" can exempt young loose objects from 215 getting pruned. 216 217 * "git branch --contains <commit>" can list branches that are 218 descendants of a given commit. 219 220 * "git log" learned --early-output option to help interactive GUI 221 implementations. 222 223 * "git bisect" learned "skip" action to mark untestable commits. 224 225 * "git bisect visualize" learned a shorter synonym "git bisect view". 226 227 * "git bisect visualize" runs "git log" in a non-windowed 228 environments. It also can be told what command to run (e.g. "git 229 bisect visualize tig"). 230 231 * "git format-patch" learned "format.numbered" configuration variable 232 to automatically turn --numbered option on when more than one commits 233 are formatted. 234 235 * "git ls-files" learned "--exclude-standard" to use the canned set of 236 exclude files. 237 238 * "git tag -a -f existing" begins the editor session using the existing 239 annotation message. 240 241 * "git tag -m one -m bar" (multiple -m options) behaves similarly to 242 "git commit"; the parameters to -m options are formatted as separate 243 paragraphs. 244 245 * The format "git show" outputs an annotated tag has been updated to 246 include "Tagger: " and "Date: " lines from the tag itself. Strictly 247 speaking this is a backward incompatible change, but this is a 248 reasonable usability fix and people's script shouldn't have been 249 relying on the exact output from "git show" Porcelain anyway. 250 251 * "git cvsexportcommit" learned -w option to specify and switch to the 252 CVS working directory. 253 254 * "git checkout" from a subdirectory learned to use "../path" to allow 255 checking out a path outside the current directory without cd'ing up. 256 257 * "git checkout" from and to detached HEAD leaves a bit more 258 information in the reflog. 259 260 * "git send-email --dry-run" shows full headers for easier diagnosis. 261 262 * "git merge-ours" is now built-in. 263 264 * "git svn" learned "info" and "show-externals" subcommands. 265 266 * "git svn" run from a subdirectory failed to read settings from the 267 .git/config. 268 269 * "git svn" learned --use-log-author option, which picks up more 270 descriptive name from From: and Signed-off-by: lines in the commit 271 message. 272 273 * "git svn" wasted way too much disk to record revision mappings 274 between svn and git; a new representation that is much more compact 275 for this information has been introduced to correct this. 276 277 * "git svn" left temporary index files it used without cleaning them 278 up; this was corrected. 279 280 * "git status" from a subdirectory now shows relative paths, which 281 makes copy-and-pasting for git-checkout/git-add/git-rm easier. The 282 traditional behaviour to show the full path relative to the top of 283 the work tree can be had by setting status.relativepaths 284 configuration variable to true. 285 286 * "git blame" kept text for each annotated revision in core needlessly; 287 this has been corrected. 288 289 * "git shortlog" learned to default to HEAD when the standard input is 290 a terminal and the user did not give any revision parameter. 291 292 * "git shortlog" learned "-e" option to show e-mail addresses as well as 293 authors' names. 294 295 * "git help" learned "-w" option to show documentation in browsers. 296 297 * In addition there are quite a few internal clean-ups. Notably 298 299 - many fork/exec have been replaced with run-command API, 300 brought from the msysgit effort. 301 302 - introduction and more use of the option parser API. 303 304 - enhancement and more use of the strbuf API. 305 306 307Fixes since v1.5.3 308------------------ 309 310All of the fixes in v1.5.3 maintenance series are included in 311this release, unless otherwise noted. 312 313These fixes are only in v1.5.4 and not backported to v1.5.3 maintenance 314series. 315 316 * The way "git diff --check" behaves is much more consistent with the way 317 "git apply --whitespace=warn" works. 318 319 * "git svn" talking with the SVN over http will correctly quote branch 320 and project names. 321 322 * "git config" did not work correctly on platforms that define 323 REG_NOMATCH to an even number. 324 325-- 326exec >/var/tmp/1 327O=v1.5.4-rc0-85-gdbedf97 328echo O=`git describe refs/heads/master` 329git shortlog --no-merges $O..refs/heads/master ^refs/heads/maint