Git 1.7.4-rc1

A release candidate Git 1.7.4-rc1 is available at the usual places
for testing:
git-1.7.4.rc1.tar.{gz,bz2}                    (source tarball)
git-htmldocs-1.7.4.rc1.tar.{gz,bz2}           (preformatted docs)
git-manpages-1.7.4.rc1.tar.{gz,bz2}           (preformatted docs)

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

testing/git-*-1.7.4.rc1-1.fc13.$arch.rpm      (RPM)

Git v1.7.4 Release Notes (draft)

Updates since v1.7.3

  • The documentation Makefile now assumes by default asciidoc 8 and
    docbook-xsl >= 1.73. If you have older versions, you can set
    ASCIIDOC7 and ASCIIDOC_ROFF, respectively.

  • The option parsers of various commands that create new branches (or
    rename existing ones to a new name) were too loose and users were
    allowed to give a branch a name that begins with a dash by creative
    abuse of their command line options, which only led to burning
    themselves. The name of a branch cannot begin with a dash now.

  • System-wide fallback default attributes can be stored in
    /etc/gitattributes; core.attributesfile configuration variable can
    be used to customize the path to this file.

  • The thread structure generated by “git send-email” has changed
    slightly. Setting the cover letter of the latest series as a reply
    to the cover letter of the previous series with –in-reply-to used
    to make the new cover letter and all the patches replies to the
    cover letter of the previous series; this has been changed to make
    the patches in the new series replies to the new cover letter.

  • Bash completion script in contrib/ has been adjusted to be usable with
    Bash 4 (options with =value didn’t complete) It has been also made
    usable with zsh.

  • Different pagers can be chosen depending on which subcommand is
    being run under the pager, using “pager.<subcommand>” variable.

  • The hardcoded tab-width of 8 used in whitespace breakage checks is now
    configurable via the attributes mechanism.

  • Support of case insensitive filesystems (i.e. “core.ignorecase”) has
    been improved. For example, the gitignore mechanism didn’t pay attention
    to the case insensitivity.

  • The <tree>:<path> syntax to name a blob in a tree, and :<path>
    syntax to name a blob in the index (e.g. “master:Makefile”,
    “:hello.c”) have been extended. You can start <path> with “./” to
    implicitly have the (sub)directory you are in prefixed to the
    lookup. Similarly, “:../Makefile” from a subdirectory would mean
    “the Makefile of the parent directory in the index”.

  • “git blame” learned –show-email option to display the e-mail
    addresses instead of the names of authors.

  • “git commit” learned –fixup and –squash options to help later invocation
    of the interactive rebase.

  • Command line options to “git cvsimport” whose names are in capital
    letters (-A, -M, -R and -S) can now be specified as the default in
    the .git/config file by their longer names (cvsimport.authorsFile,
    cvsimport.mergeRegex, cvsimport.trackRevisions, cvsimport.ignorePaths).

  • “git daemon” can be built in MinGW environment.

  • “git daemon” can take more than one –listen option to listen to
    multiple addresses.

  • “git describe –exact-match” was optimized not to read commit
    objects unnecessarily.

  • “git diff” and “git grep” learned how functions and subroutines
    in Fortran look like.

  • “git fetch” learned “–recurse-submodules” option.

  • “git mergetool” tells vim/gvim to show three-way diff by default
    (use vimdiff2/gvimdiff2 as the tool name for old behaviour).

  • “git log -G<pattern>” limits the output to commits whose change has
    added or deleted lines that match the given pattern.

  • “git read-tree” with no argument as a way to empty the index is
    deprecated; we might want to remove it in the future. Users can
    use the new –empty option to be more explicit instead.

  • “git repack -f” does not spend cycles to recompress objects in the
    non-delta representation anymore (use -F if you really mean it
    e.g. after you changed the core.compression variable setting).

  • “git merge –log” used to limit the resulting merge log to 20
    entries; this is now customizable by giving e.g. “–log=47”.

  • “git merge” may work better when all files were moved out of a
    directory in one branch while a new file is created in place of that
    directory in the other branch.

  • “git rebase –autosquash” can use SHA-1 object names to name which
    commit to fix up (e.g. “fixup! e83c5163”).

  • The default “recursive” merge strategy learned –rename-threshold
    option to influence the rename detection, similar to the -M option
    of “git diff”. From “git merge” frontend, “-X<strategy option>”
    interface, e.g. “git merge -Xrename-threshold=50% …”, can be used
    to trigger this.

  • The “recursive” strategy also learned to ignore various whitespace
    changes; the most notable is -Xignore-space-at-eol.

  • “git send-email” learned “–to-cmd”, similar to “–cc-cmd”, to read
    recipient list from a command output.

  • “git send-email” learned to read and use “To:” from its input files.

  • you can extend “git shell”, which is often used on boxes that allow
    git-only login over ssh as login shell, with custom set of

  • The current branch name in “git status” output can be colored differently
    from the generic header color by setting “color.status.branch” variable.

  • “git submodule sync” updates metainformation for all submodules,
    not just the ones that have been checked out.

  • gitweb can use custom highlight command with its configuration file.

  • other gitweb updates.

Also contains various documentation updates.

Fixes since v1.7.3

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

  • “git log –author=me –author=her” did not find commits written by
    me or by her; instead it looked for commits written by me and by
    her, which is impossible.

  • “git push –progress” shows progress indicators now.

  • “git repack” places its temporary packs under $GIT_OBJECT_DIRECTORY/pack
    instead of $GIT_OBJECT_DIRECTORY/ to avoid cross directory renames.

  • “git submodule update –recursive –other-flags” passes flags down
    to its subinvocations.


Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )


Connecting to %s