A release candidate Git 1.7.8.rc0 is available for testing.
The release tarballs are found at:
and their SHA-1 checksums are:
Also the following public repositories all have a copy of the v1.7.8.rc0
tag and the master branch that the tag points at:
url = git://repo.or.cz/alt-git.git url = https://code.google.com/p/git-core/ url = git://git.sourceforge.jp/gitroot/git-core/git.git url = git://git-core.git.sourceforge.net/gitroot/git-core/git-core url = https://github.com/gitster/git
There are a few topics that I would further merge down before -rc1 but
this should be pretty much it for the upcoming release, as far as “new
features” are concerned. Please test thoroughly to hunt for regressions.
Hopefully we can have something reasonable by late November before many in
the US will stop working and start stuffing themselves.
Git v1.7.8 Release Notes (draft)
Updates since v1.7.7
Some git-svn, git-gui, git-p4 (in contrib) and msysgit updates.
Updates to bash completion scripts.
The build procedure has been taught to take advantage of computed
dependency automatically when the complier supports it.
The date parser now accepts timezone designators that lack minutes
part and also has a colon between “hh:mm”.
The contents of the /etc/mailname file, if exists, is used as the
default value of the hostname part of the committer/author e-mail.
“git am” learned how to read from patches generated by Hg.
“git archive” talking with a remote repository can report errors
from the remote side in a more informative way.
“git branch” learned an explicit –list option to ask for branches
listed, optionally with a glob matching pattern to limit its output.
“git check-attr” learned “–cached” option to look at .gitattributes
files from the index, not from the working tree.
Variants of “git cherry-pick” and “git revert” that take multiple
commits learned to “–continue”.
“git daemon” gives more human readble error messages to clients
using ERR packets when appropriate.
Errors at the network layer is logged by “git daemon”.
“git diff” learned “–minimal” option to spend extra cycles to come
up with a minimal patch output.
“git diff” learned “–function-context” option to show the whole
function as context that was affected by a change.
“git difftool” can be told to skip launching the tool for a path by answering
to its prompt.
“git fetch” learned to honor transfer.fsckobjects configuration to
validate the objects that were received from the other end, just like
“git receive-pack” (the receiving end of “git push”) does.
“git fetch” makes sure that the set of objects it received from the
other end actually completes the history before updating the refs.
“git receive-pack” (the receiving end of “git push”) learned to do the
“git fetch” learned that fetching/cloning from a regular file on the
filesystem is not necessarily a request to unpack a bundle file; the
file could be “.git” with “gitdir: <path>” in it.
“git for-each-ref” learned “%(contents:subject)”, “%(contents:body)”
and “%(contents:signature)”. The last one is useful for signed tags.
“git grep” used to incorrectly pay attention to .gitignore files
scattered in the directory it was working in even when “–no-index”
option was used. It no longer does this. The “–exclude-standard”
option needs to be given to explicitly activate the ignore
“git grep” learned “–untracked” option, where given patterns are
searched in untracked (but not ignored) files as well as tracked
files in the working tree, so that matches in new but not yet
added files do not get missed.
The recursive merge backend no longer looks for meaningless
existing merges in submodules unless in the outermost merge.
“git log” and friends learned “–children” option.
“git ls-remote” learned to respond to “-h”(elp) requests.
“git merge” learned the “–edit” option to allow users to edit the
merge commit log message.
“git rebase -i” can be told to use special purpose editor suitable
only for its insn sheet via sequence.editor configuration variable.
“git send-email” learned to respond to “-h”(elp) requests.
“git send-email” allows the value given to sendemail.aliasfile to begin
with “~/” to refer to the $HOME directory.
“git send-email” forces use of Authen::SASL::Perl to work around
issues between Authen::SASL::Cyrus and AUTH PLAIN/LOGIN.
“git stash” learned “–include-untracked” option to stash away
untracked/ignored cruft from the working tree.
“git submodule clone” does not leak an error message to the UI
level unnecessarily anymore.
“git submodule update” learned to honor “none” as the value for
submodule.<name>.update to specify that the named submodule should
not be checked out by default.
When populating a new submodule directory with “git submodule init”,
the $GIT_DIR metainformation directory for submodules is created inside
$GIT_DIR/modules/<name>/ directory of the superproject and referenced
via the gitfile mechanism. This is to make it possible to switch
between commits in the superproject that has and does not have the
submodule in the tree without re-cloning.
“mediawiki” remote helper can interact with (surprise!) MediaWiki
with “git fetch” & “git push”.
“gitweb” leaked unescaped control characters from syntax hiliter
“gitweb” can be told to give custom string at the end of the HTML
“gitweb” now has its own manual pages.
Also contains other documentation updates and minor code cleanups.
Fixes since v1.7.7
Unless otherwise noted, all fixes in the 1.7.7.X maintenance track are
included in this release.
We used to drop error messages from libcurl on certain kinds of
(merge be22d92eac8 jn/maint-http-error-message later to maint).
Error report from smart HTTP transport, when the connection was
broken in the middle of a transfer, showed a useless message on
a corrupt packet.
(merge 6cdf022 sp/smart-http-failure later to maint).
HTTP transport did not use pushurl correctly, and also did not tell
what host it is trying to authenticate with when asking for
(merge deba493 jk/http-auth later to maint).
“git branch -m/-M” advertised to update RENAME_REF ref in the
commit log message that introduced the feature but not anywhere in
the documentation, and never did update such a ref anyway. This
undocumented misfeature that did not exist has been excised.
(merge b0eab01 jc/maint-remove-renamed-ref later to maint).
Adding many refs to the local repository in one go (e.g. “git fetch”
that fetches many tags) and looking up a ref by name in a repository
with too many refs were unnecessarily slow.
(merge 17d68a54d jp/get-ref-dir-unsorted later to maint).
“git fetch –prune” was unsafe when used with refspecs from the
(merge e8c1e6c cn/fetch-prune later to maint).
Report from “git commit” on untracked files was confused under
(merge 2548183b jk/name-hash-dirent later to maint).
The attribute mechanism did not use case insensitive match when
core.ignorecase was set.
(merge 6eba621 bc/attr-ignore-case later to maint).
“git bisect” did not notice when it failed to update the working tree
to the next commit to be tested.
(merge 1acf11717 js/bisect-no-checkout later to maint).
“git config –bool –get-regexp” failed to separate the variable name
and its value “true” when the variable is defined without “= true”.
(merge 880e3cc mm/maint-config-explicit-bool-display later to maint).
“git remote rename $a $b” were not careful to match the remote name
against $a (i.e. source side of the remote nickname).
(merge b52d00aed mz/remote-rename later to maint).
“git diff –[num]stat” used to use the number of lines of context
different from the default, potentially giving different results from
“git diff | diffstat” and confusing the users.
(merge f01cae918 jc/maint-diffstat-numstat-context later to maint).
“git merge” did not understand “:/<pattern>” as a way to name a commit.
“git mergetool” learned to use its arguments as pathspec, not a path to
the file that may not even have any conflict.
(merge 6d9990a jm/mergetool-pathspec later to maint).
“git pull” and “git rebase” did not work well even when GIT_WORK_TREE is
set correctly with GIT_DIR if the current directory is outside the working
(merge 035b5bf jk/pull-rebase-with-work-tree later to maint).
" "git push" on the receiving end used to call post-receive and post-update hooks for attempted removal of non-existing refs. (merge 160b81ed ph/push-to-delete-nothing later to maint).
“git send-email” did not honor the configured hostname when restarting
the HELO/EHLO exchange after switching TLS on.
(merge 155b940 md/smtp-tls-hello-again later to maint).
“gitweb” used to produce a non-working link while showing the contents
(merge 2b07ff3ff ps/gitweb-js-with-lineno later to maint).
The logic to filter out forked projects in the project list in
“gitweb” was broken for some time.
(merge 53c632f jm/maint-gitweb-filter-forks-fix later to maint).
Junio C Hamano wrote on 30 Oct 2011