The latest maintenance release Git v2.11.1 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.11.1' 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.11.1 Release Notes =========================
Fixes since v2.11 -----------------
* The default Travis-CI configuration specifies newer P4 and GitLFS.
* The character width table has been updated to match Unicode 9.0
* Update the isatty() emulation for Windows by updating the previous hack that depended on internals of (older) MSVC runtime.
* "git rev-parse --symbolic" failed with a more recent notation like "HEAD^-1" and "HEAD^!".
* An empty directory in a working tree that can simply be nuked used to interfere while merging or cherry-picking a change to create a submodule directory there, which has been fixed..
* The code in "git push" to compute if any commit being pushed in the superproject binds a commit in a submodule that hasn't been pushed out was overly inefficient, making it unusable even for a small project that does not have any submodule but have a reasonable number of refs.
* "git push --dry-run --recurse-submodule=on-demand" wasn't "--dry-run" in the submodules.
* The output from "git worktree list" was made in readdir() order, and was unstable.
* mergetool.<tool>.trustExitCode configuration variable did not apply to built-in tools, but now it does.
* "git p4" LFS support was broken when LFS stores an empty blob.
* Fix a corner case in merge-recursive regression that crept in during 2.10 development cycle.
* Update the error messages from the dumb-http client when it fails to obtain loose objects; we used to give sensible error message only upon 404 but we now forbid unexpected redirects that needs to be reported with something sensible.
* When diff.renames configuration is on (and with Git 2.9 and later, it is enabled by default, which made it worse), "git stash" misbehaved if a file is removed and another file with a very similar content is added.
* "git diff --no-index" did not take "--no-abbrev" option.
* "git difftool --dir-diff" had a minor regression when started from a subdirectory, which has been fixed.
* "git commit --allow-empty --only" (no pathspec) with dirty index ought to be an acceptable way to create a new commit that does not change any paths, but it was forbidden, perhaps because nobody needed it so far.
* A pathname that begins with "//" or "\\" on Windows is special but path normalization logic was unaware of it.
* "git pull --rebase", when there is no new commits on our side since we forked from the upstream, should be able to fast-forward without invoking "git rebase", but it didn't.
* The way to specify hotkeys to "xxdiff" that is used by "git mergetool" has been modernized to match recent versions of xxdiff.
* Unlike "git am --abort", "git cherry-pick --abort" moved HEAD back to where cherry-pick started while picking multiple changes, when the cherry-pick stopped to ask for help from the user, and the user did "git reset --hard" to a different commit in order to re-attempt the operation.
* Code cleanup in shallow boundary computation.
* A recent update to receive-pack to make it easier to drop garbage objects made it clear that GIT_ALTERNATE_OBJECT_DIRECTORIES cannot have a pathname with a colon in it (no surprise!), and this in turn made it impossible to push into a repository at such a path. This has been fixed by introducing a quoting mechanism used when appending such a path to the colon-separated list.
* The function usage_msg_opt() has been updated to say "fatal:" before the custom message programs give, when they want to die with a message about wrong command line options followed by the standard usage string.
* "git index-pack --stdin" needs an access to an existing repository, but "git index-pack file.pack" to generate an .idx file that corresponds to a packfile does not.
* Fix for NDEBUG builds.
* A lazy "git push" without refspec did not internally use a fully specified refspec to perform 'current', 'simple', or 'upstream' push, causing unnecessary "ambiguous ref" errors.
* "git p4" misbehaved when swapping a directory and a symbolic link.
* Even though an fix was attempted in Git 2.9.3 days, but running "git difftool --dir-diff" from a subdirectory never worked. This has been fixed.
* "git p4" that tracks multile p4 paths imported a single changelist that touches files in these multiple paths as one commit, followed by many empty commits. This has been fixed.
* A potential but unlikely buffer overflow in Windows port has been fixed.
* When the http server gives an incomplete response to a smart-http rpc call, it could lead to client waiting for a full response that will never come. Teach the client side to notice this condition and abort the transfer.
* Some platforms no longer understand "latin-1" that is still seen in the wild in e-mail headers; replace them with "iso-8859-1" that is more widely known when conversion fails from/to it.
* Update the procedure to generate "tags" for developer support.
* Update the definition of the MacOSX test environment used by TravisCI.
* A few git-svn updates.
* Compression setting for producing packfiles were spread across three codepaths, one of which did not honor any configuration. Unify these so that all of them honor core.compression and pack.compression variables the same way.
* "git fast-import" sometimes mishandled while rebalancing notes tree, which has been fixed.
* Recent update to the default abbreviation length that auto-scales lacked documentation update, which has been corrected.
* Leakage of lockfiles in the config subsystem has been fixed.
* It is natural that "git gc --auto" may not attempt to pack everything into a single pack, and there is no point in warning when the user has configured the system to use the pack bitmap, leading to disabling further "gc".
* "git archive" did not read the standard configuration files, and failed to notice a file that is marked as binary via the userdiff driver configuration.
* "git blame --porcelain" misidentified the "previous" <commit, path> pair (aka "source") when contents came from two or more files.
* "git rebase -i" with a recent update started showing an incorrect count when squashing more than 10 commits.
* "git <cmd> @{push}" on a detached HEAD used to segfault; it has
been corrected to error out with a message.* Tighten a test to avoid mistaking an extended ERE regexp engine as a PRE regexp engine.
* Typing ^C to pager, which usually does not kill it, killed Git and took the pager down as a collateral damage in certain process-tree structure. This has been fixed.
Also contains various documentation updates and code clean-ups.
----------------------------------------------------------------
Changes since v2.11.0 are as follows:
Alan Davies (1):
mingw: fix colourization on Cygwin pseudo terminalsAndreas Krey (2):
commit: make --only --allow-empty work without paths
commit: remove 'Clever' message for --only --amendBeat Bolli (6):
update_unicode.sh: move it into contrib/update-unicode
update_unicode.sh: remove an unnecessary subshell level
update_unicode.sh: pin the uniset repo to a known good commit
update_unicode.sh: automatically download newer definition files
update_unicode.sh: remove the plane filter
unicode_width.h: update the width tables to Unicode 9.0Brandon Williams (2):
push: --dry-run updates submodules when --recurse-submodules=on-demand
push: fix --dry-run to not push submodulesChristian Couder (1):
Documentation/bisect: improve on (bad|new) and (good|bad)David Aguilar (8):
mergetool: honor mergetool.$tool.trustExitCode for built-in tools
mergetools/vimdiff: trust Vim's exit code
difftool: fix dir-diff index creation when in a subdirectory
difftool: fix dir-diff index creation when in a subdirectory
difftool: sanitize $workdir as early as possible
difftool: chdir as early as possible
difftool: rename variables for consistency
mergetools: fix xxdiff hotkeysDavid Turner (5):
submodules: allow empty working-tree dirs in merge/cherry-pick
remote-curl: don't hang when a server dies before any output
upload-pack: optionally allow fetching any sha1
auto gc: don't write bitmaps for incremental repacks
repack: die on incremental + write-bitmap-indexDennis Kaarsemaker (1):
push: test pushing ambiguously named branchesEric Wong (2):
git-svn: allow "0" in SVN path components
git-svn: document useLogAuthor and addAuthorFrom config keysGeorge Vanburgh (1):
git-p4: fix multi-path changelist empty commitsHeiko Voigt (4):
serialize collection of changed submodules
serialize collection of refs that contain submodule changes
batch check whether submodule needs pushing into one call
submodule_needs_pushing(): explain the behaviour when we cannot answerJack Bates (1):
diff: handle --no-abbrev in no-index caseJeff Hostetler (1):
mingw: replace isatty() hackJeff King (32):
rev-parse: fix parent shorthands with --symbolic
t7610: clean up foo.XXXXXX tmpdir
http: simplify update_url_from_redirect
http: always update the base URL for redirects
remote-curl: rename shadowed options variable
http: make redirects more obvious
http: treat http-alternates like redirects
http-walker: complain about non-404 loose object errors
stash: prefer plumbing over git-diff
alternates: accept double-quoted paths
tmp-objdir: quote paths we add to alternates
Makefile: reformat FIND_SOURCE_FILES
Makefile: exclude test cruft from FIND_SOURCE_FILES
Makefile: match shell scripts in FIND_SOURCE_FILES
Makefile: exclude contrib from FIND_SOURCE_FILES
parse-options: print "fatal:" before usage_msg_opt()
README: replace gmane link with public-inbox
t5000: extract nongit function to test-lib-functions.sh
index-pack: complain when --stdin is used outside of a repo
t: use nongit() function where applicable
index-pack: skip collision check when not in repository
archive-zip: load userdiff config
rebase--interactive: count squash commits above 10 correctly
blame: fix alignment with --abbrev=40
blame: handle --no-abbrev
blame: output porcelain "previous" header for each file
git_exec_path: do not return the result of getenv()
execv_dashed_external: use child_process struct
execv_dashed_external: stop exiting with negative code
execv_dashed_external: wait for child on signal death
t7810: avoid assumption about invalid regex syntax
CodingGuidelines: clarify multi-line brace styleJohannes Schindelin (6):
cherry-pick: demonstrate a segmentation fault
merge-recursive: handle NULL in add_cacheinfo() correctly
mingw: intercept isatty() to handle /dev/null as Git expects it
mingw: adjust is_console() to work with stdin
git_exec_path: avoid Coverity warning about unfree()d result
mingw: follow-up to "replace isatty() hack"Johannes Sixt (3):
t5547-push-quarantine: run the path separator test on Windows, too
normalize_path_copy(): fix pushing to //server/share/dir on Windows
t5615-alternate-env: double-quotes in file names do not work on WindowsJonathan Tan (1):
fetch: do not redundantly calculate tag refmapJunio C Hamano (11):
utf8: refactor code to decide fallback encoding
utf8: accept "latin-1" as ISO-8859-1
push: do not use potentially ambiguous default refspec
compression: unify pack.compression configuration parsing
pull: fast-forward "pull --rebase=true"
preparing for 2.10.3
Revert "sequencer: remove useless get_dir() function"
config.abbrev: document the new default that auto-scales
Almost ready for 2.11.1
Ready for 2.11.1
Git 2.11.1Kristoffer Haugsbakk (4):
doc: add articles (grammar)
doc: add verb in front of command to run
doc: make the intent of sentence clearer
doc: omit needless "for"Kyle J. McKay (1):
mailinfo.c: move side-effects outside of assertKyle Meyer (1):
branch_get_push: do not segfault when HEAD is detachedLars Schneider (6):
travis-ci: update P4 to 16.2 and GitLFS to 1.5.2 in Linux build
git-p4: fix empty file processing for large file system backend GitLFS
t0021: minor filter process test cleanup
docs: warn about possible '=' in clean/smudge filter process values
t0021: fix flaky test
travis-ci: fix Perforce install on macOSLuis Ressel (1):
date-formats.txt: Typo fixLuke Diamand (1):
git-p4: avoid crash adding symlinked directoryMatt McCutchen (2):
doc: mention transfer data leaks in more places
git-gc.txt: expand discussion of races with other processesMax Kirillov (1):
mingw: consider that UNICODE_STRING::Length counts bytesMike Hommey (1):
fast-import: properly fanout notes when tree is importedNguyễn Thái Ngọc Duy (13):
worktree.c: zero new 'struct worktree' on allocation
worktree: reorder an if statement
get_worktrees() must return main worktree as first item even on error
worktree.c: get_worktrees() takes a new flag argument
worktree list: keep the list sorted
merge-recursive.c: use string_list_sort instead of qsort
shallow.c: rename fields in paint_info to better express their purposes
shallow.c: stop abusing COMMIT_SLAB_SIZE for paint_info's memory pools
shallow.c: make paint_alloc slightly more robust
shallow.c: remove useless code
config.c: handle error case for fstat() calls
config.c: rename label unlock_and_out
config.c: handle lock file in error case in git_config_rename_...Rasmus Villemoes (2):
shallow.c: avoid theoretical pointer wrap-around
shallow.c: bit manipulation tweaksStefan Beller (7):
unpack-trees: fix grammar for untracked files in directories
t3600: remove useless redirect
t3600: slightly modernize style
cache.h: document index_name_pos
cache.h: document remove_index_entry_at
cache.h: document add_[file_]to_index
documentation: retire unfinished documentationStephan Beyer (5):
am: fix filename in safe_to_abort() error message
am: change safe_to_abort()'s not rewinding error into a warning
t3510: test that cherry-pick --abort does not unsafely change HEAD
sequencer: make sequencer abort safer
sequencer: remove useless get_dir() functionTorsten Bögershausen (1):
convert: git cherry-pick -Xrenormalize did not workWolfram Sang (1):
request-pull: drop old USAGE stuff