Git v1.7.9.1 Release Notes
==========================

Fixes since v1.7.9
------------------

 * The makefile allowed environment variable X seep into it result in
   command names suffixed with unnecessary strings.

 * The set of included header files in compat/inet-{ntop,pton}
   wrappers was updated for Windows some time ago, but in a way that
   broke Solaris build.

 * rpmbuild noticed an unpackaged but installed *.mo file and failed.

 * Subprocesses spawned from various git programs were often left running
   to completion even when the top-level process was killed.

 * "git add -e" learned not to show a diff for an otherwise unmodified
   submodule that only has uncommitted local changes in the patch
   prepared by for the user to edit.

 * Typo in "git branch --edit-description my-tpoic" was not diagnosed.

 * Using "git grep -l/-L" together with options -W or --break may not
   make much sense as the output is to only count the number of hits
   and there is no place for file breaks, but the latter options made
   "-l/-L" to miscount the hits.

 * "git log --first-parent $pathspec" did not stay on the first parent
   chain and veered into side branch from which the whole change to the
   specified paths came.

 * "git merge --no-edit $tag" failed to honor the --no-edit option.

 * "git merge --ff-only $tag" failed because it cannot record the
   required mergetag without creating a merge, but this is so common
   operation for branch that is used _only_ to follow the upstream, so
   it was changed to allow fast-forwarding without recording the mergetag.

 * "git mergetool" now gives an empty file as the common base version
   to the backend when dealing with the "both sides added, differently"
   case.

 * "git push -q" was not sufficiently quiet.

 * When "git push" fails to update any refs, the client side did not
   report an error correctly to the end user.

 * "rebase" and "commit --amend" failed to work on commits with ancient
   timestamps near year 1970.

 * When asking for a tag to be pulled, "request-pull" did not show the
   name of the tag prefixed with "tags/", which would have helped older
   clients.

 * "git submodule add $path" forgot to recompute the name to be stored
   in .gitmodules when the submodule at $path was once added to the
   superproject and already initialized.

 * Many small corner case bugs on "git tag -n" was corrected.

Also contains minor fixes and documentation updates.
