Git v1.7.1 Release Notes (draft)
================================

Updates since v1.7.0
--------------------

 * Eric Raymond is the maintainer of updated CIAbot scripts, in contrib/.

 * Some commands (e.g. svn and http interfaces) that interactively ask
   for a password can be told to use an external program given via
   GIT_ASKPASS.

 * Conflict markers that lead the common ancestor in diff3-style output
   now have a label, which hopefully would help third-party tools that
   expect one.

 * Comes with an updated bash-completion script.

 * "git am" learned "--keep-cr" option to handle inputs that are
   a mixture of changes to files with and without CRLF line endings.

 * "git cvsimport" learned -R option to leave revision mapping between
   CVS revisions and resulting git commits.

 * "git diff --submodule" notices and describes dirty submodules.

 * "git for-each-ref" learned %(symref), %(symref:short) and %(flag)
   tokens.

 * "git hash-object --stdin-paths" can take "--no-filters" option now.

 * "git init" can be told to look at init.templatedir configuration
   variable (obviously that has to come from either /etc/gitconfig or
   $HOME/.gitconfig).

 * "git grep" learned "--no-index" option, to search inside contents that
   are not managed by git.

 * "git grep" learned --color=auto/always/never.

 * "git grep" learned to paint filename and line-number in colors.

 * "git log -p --first-parent -m" shows one-parent diff for merge
   commits, instead of showing combined diff.

 * "git merge-file" learned to use custom conflict marker size and also
   to use the "union merge" behaviour.

 * "git notes" command has been rewritten in C and learned many commands
   and features to help you carry notes forward across rebases and amends.

 * "git request-pull" identifies the commit the request is relative to in
   a more readable way.

 * "git reset" learned "--keep" option that lets you discard commits
   near the tip while preserving your local changes in a way similar
   to how "git checkout branch" does.

 * "git status" notices and describes dirty submodules.

 * "git svn" should work better when interacting with repositories
   with CRLF line endings.

 * "git imap-send" learned to support CRAM-MD5 authentication.

 * "gitweb" installation procedure can use "minified" js/css files
   better.

Fixes since v1.7.0
------------------

All of the fixes in v1.7.0.X maintenance series are included in this
release, unless otherwise noted.

 * "git add frotz/nitfol" did not complain when the entire frotz/ directory
   was ignored.

 * "git rev-list --pretty=oneline" didn't terminate a record with LF for
   commits without any message.

 * "git rev-list --abbrev-commit" defaulted to 40-byte abbreviations, unlike
   newer tools in the git toolset.

---
exec >/var/tmp/1
echo O=$(git describe)
O=v1.7.1-rc0-36-gb92cbb6
git shortlog --no-merges ^maint $O..
