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

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

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

 * gitk updates.

 * 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.

 * Various documentation updates.

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 diff --stat" used "int" to count the size of differences,
   which could result in overflowing.

 * "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-rc1-49-g407a963
git shortlog --no-merges ^maint $O..
