[ANNOUNCE] Git v2.8.3

From: Junio C Hamano
Date: Thu May 19 2016 - 13:48:58 EST


The latest maintenance release Git v2.8.3 is now available at
the usual places.

The tarballs are found at:

https://www.kernel.org/pub/software/scm/git/

The following public repositories all have a copy of the 'v2.8.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.8.3 Release Notes
========================

Fixes since v2.8.2
------------------

* "git send-email" now uses a more readable timestamps when
formulating a message ID.

* The repository set-up sequence has been streamlined (the biggest
change is that there is no longer git_config_early()), so that we
do not attempt to look into refs/* when we know we do not have a
Git repository.

* When "git worktree" feature is in use, "git branch -d" allowed
deletion of a branch that is checked out in another worktree

* When "git worktree" feature is in use, "git branch -m" renamed a
branch that is checked out in another worktree without adjusting
the HEAD symbolic ref for the worktree.

* "git format-patch --help" showed `-s` and `--no-patch` as if these
are valid options to the command. We already hide `--patch` option
from the documentation, because format-patch is about showing the
diff, and the documentation now hides these options as well.

* A change back in version 2.7 to "git branch" broke display of a
symbolic ref in a non-standard place in the refs/ hierarchy (we
expect symbolic refs to appear in refs/remotes/*/HEAD to point at
the primary branch the remote has, and as .git/HEAD to point at the
branch we locally checked out).

* A partial rewrite of "git submodule" in the 2.7 timeframe changed
the way the gitdir: pointer in the submodules point at the real
repository location to use absolute paths by accident. This has
been corrected.

* "git commit" misbehaved in a few minor ways when an empty message
is given via -m '', all of which has been corrected.

* Support for CRAM-MD5 authentication method in "git imap-send" did
not work well.

* The socks5:// proxy support added back in 2.6.4 days was not aware
that socks5h:// proxies behave differently.

* "git config" had a codepath that tried to pass a NULL to
printf("%s"), which nobody seems to have noticed.

* On Cygwin, object creation uses the "create a temporary and then
rename it to the final name" pattern, not "create a temporary,
hardlink it to the final name and then unlink the temporary"
pattern.

This is necessary to use Git on Windows shared directories, and is
already enabled for the MinGW and plain Windows builds. It also
has been used in Cygwin packaged versions of Git for quite a while.
See http://thread.gmane.org/gmane.comp.version-control.git/291853
and http://thread.gmane.org/gmane.comp.version-control.git/275680.

* "git replace -e" did not honour "core.editor" configuration.

* Upcoming OpenSSL 1.1.0 will break compilation b updating a few APIs
we use in imap-send, which has been adjusted for the change.

* "git submodule" reports the paths of submodules the command
recurses into, but this was incorrect when the command was not run
from the root level of the superproject.

* The test scripts for "git p4" (but not "git p4" implementation
itself) has been updated so that they would work even on a system
where the installed version of Python is python 3.

* The "user.useConfigOnly" configuration variable makes it an error
if users do not explicitly set user.name and user.email. However,
its check was not done early enough and allowed another error to
trigger, reporting that the default value we guessed from the
system setting was unusable. This was a suboptimal end-user
experience as we want the users to set user.name/user.email without
relying on the auto-detection at all.

* "git mv old new" did not adjust the path for a submodule that lives
as a subdirectory inside old/ directory correctly.

* "git push" from a corrupt repository that attempts to push a large
number of refs deadlocked; the thread to relay rejection notices
for these ref updates blocked on writing them to the main thread,
after the main thread at the receiving end notices that the push
failed and decides not to read these notices and return a failure.

* A question by "git send-email" to ask the identity of the sender
has been updated.

* Recent update to Git LFS broke "git p4" by changing the output from
its "lfs pointer" subcommand.

* Some multi-byte encoding can have a backslash byte as a later part
of one letter, which would confuse "highlight" filter used in
gitweb.

Also contains minor documentation updates and code clean-ups.

----------------------------------------------------------------

Changes since v2.8.2 are as follows:

Adam Dinwoodie (2):
config.mak.uname: Cygwin needs OBJECT_CREATION_USES_RENAMES
commit: --amend -m '' silently fails to wipe message

Christian Couder (3):
builtin/apply: get rid of useless 'name' variable
builtin/apply: handle parse_binary() failure
builtin/apply: free patch when parse_chunk() fails

Eric Sunshine (1):
git-format-patch.txt: don't show -s as shorthand for multiple options

Eric Wong (4):
send-email: more meaningful Message-ID
send-email: do not load Data::Dumper
pack-objects: warn on split packs disabling bitmaps
.mailmap: update to my shorter email address

Jeff King (22):
setup: document check_repository_format()
wrap shared_repository global in get/set accessors
lazily load core.sharedrepository
check_repository_format_gently: stop using git_config_early
config: drop git_config_early
setup: refactor repo format reading and verification
init: use setup.c's repo version verification
setup: unify repository version callbacks
setup: drop repository_format_version global
verify_repository_format: mark messages for translation
branch: fix shortening of non-remote symrefs
commit: do not ignore an empty message given by -m ''
config: lower-case first word of error strings
git_config_set_multivar_in_file: all non-zero returns are errors
git_config_set_multivar_in_file: handle "unset" errors
t5532: use write_script
send-pack: close demux pipe before finishing async process
run-command: teach async threads to ignore SIGPIPE
send-pack: isolate sigpipe in demuxer thread
fetch-pack: isolate sigpipe in demuxer thread
t5504: drop sigpipe=ok from push tests
remote.c: spell __attribute__ correctly

Johannes Schindelin (5):
replace --edit: respect core.editor
win32mmap: set errno appropriately
mmap(win32): avoid copy-on-write when it is unnecessary
mmap(win32): avoid expensive fstat() call
Windows: only add a no-op pthread_sigmask() when needed

Johannes Sixt (1):
Windows: add pthread_sigmask() that does nothing

Junio C Hamano (10):
apply: remove unused call to free() in gitdiff_{old,new}name()
submodule--helper: do not borrow absolute_path() result for too long
setup.c: do not feed NULL to "%.*s" even with precision 0
http: differentiate socks5:// and socks5h://
t1020: do not overuse printf and use write_script
t3404: use write_script
send-email: fix grammo in the prompt that asks e-mail recipients
Start preparing for 2.8.3
Almost ready for 2.8.3
Git 2.8.3

Kazuki Yamaguchi (10):
branch -d: refuse deleting a branch which is currently checked out
refs: add a new function set_worktree_head_symref
branch -m: update all per-worktree HEADs
set_worktree_head_symref(): fix error message
imap-send: use HMAC() function provided by OpenSSL
imap-send: check NULL return of SSL_CTX_new()
imap-send: avoid deprecated TLSv1_method()
configure: remove checking for HMAC_CTX_cleanup
imap-send: check for NOLOGIN capability only when using LOGIN command
imap-send: fix CRAM-MD5 response calculation

Lars Schneider (5):
travis-ci: update Git-LFS and P4 to the latest version
travis-ci: express Linux/OS X dependency versions more clearly
git-p4: fix Git LFS pointer parsing
t9824: fix wrong reference value
Documentation: add setup instructions for Travis CI

Luke Diamand (3):
git-p4 tests: cd to / before running python
git-p4 tests: work with python3 as well as python2
git-p4 tests: time_in_seconds should use $PYTHON_PATH

Marios Titas (2):
ident: check for useConfigOnly before auto-detection of name/email
ident: give "please tell me" message upon useConfigOnly error

Matthieu Moy (1):
git-multimail: update to release 1.3.0

Nguyán ThÃi Ngác Duy (2):
dir.c: remove dead function fnmatch_icase()
wrapper.c: delete dead function git_mkstemps()

Nikola Forrà (1):
difftool/mergetool: make the form of yes/no questions consistent

Ralf Thielow (1):
string_list: use string-list API in unsorted_string_list_lookup()

Renà Nyffenegger (1):
Documentation: fix typo 'In such these cases'

SZEDER GÃbor (4):
for-each-ref: fix description of '--contains' in manpage
test-lib: simplify '--option=value' parsing
t9824: fix broken &&-chain in a subshell
t5510: run auto-gc in the foreground

Shin Kojima (1):
gitweb: apply fallback encoding before highlight

Stefan Beller (20):
submodule foreach: correct path display in recursive submodules
submodule update --init: correct path handling in recursive submodules
submodule status: correct path handling in recursive submodules
submodule update: align reporting path for custom command execution
submodule update: test recursive path reporting from subdirectory
t7407: make expectation as clear as possible
recursive submodules: test for relative paths
submodule--helper: fix potential NULL-dereference
submodule--helper clone: create the submodule path just once
notes: don't leak memory in git_config_get_notes_strategy
abbrev_sha1_in_line: don't leak memory
bundle: don't leak an fd in case of early return
credential-cache, send_request: close fd when done
submodule--helper, module_clone: always operate on absolute paths
submodule--helper, module_clone: catch fprintf failure
mv: allow moving nested submodules
config doc: improve exit code listing
config.c: drop local variable
submodule-config: don't shadow `cache`
t7300: mark test with SANITY