Git v1.7.10 Release Notes
=========================

Updates since v1.7.9
--------------------

UI, Workflows & Features

 * Improved handling of views, labels and branches in git-p4 (in contrib).

 * "vcs-svn"/"svn-fe" learned to read dumps with svn-deltas and
   support incremental imports.

 * "git am" learned to pass "-b" option to underlying "git mailinfo", so
   that bracketed string other than "PATCH" at the beginning can be kept.

 * "git clone" learned "--single-branch" option to limit cloning to a
   single branch (surprise!).

 * "git clone" learned to detach the HEAD in the resulting repository
   when the source repository's HEAD does not point to a branch.

 * When showing a patch while ignoring whitespace changes, the context
   lines are taken from the postimage, in order to make it easier to
   view the output.

 * "git merge" in an interactive session learned to spawn the editor
   by default to let the user edit the auto-generated merge message,
   to encourage people to explain their merges better. Legacy scripts
   can export MERGE_AUTOEDIT=no to retain the historical behaviour.

 * "gitweb" allows intermediate entries in the directory hierarchy
   that leads to a projects to be clicked, which in turn shows the
   list of projects inside that directory.

Performance

 * During "git upload-pack" in respose to "git fetch", unnecessary calls
   to parse_object() have been eliminated, to help performance in
   repositories with excessive number of refs.

Internal Implementation

 * Recursive call chains in "git index-pack" to deal with long delta
   chains have been flattened, to reduce the stack footprint.

 * Use of add_extra_ref() API is slowly getting removed, to make it
   possible to cleanly restructure the overall refs API.

 * The test suite supports the new "test_pause" helper function.

 * t/Makefile is adjusted to prevent newer versions of GNU make from
   running tests in seemingly random order.

Also contains minor documentation updates and code clean-ups.


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

Unless otherwise noted, all the fixes since v1.7.9 in the maintenance
releases are contained in this release (see release notes to them for
details).

 * "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.
   (merge 701825d js/add-e-submodule-fix later to maint).

 * "rebase" and "commit --amend" failed to work on commits with ancient
   timestamps near year 1970.
   (merge 2c733fb jc/parse-date-raw later to maint).

 * "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 is allowed to fast-forward without recording the mergetag.
   (merge b5c9f1c jc/merge-ff-only-stronger-than-signed-merge later to maint).

 * Typo in "git branch --edit-description my-tpoic" was not diagnosed.
   (merge c2d17ba jc/branch-desc-typoavoidance later to maint).

 * rpmbuild noticed an unpackaged but installed *.mo file and failed.
   (merge 3a9f58c jn/rpm-spec later to maint).

---
exec >/var/tmp/1
O=v1.7.9-208-gee8d52f
echo O=$(git describe)
git log --first-parent --oneline ^maint $O..
echo
git shortlog --no-merges ^maint $O..
