| GIT v1.5.1 Release Notes | 
 | ======================== | 
 |  | 
 | Updates since v1.5.0 | 
 | -------------------- | 
 |  | 
 | * Deprecated commands and options. | 
 |  | 
 |   - git-diff-stages and git-resolve have been removed. | 
 |  | 
 | * New commands and options. | 
 |  | 
 |   - "git log" and friends take --reverse, which instructs them | 
 |     to give their output in the order opposite from their usual. | 
 |     They typically output from new to old, but with this option | 
 |     their output would read from old to new.  "git shortlog" | 
 |     usually lists older commits first, but with this option, | 
 |     they are shown from new to old. | 
 |  | 
 |   - "git log --pretty=format:<string>" to allow more flexible | 
 |     custom log output. | 
 |  | 
 |   - "git diff" learned --ignore-space-at-eol.  This is a weaker | 
 |     form of --ignore-space-change. | 
 |  | 
 |   - "git diff --no-index pathA pathB" can be used as diff | 
 |     replacement with git specific enhancements. | 
 |  | 
 |   - "git diff --no-index" can read from '-' (standard input). | 
 |  | 
 |   - "git diff" also learned --exit-code to exit with non-zero | 
 |     status when it found differences.  In the future we might | 
 |     want to make this the default but that would be a rather big | 
 |     backward incompatible change; it will stay as an option for | 
 |     now. | 
 |  | 
 |   - "git diff --quiet" is --exit-code with output turned off, | 
 |     meant for scripted use to quickly determine if there is any | 
 |     tree-level difference. | 
 |  | 
 |   - Textual patch generation with "git diff" without -w/-b | 
 |     option has been significantly optimized.  "git blame" got | 
 |     faster because of the same change. | 
 |  | 
 |   - "git log" and "git rev-list" has been optimized | 
 |     significantly when they are used with pathspecs. | 
 |  | 
 |   - "git branch --track" can be used to set up configuration | 
 |     variables to help it easier to base your work on branches | 
 |     you track from a remote site. | 
 |  | 
 |   - "git format-patch --attach" now emits attachments.  Use | 
 |     --inline to get an inlined multipart/mixed. | 
 |  | 
 |   - "git name-rev" learned --refs=<pattern>, to limit the tags | 
 |     used for naming the given revisions only to the ones | 
 |     matching the given pattern. | 
 |  | 
 |   - "git remote update" is to run "git fetch" for defined remotes | 
 |     to update tracking branches. | 
 |  | 
 |   - "git cvsimport" can now take '-d' to talk with a CVS | 
 |     repository different from what are recorded in CVS/Root | 
 |     (overriding it with environment CVSROOT does not work). | 
 |  | 
 |   - "git bundle" can help sneaker-netting your changes between | 
 |     repositories. | 
 |  | 
 |   - "git mergetool" can help 3-way file-level conflict | 
 |     resolution with your favorite graphical merge tools. | 
 |  | 
 |   - A new configuration "core.symlinks" can be used to disable | 
 |     symlinks on filesystems that do not support them; they are | 
 |     checked out as regular files instead. | 
 |  | 
 |   - You can name a commit object with its first line of the | 
 |     message.  The syntax to use is ':/message text'.  E.g. | 
 |  | 
 |     $ git show ":/object name: introduce ':/<oneline prefix>' notation" | 
 |  | 
 |     means the same thing as: | 
 |  | 
 |     $ git show 28a4d940443806412effa246ecc7768a21553ec7 | 
 |  | 
 |   - "git bisect" learned a new command "run" that takes a script | 
 |     to run after each revision is checked out to determine if it | 
 |     is good or bad, to automate the bisection process. | 
 |  | 
 |   - "git log" family learned a new traversal option --first-parent, | 
 |     which does what the name suggests. | 
 |  | 
 |  | 
 | * Updated behavior of existing commands. | 
 |  | 
 |   - "git-merge-recursive" used to barf when there are more than | 
 |     one common ancestors for the merge, and merging them had a | 
 |     rename/rename conflict.  This has been fixed. | 
 |  | 
 |   - "git fsck" does not barf on corrupt loose objects. | 
 |  | 
 |   - "git rm" does not remove newly added files without -f. | 
 |  | 
 |   - "git archimport" allows remapping when coming up with git | 
 |     branch names from arch names. | 
 |  | 
 |   - git-svn got almost a rewrite. | 
 |  | 
 |   - core.autocrlf configuration, when set to 'true', makes git | 
 |     to convert CRLF at the end of lines in text files to LF when | 
 |     reading from the filesystem, and convert in reverse when | 
 |     writing to the filesystem.  The variable can be set to | 
 |     'input', in which case the conversion happens only while | 
 |     reading from the filesystem but files are written out with | 
 |     LF at the end of lines.  Currently, which paths to consider | 
 |     'text' (i.e. be subjected to the autocrlf mechanism) is | 
 |     decided purely based on the contents, but the plan is to | 
 |     allow users to explicitly override this heuristic based on | 
 |     paths. | 
 |  | 
 |   - The behavior of 'git-apply', when run in a subdirectory, | 
 |     without --index nor --cached were inconsistent with that of | 
 |     the command with these options.  This was fixed to match the | 
 |     behavior with --index.  A patch that is meant to be applied | 
 |     with -p1 from the toplevel of the project tree can be | 
 |     applied with any custom -p<n> option.  A patch that is not | 
 |     relative to the toplevel needs to be applied with -p<n> | 
 |     option with or without --index (or --cached). | 
 |  | 
 |   - "git diff" outputs a trailing HT when pathnames have embedded | 
 |     SP on +++/--- header lines, in order to help "GNU patch" to | 
 |     parse its output.  "git apply" was already updated to accept | 
 |     this modified output format since ce74618d (Sep 22, 2006). | 
 |  | 
 |   - "git cvsserver" runs hooks/update and honors its exit status. | 
 |  | 
 |   - "git cvsserver" can be told to send everything with -kb. | 
 |  | 
 |   - "git diff --check" also honors the --color output option. | 
 |  | 
 |   - "git name-rev" used to stress the fact that a ref is a tag too | 
 |     much, by saying something like "v1.2.3^0~22".  It now says | 
 |     "v1.2.3~22" in such a case (it still says "v1.2.3^0" if it does | 
 |     not talk about an ancestor of the commit that is tagged, which | 
 |     makes sense). | 
 |  | 
 |   - "git rev-list --boundary" now shows boundary markers for the | 
 |     commits omitted by --max-age and --max-count condition. | 
 |  | 
 |   - The configuration mechanism now reads $(prefix)/etc/gitconfig. | 
 |  | 
 |   - "git apply --verbose" shows what preimage lines were wanted | 
 |     when it couldn't find them. | 
 |  | 
 |   - "git status" in a read-only repository got a bit saner. | 
 |  | 
 |   - "git fetch" (hence "git clone" and "git pull") are less | 
 |     noisy when the output does not go to tty. | 
 |  | 
 |   - "git fetch" between repositories with many refs were slow | 
 |     even when there are not many changes that needed | 
 |     transferring.  This has been sped up by partially rewriting | 
 |     the heaviest parts in C. | 
 |  | 
 |   - "git mailinfo" which splits an e-mail into a patch and the | 
 |     meta-information was rewritten, thanks to Don Zickus.  It | 
 |     handles nested multipart better.  The command was broken for | 
 |     a brief period on 'master' branch since 1.5.0 but the | 
 |     breakage is fixed now. | 
 |  | 
 |   - send-email learned configurable bcc and chain-reply-to. | 
 |  | 
 |   - "git remote show $remote" also talks about branches that | 
 |     would be pushed if you run "git push remote". | 
 |  | 
 |   - Using objects from packs is now seriously optimized by clever | 
 |     use of a cache.  This should be most noticeable in git-log | 
 |     family of commands that involve reading many tree objects. | 
 |     In addition, traversing revisions while filtering changes | 
 |     with pathspecs is made faster by terminating the comparison | 
 |     between the trees as early as possible. | 
 |  | 
 |  | 
 | * Hooks | 
 |  | 
 |   - The part to send out notification e-mails was removed from | 
 |     the sample update hook, as it was not an appropriate place | 
 |     to do so.  The proper place to do this is the new post-receive | 
 |     hook.  An example hook has been added to contrib/hooks/. | 
 |  | 
 |  | 
 | * Others | 
 |  | 
 |   - git-revert, git-gc and git-cherry-pick are now built-ins. | 
 |  | 
 | Fixes since v1.5.0 | 
 | ------------------ | 
 |  | 
 | These are all in v1.5.0.x series. | 
 |  | 
 | * Documentation updates | 
 |  | 
 |   - Clarifications and corrections to 1.5.0 release notes. | 
 |  | 
 |   - The main documentation did not link to git-remote documentation. | 
 |  | 
 |   - Clarified introductory text of git-rebase documentation. | 
 |  | 
 |   - Converted remaining mentions of update-index on Porcelain | 
 |     documents to git-add/git-rm. | 
 |  | 
 |   - Some i18n.* configuration variables were incorrectly | 
 |     described as core.*; fixed. | 
 |  | 
 |   - added and clarified core.bare, core.legacyheaders configurations. | 
 |  | 
 |   - updated "git-clone --depth" documentation. | 
 |  | 
 |   - user-manual updates. | 
 |  | 
 |   - Options to 'git remote add' were described insufficiently. | 
 |  | 
 |   - Configuration format.suffix was not documented. | 
 |  | 
 |   - Other formatting and spelling fixes. | 
 |  | 
 |   - user-manual has better cross references. | 
 |  | 
 |   - gitweb installation/deployment procedure is now documented. | 
 |  | 
 |  | 
 | * Bugfixes | 
 |  | 
 |   - git-upload-pack closes unused pipe ends; earlier this caused | 
 |     many zombies to hang around. | 
 |  | 
 |   - git-rerere was recording the contents of earlier hunks | 
 |     duplicated in later hunks.  This prevented resolving the same | 
 |     conflict when performing the same merge the other way around. | 
 |  | 
 |   - git-add and git-update-index on a filesystem on which | 
 |     executable bits are unreliable incorrectly reused st_mode | 
 |     bits even when the path changed between symlink and regular | 
 |     file. | 
 |  | 
 |   - git-daemon marks the listening sockets with FD_CLOEXEC so | 
 |     that it won't be leaked into the children. | 
 |  | 
 |   - segfault from git-blame when the mandatory pathname | 
 |     parameter was missing was fixed; usage() message is given | 
 |     instead. | 
 |  | 
 |   - git-rev-list did not read $GIT_DIR/config file, which means | 
 |     that did not honor i18n.logoutputencoding correctly. | 
 |  | 
 |   - Automated merge conflict handling when changes to symbolic | 
 |     links conflicted were completely broken.  The merge-resolve | 
 |     strategy created a regular file with conflict markers in it | 
 |     in place of the symbolic link.  The default strategy, | 
 |     merge-recursive was even more broken.  It removed the path | 
 |     that was pointed at by the symbolic link.  Both of these | 
 |     problems have been fixed. | 
 |  | 
 |   - 'git diff maint master next' did not correctly give combined | 
 |     diff across three trees. | 
 |  | 
 |   - 'git fast-import' portability fix for Solaris. | 
 |  | 
 |   - 'git show-ref --verify' without arguments did not error out | 
 |     but segfaulted. | 
 |  | 
 |   - 'git diff :tracked-file `pwd`/an-untracked-file' gave an extra | 
 |     slashes after a/ and b/. | 
 |  | 
 |   - 'git format-patch' produced too long filenames if the commit | 
 |     message had too long line at the beginning. | 
 |  | 
 |   - Running 'make all' and then without changing anything | 
 |     running 'make install' still rebuilt some files.  This | 
 |     was inconvenient when building as yourself and then | 
 |     installing as root (especially problematic when the source | 
 |     directory is on NFS and root is mapped to nobody). | 
 |  | 
 |   - 'git-rerere' failed to deal with two unconflicted paths that | 
 |     sorted next to each other. | 
 |  | 
 |   - 'git-rerere' attempted to open(2) a symlink and failed if | 
 |     there was a conflict.  Since a conflicting change to a | 
 |     symlink would not benefit from rerere anyway, the command | 
 |     now ignores conflicting changes to symlinks. | 
 |  | 
 |   - 'git-repack' did not like to pass more than 64 arguments | 
 |     internally to underlying 'rev-list' logic, which made it | 
 |     impossible to repack after accumulating many (small) packs | 
 |     in the repository. | 
 |  | 
 |   - 'git-diff' to review the combined diff during a conflicted | 
 |     merge were not reading the working tree version correctly | 
 |     when changes to a symbolic link conflicted.  It should have | 
 |     read the data using readlink(2) but read from the regular | 
 |     file the symbolic link pointed at. | 
 |  | 
 |   - 'git-remote' did not like period in a remote's name. | 
 |  | 
 |   - 'git.el' honors the commit coding system from the configuration. | 
 |  | 
 |   - 'blameview' in contrib/ correctly digs deeper when a line is | 
 |     clicked. | 
 |  | 
 |   - 'http-push' correctly makes sure the remote side has leading | 
 |     path.  Earlier it started in the middle of the path, and | 
 |     incorrectly. | 
 |  | 
 |   - 'git-merge' did not exit with non-zero status when the | 
 |     working tree was dirty and cannot fast forward.  It does | 
 |     now. | 
 |  | 
 |   - 'cvsexportcommit' does not lose yet-to-be-used message file. | 
 |  | 
 |   - int-vs-size_t typefix when running combined diff on files | 
 |     over 2GB long. | 
 |  | 
 |   - 'git apply --whitespace=strip' should not touch unmodified | 
 |     lines. | 
 |  | 
 |   - 'git-mailinfo' choke when a logical header line was too long. | 
 |  | 
 |   - 'git show A..B' did not error out.  Negative ref ("not A" in | 
 |     this example) does not make sense for the purpose of the | 
 |     command, so now it errors out. | 
 |  | 
 |   - 'git fmt-merge-msg --file' without file parameter did not | 
 |     correctly error out. | 
 |  | 
 |   - 'git archimport' barfed upon encountering a commit without | 
 |     summary. | 
 |  | 
 |   - 'git index-pack' did not protect itself from getting a short | 
 |     read out of pread(2). | 
 |  | 
 |   - 'git http-push' had a few buffer overruns. | 
 |  | 
 |   - Build dependency fixes to rebuild fetch.o when other headers | 
 |     change. | 
 |  | 
 |   - git.el does not add duplicate sign-off lines. | 
 |  | 
 |   - git-commit shows the full stat of the resulting commit, not | 
 |     just about the files in the current directory, when run from | 
 |     a subdirectory. | 
 |  | 
 |   - "git-checkout -m '@{8 hours ago}'" had a funny failure from | 
 |     eval; fixed. | 
 |  | 
 |   - git-merge (hence git-pull) did not refuse fast-forwarding | 
 |     when the working tree had local changes that would have | 
 |     conflicted with it. | 
 |  | 
 |   - a handful small fixes to gitweb. | 
 |  | 
 |   - build procedure for user-manual is fixed not to require locally | 
 |     installed stylesheets. | 
 |  | 
 |   - "git commit $paths" on paths whose earlier contents were | 
 |     already updated in the index were failing out. | 
 |  | 
 |  | 
 | * Tweaks | 
 |  | 
 |   - sliding mmap() inefficiently mmaped the same region of a | 
 |     packfile with an access pattern that used objects in the | 
 |     reverse order.  This has been made more efficient. |