[ANNOUNCE] Git v2.7.3

From: Junio C Hamano
Date: Thu Mar 10 2016 - 18:04:50 EST

The latest maintenance release Git v2.7.3 is now available at
the usual places. This is primarily to sync the maintenance track
with miscellaneous fixes that are scheduled to be part of upcoming
v2.8.0 release.

The tarballs are found at:


The following public repositories all have a copy of the 'v2.7.3'
tag and the 'maint' branch that the tag points at:

url = https://kernel.googlesource.com/pub/scm/git/git
url = git://repo.or.cz/alt-git.git
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


Git v2.7.3 Release Notes

Fixes since v2.7.2

* Traditionally, the tests that try commands that work on the
contents in the working tree were named with "worktree" in their
filenames, but with the recent addition of "git worktree"
subcommand, whose tests are also named similarly, it has become
harder to tell them apart. The traditional tests have been renamed
to use "work-tree" instead in an attempt to differentiate them.

* Many codepaths forget to check return value from git_config_set();
the function is made to die() to make sure we do not proceed when
setting a configuration variable failed.

* Handling of errors while writing into our internal asynchronous
process has been made more robust, which reduces flakiness in our

* "git show 'HEAD:Foo[BAR]Baz'" did not interpret the argument as a
rev, i.e. the object named by the the pathname with wildcard
characters in a tree object.

* "git rev-parse --git-common-dir" used in the worktree feature
misbehaved when run from a subdirectory.

* The "v(iew)" subcommand of the interactive "git am -i" command was
broken in 2.6.0 timeframe when the command was rewritten in C.

* "git merge-tree" used to mishandle "both sides added" conflict with
its own "create a fake ancestor file that has the common parts of
what both sides have added and do a 3-way merge" logic; this has
been updated to use the usual "3-way merge with an empty blob as
the fake common ancestor file" approach used in the rest of the

* The memory ownership rule of fill_textconv() API, which was a bit
tricky, has been documented a bit better.

* The documentation did not clearly state that the 'simple' mode is
now the default for "git push" when push.default configuration is
not set.

* Recent versions of GNU grep are pickier when their input contains
arbitrary binary data, which some of our tests uses. Rewrite the
tests to sidestep the problem.

* A helper function "git submodule" uses since v2.7.0 to list the
modules that match the pathspec argument given to its subcommands
(e.g. "submodule add <repo> <path>") has been fixed.

* "git config section.var value" to set a value in per-repository
configuration file failed when it was run outside any repository,
but didn't say the reason correctly.

* The code to read the pack data using the offsets stored in the pack
idx file has been made more carefully check the validity of the
data in the idx.

Also includes documentation and test updates.


Changes since v2.7.2 are as follows:

Alexander Kuleshov (2):
exec_cmd.c: use find_last_dir_sep() for code simplification
git.c: simplify stripping extension of a file in handle_builtin()

David Turner (1):
refs: document transaction semantics

Jeff King (37):
checkout: reorder check_filename conditional
check_filename: tighten dwim-wildcard ambiguity
get_sha1: don't die() on bogus search strings
reflog_expire_cfg: NUL-terminate pattern field
add helpers for detecting size_t overflow
tree-diff: catch integer overflow in combine_diff_path allocation
diff: clarify textconv interface
harden REALLOC_ARRAY and xcalloc against size_t overflow
add helpers for allocating flex-array structs
argv-array: add detach function
convert manual allocations to argv_array
convert trivial cases to ALLOC_ARRAY
use xmallocz to avoid size arithmetic
convert trivial cases to FLEX_ARRAY macros
use st_add and st_mult for allocation size computation
prepare_{git,shell}_cmd: use argv_array
write_untracked_extension: use FLEX_ALLOC helper
fast-import: simplify allocation in start_packfile
fetch-pack: simplify add_sought_entry
test-path-utils: fix normalize_path_copy output buffer size
sequencer: simplify memory allocation of get_message
git-compat-util: drop mempcpy compat code
transport_anonymize_url: use xstrfmt
diff_populate_gitlink: use a strbuf
convert ewah/bitmap code to use xmalloc
ewah: convert to REALLOC_ARRAY, etc
merge-one-file: use empty blob for add/add base
merge-tree: drop generate_common strategy
xdiff: drop XDL_EMIT_COMMON
t5313: test bounds-checks of corrupted/malicious pack/idx files
nth_packed_object_offset: bounds-check extended offset
use_pack: handle signed off_t overflow
write_or_die: handle EPIPE in async threads
fetch-pack: ignore SIGPIPE in sideband demuxer
test_must_fail: report number of unexpected signal
t5504: handle expected output from SIGPIPE death
compat/mingw: brown paper bag fix for 50a6c8e

Johannes Schindelin (1):
git config: report when trying to modify a non-existing repo config

John Keeping (2):
t8005: avoid grep on non-ASCII data
t9200: avoid grep on non-ASCII data

Junio C Hamano (4):
pager: lose a separate argv[]
pager: factor out a helper to prepare a child process to run the pager
am -i: fix "v"iew
Git 2.7.3

Martin Amdisen (1):
templates/hooks: fix minor typo in the sample update-hook

Matthieu Moy (1):
Documentation/git-push: document that 'simple' is the default

Michael J Gruber (1):
tests: rename work-tree tests to *work-tree*

Nguyán ThÃi Ngác Duy (2):
rev-parse: take prefix into account in --git-common-dir
sha1_file.c: mark strings for translation

Patrick Steinhardt (16):
config: introduce set_or_die wrappers
branch: report errors in tracking branch setup
branch: die on config error when unsetting upstream
branch: die on config error when editing branch description
submodule: die on config error when linking modules
submodule--helper: die on config error when cloning module
remote: die on config error when setting URL
remote: die on config error when setting/adding branches
remote: die on config error when manipulating remotes
clone: die on config error in cmd_clone
init-db: die on config errors when initializing empty repo
sequencer: die on config error when saving replay opts
compat: die when unable to set core.precomposeunicode
config: rename git_config_set to git_config_set_gently
config: rename git_config_set_or_die to git_config_set
xdiff/xmerge: fix memory leak in xdl_merge

Shawn O. Pearce (1):
remote-curl: include curl_errorstr on SSL setup failures

Stefan Beller (1):
submodule helper list: respect correct path prefix