{"thread":{"id":"45501","subject":"[ANNOUNCE] Git v2.12.2","startedAt":"2017-03-24T21:19:50Z","lastAt":"2017-03-24T21:19:50Z","messageCount":1,"participants":["Junio C Hamano"],"isPatch":false,"patchVersion":null,"patchTotal":null},"messages":[{"id":"315331","messageId":"xmqqa88a74pg.fsf@gitster.mtv.corp.google.com","threadId":"45501","inReplyTo":null,"subject":"[ANNOUNCE] Git v2.12.2","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2017-03-24T21:19:39Z","receivedAt":"2017-03-24T21:19:50Z","isPatch":false,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"The latest maintenance release Git v2.12.2 is now available at the\nusual places.  These fixes have all been in the 'master' branch to\nbe included in the next feature release.\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.12.2'\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.12.2 Release Notes\n=========================\n\nFixes since v2.12.1\n-------------------\n\n * \"git status --porcelain\" is supposed to give a stable output, but a\n   few strings were left as translatable by mistake.\n\n * \"Dumb http\" transport used to misparse a nonsense http-alternates\n   response, which has been fixed.\n\n * \"git diff --quiet\" relies on the size field in diff_filespec to be\n   correctly populated, but diff_populate_filespec() helper function\n   made an incorrect short-cut when asked only to populate the size\n   field for paths that need to go through convert_to_git() (e.g. CRLF\n   conversion).\n\n * There is no need for Python only to give a few messages to the\n   standard error stream, but we somehow did.\n\n * A leak in a codepath to read from a packed object in (rare) cases\n   has been plugged.\n\n * \"git upload-pack\", which is a counter-part of \"git fetch\", did not\n   report a request for a ref that was not advertised as invalid.\n   This is generally not a problem (because \"git fetch\" will stop\n   before making such a request), but is the right thing to do.\n\n * A \"gc.log\" file left by a backgrounded \"gc --auto\" disables further\n   automatic gc; it has been taught to run at least once a day (by\n   default) by ignoring a stale \"gc.log\" file that is too old.\n\n * \"git remote rm X\", when a branch has remote X configured as the\n   value of its branch.*.remote, tried to remove branch.*.remote and\n   branch.*.merge and failed if either is unset.\n\n * A caller of tempfile API that uses stdio interface to write to\n   files may ignore errors while writing, which is detected when\n   tempfile is closed (with a call to ferror()).  By that time, the\n   original errno that may have told us what went wrong is likely to\n   be long gone and was overwritten by an irrelevant value.\n   close_tempfile() now resets errno to EIO to make errno at least\n   predictable.\n\n * \"git show-branch\" expected there were only very short branch names\n   in the repository and used a fixed-length buffer to hold them\n   without checking for overflow.\n\n * The code that parses header fields in the commit object has been\n   updated for (micro)performance and code hygiene.\n\n * A test that creates a confusing branch whose name is HEAD has been\n   corrected not to do so.\n\n * \"Cc:\" on the trailer part does not have to conform to RFC strictly,\n   unlike in the e-mail header.  \"git send-email\" has been updated to\n   ignore anything after '>' when picking addresses, to allow non-address\n   cruft like \" # stable 4.4\" after the address.\n\n * \"git push\" had a handful of codepaths that could lead to a deadlock\n   when unexpected error happened, which has been fixed.\n\n * Code to read submodule.<name>.ignore config did not state the\n   variable name correctly when giving an error message diagnosing\n   misconfiguration.\n\n * \"git ls-remote\" and \"git archive --remote\" are designed to work\n   without being in a directory under Git's control.  However, recent\n   updates revealed that we randomly look into a directory called\n   .git/ without actually doing necessary set-up when working in a\n   repository.  Stop doing so.\n\n * The code to parse the command line \"git grep <patterns>... <rev>\n   [[--] <pathspec>...]\" has been cleaned up, and a handful of bugs\n   have been fixed (e.g. we used to check \"--\" if it is a rev).\n\n * The code to parse \"git -c VAR=VAL cmd\" and set configuration\n   variable for the duration of cmd had two small bugs, which have\n   been fixed.\n   This supersedes jc/config-case-cmdline topic that has been discarded.\n\nAlso contains various documentation updates and code clean-ups.\n\n----------------------------------------------------------------\n\nChanges since v2.12.1 are as follows:\n\nDavid Turner (1):\n      gc: ignore old gc.log files\n\nEric Wong (1):\n      README: create HTTP/HTTPS links from URLs in Markdown\n\nJeff King (20):\n      grep: move thread initialization a little lower\n      grep: re-order rev-parsing loop\n      grep: fix \"--\" rev/pathspec disambiguation\n      grep: avoid resolving revision names in --no-index case\n      grep: do not diagnose misspelt revs with --no-index\n      show-branch: drop head_len variable\n      show-branch: store resolved head in heap buffer\n      remote: avoid reading $GIT_DIR config in non-repo\n      grep: treat revs the same for --untracked as for --no-index\n      show-branch: use skip_prefix to drop magic numbers\n      tempfile: set errno to a known value before calling ferror()\n      t6300: avoid creating refs/heads/HEAD\n      ewah: fix eword_t/uint64_t confusion\n      receive-pack: fix deadlock when we cannot create tmpdir\n      send-pack: extract parsing of \"unpack\" response\n      send-pack: use skip_prefix for parsing unpack status\n      send-pack: improve unpack-status error messages\n      send-pack: read \"unpack\" status even on pack-objects failure\n      send-pack: report signal death of pack-objects\n      http-walker: fix buffer underflow processing remote alternates\n\nJohan Hovold (1):\n      send-email: only allow one address per body tag\n\nJonathan Nieder (1):\n      remote helpers: avoid blind fall-back to \".git\" when setting GIT_DIR\n\nJonathan Tan (2):\n      grep: do not unnecessarily query repo for \"--\"\n      upload-pack: report \"not our ref\" to client\n\nJunio C Hamano (5):\n      config: move a few helper functions up\n      config: use git_config_parse_key() in git_config_parse_parameter()\n      diff: do not short-cut CHECK_SIZE_ONLY check in diff_populate_filespec()\n      Prepare for 2.12.2\n      Git 2.12.2\n\nMichael J Gruber (2):\n      git-status: make porcelain more robust\n      mailmap: use Michael J Gruber's new address\n\nNguyễn Thái Ngọc Duy (1):\n      git-commit.txt: list post-rewrite in HOOKS section\n\nPatrick Steinhardt (2):\n      docs/diffcore: fix grammar in diffcore-rename header\n      docs/diffcore: unquote \"Complete Rewrites\" in headers\n\nRamsay Jones (2):\n      wrapper.c: remove unused git_mkstemp() function\n      wrapper.c: remove unused gitmkstemps() function\n\nRené Scharfe (3):\n      sha1_file: release fallback base's memory in unpack_entry()\n      commit: be more precise when searching for headers\n      commit: don't check for space twice when looking for header\n\nRoss Lagerwall (1):\n      remote: ignore failure to remove missing branch.<name>.merge\n\nSebastian Schuberth (1):\n      contrib: git-remote-{bzr,hg} placeholders don't need Python\n\nStefan Beller (1):\n      submodule-config: correct error reporting for invalid ignore value\n\nÆvar Arnfjörð Bjarmason (2):\n      doc: change erroneous --[no]-whatever into --[no-]whatever\n      push: mention \"push.default=tracking\" in the documentation\n\n"}]}