Junio C Hamano | fd46896 | 2007-02-14 23:45:04 | [diff] [blame] | 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 | |
Junio C Hamano | 3d5b41f | 2007-03-26 02:33:41 | [diff] [blame] | 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. |
Junio C Hamano | fd46896 | 2007-02-14 23:45:04 | [diff] [blame] | 22 | |
| 23 | - "git diff" learned --ignore-space-at-eol. This is a weaker |
| 24 | form of --ignore-space-change. |
| 25 | |
Junio C Hamano | 6ac2f14 | 2007-03-01 01:24:56 | [diff] [blame] | 26 | - "git diff --no-index pathA pathB" can be used as diff |
| 27 | replacement with git specific enhancements. |
| 28 | |
Junio C Hamano | b8c5128 | 2007-03-19 10:43:30 | [diff] [blame] | 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 | |
Junio C Hamano | 3d5b41f | 2007-03-26 02:33:41 | [diff] [blame] | 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 | |
Junio C Hamano | b8c5128 | 2007-03-19 10:43:30 | [diff] [blame] | 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 | |
Junio C Hamano | 89d4e0f | 2007-02-18 00:34:59 | [diff] [blame] | 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 | |
Junio C Hamano | 6ac2f14 | 2007-03-01 01:24:56 | [diff] [blame] | 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 | |
Junio C Hamano | b8c5128 | 2007-03-19 10:43:30 | [diff] [blame] | 69 | - "git mergetool" can help 3-way file-level conflict |
| 70 | resolution with your favorite graphical merge tools. |
| 71 | |
Junio C Hamano | ff63639 | 2007-03-05 09:20:11 | [diff] [blame] | 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 | |
Junio C Hamano | 3d5b41f | 2007-03-26 02:33:41 | [diff] [blame] | 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 | |
Junio C Hamano | 3aa8182 | 2007-03-30 08:52:26 | [diff] [blame] | 89 | - "git log" family learned a new traversal option --first-parent, |
| 90 | which does what the name suggests. |
| 91 | |
Junio C Hamano | 6ac2f14 | 2007-03-01 01:24:56 | [diff] [blame] | 92 | |
Junio C Hamano | 5125e96 | 2007-04-03 02:46:11 | [diff] [blame] | 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. |
Junio C Hamano | fd46896 | 2007-02-14 23:45:04 | [diff] [blame] | 98 | |
Junio C Hamano | b8c5128 | 2007-03-19 10:43:30 | [diff] [blame] | 99 | - "git fsck" does not barf on corrupt loose objects. |
| 100 | |
Junio C Hamano | 3aa8182 | 2007-03-30 08:52:26 | [diff] [blame] | 101 | - "git rm" does not remove newly added files without -f. |
| 102 | |
Junio C Hamano | b8c5128 | 2007-03-19 10:43:30 | [diff] [blame] | 103 | - "git archimport" allows remapping when coming up with git |
| 104 | branch names from arch names. |
| 105 | |
Junio C Hamano | 6ac2f14 | 2007-03-01 01:24:56 | [diff] [blame] | 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 |
Junio C Hamano | a3fd83c | 2007-03-02 10:34:36 | [diff] [blame] | 117 | allow users to explicitly override this heuristic based on |
Junio C Hamano | 6ac2f14 | 2007-03-01 01:24:56 | [diff] [blame] | 118 | paths. |
| 119 | |
Junio C Hamano | 5125e96 | 2007-04-03 02:46:11 | [diff] [blame] | 120 | - The behavior of 'git-apply', when run in a subdirectory, |
Junio C Hamano | 6ac2f14 | 2007-03-01 01:24:56 | [diff] [blame] | 121 | without --index nor --cached were inconsistent with that of |
| 122 | the command with these options. This was fixed to match the |
Junio C Hamano | 5125e96 | 2007-04-03 02:46:11 | [diff] [blame] | 123 | behavior with --index. A patch that is meant to be applied |
Junio C Hamano | 6ac2f14 | 2007-03-01 01:24:56 | [diff] [blame] | 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 | |
Junio C Hamano | 89d4e0f | 2007-02-18 00:34:59 | [diff] [blame] | 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). |
Junio C Hamano | fd46896 | 2007-02-14 23:45:04 | [diff] [blame] | 133 | |
Junio C Hamano | 6ac2f14 | 2007-03-01 01:24:56 | [diff] [blame] | 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 | |
Junio C Hamano | ff63639 | 2007-03-05 09:20:11 | [diff] [blame] | 156 | - "git fetch" (hence "git clone" and "git pull") are less |
| 157 | noisy when the output does not go to tty. |
| 158 | |
Junio C Hamano | b8c5128 | 2007-03-19 10:43:30 | [diff] [blame] | 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 |
Junio C Hamano | 5125e96 | 2007-04-03 02:46:11 | [diff] [blame] | 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. |
Junio C Hamano | b8c5128 | 2007-03-19 10:43:30 | [diff] [blame] | 169 | |
| 170 | - send-email learned configurable bcc and chain-reply-to. |
| 171 | |
Junio C Hamano | 3d5b41f | 2007-03-26 02:33:41 | [diff] [blame] | 172 | - "git remote show $remote" also talks about branches that |
| 173 | would be pushed if you run "git push remote". |
| 174 | |
Junio C Hamano | 5125e96 | 2007-04-03 02:46:11 | [diff] [blame] | 175 | - Using objects from packs is now seriously optimized by clever |
Junio C Hamano | b8c5128 | 2007-03-19 10:43:30 | [diff] [blame] | 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 | |
Junio C Hamano | fd46896 | 2007-02-14 23:45:04 | [diff] [blame] | 183 | * Hooks |
| 184 | |
Junio C Hamano | 3d5b41f | 2007-03-26 02:33:41 | [diff] [blame] | 185 | - The part to send out notification e-mails was removed from |
| 186 | the sample update hook, as it was not an appropriate place |
Junio C Hamano | 5125e96 | 2007-04-03 02:46:11 | [diff] [blame] | 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/. |
Junio C Hamano | fd46896 | 2007-02-14 23:45:04 | [diff] [blame] | 189 | |
Junio C Hamano | b8c5128 | 2007-03-19 10:43:30 | [diff] [blame] | 190 | |
| 191 | * Others |
| 192 | |
| 193 | - git-revert, git-gc and git-cherry-pick are now built-ins. |
| 194 | |
Junio C Hamano | 4c6aa8a | 2007-04-04 08:56:37 | [diff] [blame] | 195 | Fixes since v1.5.0 |
| 196 | ------------------ |
Junio C Hamano | b8c5128 | 2007-03-19 10:43:30 | [diff] [blame] | 197 | |
Junio C Hamano | 4c6aa8a | 2007-04-04 08:56:37 | [diff] [blame] | 198 | These are all in v1.5.0.x series. |
Junio C Hamano | 6ac2f14 | 2007-03-01 01:24:56 | [diff] [blame] | 199 | |
Junio C Hamano | 4c6aa8a | 2007-04-04 08:56:37 | [diff] [blame] | 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. |