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