Git 1.7.2.rc1

From the official announcement posted to the Git mailing list:

A release candidate Git 1.7.2.rc1 is available at the usual places
for testing:

 git-1.7.2.rc1.tar.{gz,bz2}            (source tarball)
 git-htmldocs-1.7.2.rc1.tar.{gz,bz2}        (preformatted docs)
 git-manpages-1.7.2.rc1.tar.{gz,bz2}        (preformatted docs)

The RPM binary packages for a few architectures are found in:

 testing/git-*-1.7.2.rc1-1.fc11.$arch.rpm    (RPM)


Git v1.7.2 Release Notes (draft)

Updates since v1.7.1

* core.eol configuration and eol attribute are the new way to control
  the end of line conventions for files in the working tree;
  core.autocrlf overrides it, keeping the traditional behaviour by

* The whitespace rules used in "git apply --whitespace" and "git diff"
  gained a new member in the family (tab-in-indent) to help projects with
  policy to indent only with spaces.

* When working from a subdirectory, by default, git does not look for its
  metadirectory ".git" across filesystems, primarily to help people who
  have invocations of git in their custom PS1 prompts, as being outside
  of a git repository would look for ".git" all the way up to the root
  directory, and NFS mounts are often slow.  DISCOVERY_ACROSS_FILESYSTEM
  environment variable can be used to tell git not to stop at a
  filesystem boundary.

* Usage help messages generated by parse-options library (i.e. most
  of the Porcelain commands) are sent to the standard output now.

* ':/<string>' notation to look for a commit now takes regular expression
  and it is not anchored at the beginning of the commit log message
  anymore (this is a backward incompatible change).

* "git" wrapper learned "-c name=value" option to override configuration
  variable from the command line.

* Improved portability for various platforms including older SunOS,
  HP-UX 10/11, AIX, Tru64, etc. and platforms with Python 2.4.

* The message from "git am -3" has been improved when conflict
  resolution ended up making the patch a no-op.

* "git blame" applies the textconv filter to the contents it works
  on, when available.

* "git checkout --orphan newbranch" is similar to "-b newbranch" but
  prepares to create a root commit that is not connected to any existing

* "git cherry-pick" learned to pick a range of commits
  (e.g. "cherry-pick A..B" and "cherry-pick --stdin"); this does not
  have nicer sequencing control "rebase [-i]" has, though.

* "git cvsserver" can be told to use pserver; its password file can be
  stored outside the repository.

* The output from the textconv filter used by "git diff" can be cached to
  speed up their reuse.

* "git diff --word-diff=<mode>" extends the existing "--color-words"
  option, making it more useful in color-challenged environments.

* The regexp to detect function headers used by "git diff" for PHP has
  been enhanced for visibility modifiers (public, protected, etc.) to
  better support PHP5.

* "diff.noprefix" configuration variable can be used to implicitly
  ask for "diff --no-prefix" behaviour.

* "git for-each-ref" learned "%(objectname:short)" that gives the object
  name abbreviated.

* "git format-patch" learned --signature option and format.signature
  configuration variable to customize the e-mail signature used in the

* Various options to "git grep" (e.g. --count, --name-only) work better
  with binary files.

* "git grep" learned "-Ovi" to open the files with hits in yoru editor.

* "git help -w" learned "chrome" and "chromium" browsers.

* "git log --decorate" shows commit decorations in various colours.

* "git log --follow <path>" follows across copies (it used to only follow
  renames).  This may make the processing more expensive.

* "git log --pretty=format:<template>" specifier learned "% <something>"
  magic that inserts a space only when %<something> expands to a
  non-empty string; this is similar to "%+<something>" magic, but is
  useful in a context to generate a single line output.

* "git notes prune" learned "-n" (dry-run) and "-v" options, similar to
  what "git prune" has.

* "git patch-id" can be fed a mbox without getting confused by the
  signature line in the format-patch output.

* "git remote" learned "set-branches" subcommand.

* "git revert" learned --strategy option to specify the merge strategy.

* "git rev-list A..B" learned --ancestry-path option to further limit
  the result to the commits that are on the ancestry chain between A and
  B (i.e. commits that are not descendants of A are excluded).

* "git show -5" is equivalent to "git show --do-walk 5"; this is similar
  to the update to make "git show" walk the history,
  introduced in 1.6.4.

* "git status [-s] --ignored" can be used to list ignored paths.

* "git status -s -b" shows the current branch in the output.

* "git status" learned "--ignore-submodules" option.

* Various "gitweb" enhancements and clean-ups, including syntax
  highlighting, "plackup" support for instaweb, .fcgi suffix to run
  it as FastCGI script, etc.

Fixes since v1.7.1

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

* We didn't URL decode "file:///path/to/repo" correctly when path/to/repo
  had percent-encoded characters (638794c, 9d2e942).

* "git commit" did not honor GIT_REFLOG_ACTION environment variable, resulting
  reflog messages for cherry-pick and revert actions to be recorded as "commit".

* "git clone/fetch/pull" issued an incorrect error message when a ref and
  a symref that points to the ref were updated at the same time.  This
  obviously would update them to the same value, and should not result in
  an error condition (0e71bc3).

* "git clone" did not configure remote.origin.url correctly for bare
  clones (df61c889).

* "git diff" inside a tree with many pathnames that have certain
  characters has become very slow in 1.7.0 by mistake (will merge
  e53e6b443 to 'maint').

* "git diff --graph" works better with "--color-words" and other options

* "git diff" could show ambiguous abbreviation of blob object names on
  its "index" line (3e5a188).

* "git rebase" did not faithfully reproduce a malformed author ident, that
  is often seen in a repository converted from foreign SCMs (43c23251).

* "git reset --hard" started from a wrong directory and a working tree in
  a nonstandard location is in use got confused (560fb6a1).


Changes since v1.7.2-rc0 are as follows:

Andrew Sayers (2):
     bash-completion: Fix __git_ps1 to work with "set -u"
     bash completion: Support "divergence from upstream" messages in __git_ps1

Brandon Casey (4):
     t/ remove unnecessary '^' from 'expr' regular expression
     t/ ensure fake "less" is made executable
     t/ remove broken/redundant creation of fake "less" script
     t/t9001: use egrep when regular expressions are involved

Brian Gernhardt (1):
     t4027,4041: Use test -s to test for an empty file

Christian Couder (1):
     revert: accept arbitrary rev-list options

Jeff King (1):
     notes: check number of parameters to "git notes copy"

Jens Lehmann (4):
     git diff: rename test that had a conflicting name
     Add optional parameters to the diff option "--ignore-submodules"
     git submodule: ignore dirty submodules for summary and status
     Add the option "--ignore-submodules" to "git status"

Johannes Schindelin (3):
     Unify code paths of threaded greps
     grep: Add the option '--open-files-in-pager'
     grep -O: allow optional argument specifying the pager (or editor)

Jonathan Nieder (3):
     grep: refactor grep_objects loop into its own function
     t3508 (cherry-pick): futureproof against unmerged files
     revert: do not rebuild argv on heap

Julian Phillips (6):
     string_list: Fix argument order for print_string_list
     string_list: Fix argument order for for_each_string_list
     string_list: Fix argument order for string_list_insert
     string_list: Fix argument order for string_list_insert_at_index
     string_list: Fix argument order for string_list_lookup
     string_list: Fix argument order for string_list_append

Junio C Hamano (5):
     url_decode: URL scheme ends with a colon and does not require a slash
     Update draft release notes to
     Git Add gitweb subpackage
     Git 1.7.2-rc1

Michael J Gruber (4):
     t6018: add tests for rev-list's --branches and --tags
     t6018: make sure all tested symbolic names are different revs
     git-rev-parse.txt: Document ":path" specifier
     git-rev-parse.txt: Add more examples for caret and colon

Nazri Ramliy (5):
     commit.h: add 'type' to struct name_decoration
     log-tree.c: Use struct name_decoration's type for classifying decoration
     log --decorate: Colorize commit decorations
     Allow customizable commit decorations colors
     Add test for correct coloring of git log --decoration

Ramsay Allan Jones (2):
     msvc: Select the "fast" definition of the {get,put}_be32() macros
     notes: Initialise variable to appease gcc

Thomas Rast (1):
     rev-list: introduce --count option