{"thread":{"id":"46836","subject":"[ANNOUNCE] Git v2.14.2","startedAt":"2017-09-26T06:10:34Z","lastAt":"2017-09-26T06:10:34Z","messageCount":1,"participants":["Junio C Hamano"],"isPatch":false,"patchVersion":null,"patchTotal":null},"messages":[{"id":"328932","messageId":"xmqqwp4m9ejl.fsf@gitster.mtv.corp.google.com","threadId":"46836","inReplyTo":null,"subject":"[ANNOUNCE] Git v2.14.2","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2017-09-26T06:09:34Z","receivedAt":"2017-09-26T06:10:34Z","isPatch":false,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"The latest maintenance release Git v2.14.2 is now available at the\nusual places.  In addition to the cvsserver related fixes that\nappear in 2.10.5, 2.11.4, 2.12.5 and 2.13.6 announced separately,\nthis also includes various fixes that were merged already to the\n'master' branch.\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.14.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 = https://github.com/gitster/git\n\n----------------------------------------------------------------\n\nGit v2.14.2 Release Notes\n=========================\n\nFixes since v2.14.1\n-------------------\n\n * Because recent Git for Windows do come with a real msgfmt, the\n   build procedure for git-gui has been updated to use it instead of a\n   hand-rolled substitute.\n\n * \"%C(color name)\" in the pretty print format always produced ANSI\n   color escape codes, which was an early design mistake.  They now\n   honor the configuration (e.g. \"color.ui = never\") and also tty-ness\n   of the output medium.\n\n * The http.{sslkey,sslCert} configuration variables are to be\n   interpreted as a pathname that honors \"~[username]/\" prefix, but\n   weren't, which has been fixed.\n\n * Numerous bugs in walking of reflogs via \"log -g\" and friends have\n   been fixed.\n\n * \"git commit\" when seeing an totally empty message said \"you did not\n   edit the message\", which is clearly wrong.  The message has been\n   corrected.\n\n * When a directory is not readable, \"gitweb\" fails to build the\n   project list.  Work this around by skipping such a directory.\n\n * A recently added test for the \"credential-cache\" helper revealed\n   that EOF detection done around the time the connection to the cache\n   daemon is torn down were flaky.  This was fixed by reacting to\n   ECONNRESET and behaving as if we got an EOF.\n\n * Some versions of GnuPG fail to kill gpg-agent it auto-spawned\n   and such a left-over agent can interfere with a test.  Work it\n   around by attempting to kill one before starting a new test.\n\n * \"git log --tag=no-such-tag\" showed log starting from HEAD, which\n   has been fixed---it now shows nothing.\n\n * The \"tag.pager\" configuration variable was useless for those who\n   actually create tag objects, as it interfered with the use of an\n   editor.  A new mechanism has been introduced for commands to enable\n   pager depending on what operation is being carried out to fix this,\n   and then \"git tag -l\" is made to run pager by default.\n\n * \"git push --recurse-submodules $there HEAD:$target\" was not\n   propagated down to the submodules, but now it is.\n\n * Commands like \"git rebase\" accepted the --rerere-autoupdate option\n   from the command line, but did not always use it.  This has been\n   fixed.\n\n * \"git clone --recurse-submodules --quiet\" did not pass the quiet\n   option down to submodules.\n\n * \"git am -s\" has been taught that some input may end with a trailer\n   block that is not Signed-off-by: and it should refrain from adding\n   an extra blank line before adding a new sign-off in such a case.\n\n * \"git svn\" used with \"--localtime\" option did not compute the tz\n   offset for the timestamp in question and instead always used the\n   current time, which has been corrected.\n\n * Memory leaks in a few error codepaths have been plugged.\n\n * bash 4.4 or newer gave a warning on NUL byte in command\n   substitution done in \"git stash\"; this has been squelched.\n\n * \"git grep -L\" and \"git grep --quiet -L\" reported different exit\n   codes; this has been corrected.\n\n * When handshake with a subprocess filter notices that the process\n   asked for an unknown capability, Git did not report what program\n   the offending subprocess was running.  This has been corrected.\n\n * \"git apply\" that is used as a better \"patch -p1\" failed to apply a\n   taken from a file with CRLF line endings to a file with CRLF line\n   endings.  The root cause was because it misused convert_to_git()\n   that tried to do \"safe-crlf\" processing by looking at the index\n   entry at the same path, which is a nonsense---in that mode, \"apply\"\n   is not working on the data in (or derived from) the index at all.\n   This has been fixed.\n\n * Killing \"git merge --edit\" before the editor returns control left\n   the repository in a state with MERGE_MSG but without MERGE_HEAD,\n   which incorrectly tells the subsequent \"git commit\" that there was\n   a squash merge in progress.  This has been fixed.\n\n * \"git archive\" did not work well with pathspecs and the\n   export-ignore attribute.\n\n * \"git cvsserver\" no longer is invoked by \"git shell\" by default,\n   as it is old and largely unmaintained.\n\n * Various Perl scripts did not use safe_pipe_capture() instead of\n   backticks, leaving them susceptible to end-user input.  They have\n   been corrected.\n\nAlso contains various documentation updates and code clean-ups.\n\nCredits go to joernchen <joernchen@phenoelit.de> for finding the\nunsafe constructs in \"git cvsserver\", and to Jeff King at GitHub for\nfinding and fixing instances of the same issue in other scripts.\n\n----------------------------------------------------------------\n\nChanges since v2.14.1 are as follows:\n\nAndreas Heiduk (2):\n      doc: add missing values \"none\" and \"default\" for diff.wsErrorHighlight\n      doc: clarify \"config --bool\" behaviour with empty string\n\nAnthony Sottile (1):\n      git-grep: correct exit code with --quiet and -L\n\nBrandon Williams (2):\n      submodule--helper: teach push-check to handle HEAD\n      clone: teach recursive clones to respect -q\n\nChristian Couder (2):\n      refs: use skip_prefix() in ref_is_hidden()\n      sub-process: print the cmd when a capability is unsupported\n\nDimitrios Christidis (1):\n      fmt-merge-msg: fix coding style\n\nHeiko Voigt (1):\n      t5526: fix some broken && chains\n\nHielke Christian Braun (1):\n      gitweb: skip unreadable subdirectories\n\nJeff King (32):\n      t1414: document some reflog-walk oddities\n      revision: disallow reflog walking with revs->limited\n      log: clarify comment about reflog cycles\n      log: do not free parents when walking reflog\n      get_revision_1(): replace do-while with an early return\n      rev-list: check reflog_info before showing usage\n      reflog-walk: stop using fake parents\n      reflog-walk: apply --since/--until to reflog dates\n      check return value of verify_ref_format()\n      docs/for-each-ref: update pointer to color syntax\n      t: use test_decode_color rather than literal ANSI codes\n      ref-filter: simplify automatic color reset\n      ref-filter: abstract ref format into its own struct\n      ref-filter: move need_color_reset_at_eol into ref_format\n      ref-filter: provide a function for parsing sort options\n      ref-filter: make parse_ref_filter_atom a private function\n      ref-filter: factor out the parsing of sorting atoms\n      ref-filter: pass ref_format struct to atom parsers\n      color: check color.ui in git_default_config()\n      for-each-ref: load config earlier\n      rev-list: pass diffopt->use_colors through to pretty-print\n      pretty: respect color settings for %C placeholders\n      ref-filter: consult want_color() before emitting colors\n      t6018: flesh out empty input/output rev-list tests\n      revision: add rev_input_given flag\n      rev-list: don't show usage when we see empty ref patterns\n      revision: do not fallback to default when rev_input_given is set\n      hashcmp: use memcmp instead of open-coded loop\n      doc: fix typo in sendemail.identity\n      shell: drop git-cvsserver support by default\n      archimport: use safe_pipe_capture for user input\n      cvsimport: shell-quote variable used in backticks\n\nJohannes Schindelin (2):\n      run_processes_parallel: change confusing task_cb convention\n      git-gui (MinGW): make use of MSys2's msgfmt\n\nJonathan Nieder (4):\n      vcs-svn: remove more unused prototypes and declarations\n      vcs-svn: remove custom mode constants\n      vcs-svn: remove repo_delete wrapper function\n      vcs-svn: move remaining repo_tree functions to fast_export.h\n\nJonathan Tan (7):\n      fsck: remove redundant parse_tree() invocation\n      object: remove \"used\" field from struct object\n      fsck: cleanup unused variable\n      Documentation: migrate sub-process docs to header\n      sub-process: refactor handshake to common function\n      tests: ensure fsck fails on corrupt packfiles\n      Doc: clarify that pack-objects makes packs, plural\n\nJunio C Hamano (11):\n      http.c: http.sslcert and http.sslkey are both pathnames\n      perl/Git.pm: typofix in a comment\n      Prepare for 2.14.2\n      RelNotes: further fixes for 2.14.2 from the master front\n      cvsserver: move safe_pipe_capture() to the main package\n      cvsserver: use safe_pipe_capture for `constant commands` as well\n      Git 2.10.5\n      Git 2.11.4\n      Git 2.12.5\n      Git 2.13.6\n      Git 2.14.2\n\nKaartic Sivaraam (1):\n      commit: check for empty message before the check for untouched template\n\nKevin Daudt (1):\n      stash: prevent warning about null bytes in input\n\nLars Schneider (7):\n      t0021: keep filter log files on comparison\n      t0021: make debug log file name configurable\n      t0021: write \"OUT <size>\" only on success\n      convert: put the flags field before the flag itself for consistent style\n      convert: move multiple file filter error handling to separate function\n      convert: refactor capabilities negotiation\n      convert: add \"status=delayed\" to filter process protocol\n\nMartin Ågren (7):\n      builtin.h: take over documentation from api-builtin.txt\n      git.c: let builtins opt for handling `pager.foo` themselves\n      git.c: provide setup_auto_pager()\n      t7006: add tests for how git tag paginates\n      tag: respect `pager.tag` in list-mode only\n      tag: change default of `pager.tag` to \"on\"\n      git.c: ignore pager.* when launching builtin as dashed external\n\nMichael Forney (1):\n      scripts: use \"git foo\" not \"git-foo\"\n\nMichael J Gruber (6):\n      Documentation: use proper wording for ref format strings\n      Documentation/git-for-each-ref: clarify peeling of tags for --format\n      Documentation/git-merge: explain --continue\n      merge: clarify call chain\n      merge: split write_merge_state in two\n      merge: save merge state earlier\n\nPhilip Oakley (4):\n      git-gui: remove duplicate entries from .gitconfig's gui.recentrepo\n      git gui: cope with duplicates in _get_recentrepo\n      git gui: de-dup selected repo from recentrepo history\n      git gui: allow for a long recentrepo list\n\nPhillip Wood (7):\n      am: remember --rerere-autoupdate setting\n      rebase: honor --rerere-autoupdate\n      rebase -i: honor --rerere-autoupdate\n      t3504: use test_commit\n      cherry-pick/revert: remember --rerere-autoupdate\n      cherry-pick/revert: reject --rerere-autoupdate when continuing\n      am: fix signoff when other trailers are present\n\nRamsay Jones (2):\n      credential-cache: interpret an ECONNRESET as an EOF\n      builtin/add: add detail to a 'cannot chmod' error message\n\nRené Scharfe (23):\n      bswap: convert to unsigned before shifting in get_be32\n      bswap: convert get_be16, get_be32 and put_be32 to inline functions\n      add MOVE_ARRAY\n      use MOVE_ARRAY\n      apply: use COPY_ARRAY and MOVE_ARRAY in update_image()\n      ls-files: don't try to prune an empty index\n      dir: support platforms that require aligned reads\n      pack-objects: remove unnecessary NULL check\n      t0001: skip test with restrictive permissions if getpwd(3) respects them\n      test-path-utils: handle const parameter of basename and dirname\n      t3700: fix broken test under !POSIXPERM\n      t4062: use less than 256 repetitions in regex\n      sha1_file: avoid comparison if no packed hash matches the first byte\n      apply: remove prefix_length member from apply_state\n      merge: use skip_prefix()\n      win32: plug memory leak on realloc() failure in syslog()\n      fsck: free buffers on error in fsck_obj()\n      sha1_file: release delta_stack on error in unpack_entry()\n      t1002: stop using sum(1)\n      t5001: add tests for export-ignore attributes and exclude pathspecs\n      archive: factor out helper functions for handling attributes\n      archive: don't queue excluded directories\n      commit: remove unused inline function single_parent()\n\nSantiago Torres (1):\n      t: lib-gpg: flush gpg agent on startup\n\nStefan Beller (3):\n      t8008: rely on rev-parse'd HEAD instead of sha1 value\n      sha1_file: make read_info_alternates static\n      submodule.sh: remove unused variable\n\nTorsten Bögershausen (2):\n      convert: add SAFE_CRLF_KEEP_CRLF\n      apply: file commited with CRLF should roundtrip diff and apply\n\nUrs Thuermann (1):\n      git svn fetch: Create correct commit timestamp when using --localtime\n\nbrian m. carlson (2):\n      vcs-svn: remove unused prototypes\n      vcs-svn: rename repo functions to \"svn_repo\"\n\njoernchen (1):\n      cvsserver: use safe_pipe_capture instead of backticks\n\nÆvar Arnfjörð Bjarmason (1):\n      tests: don't give unportable \">\" to \"test\" built-in, use -gt\n\n\n"}]}