{"thread":{"id":"43799","subject":"[ANNOUNCE] Git v2.9.3","startedAt":"2016-08-12T19:56:22Z","lastAt":"2016-08-12T19:56:22Z","messageCount":1,"participants":["Junio C Hamano"],"isPatch":false,"patchVersion":null,"patchTotal":null},"messages":[{"id":"298887","messageId":"xmqq37m9wymv.fsf@gitster.mtv.corp.google.com","threadId":"43799","inReplyTo":null,"subject":"[ANNOUNCE] Git v2.9.3","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2016-08-12T19:55:20Z","receivedAt":"2016-08-12T19:56:22Z","isPatch":false,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"\nThe latest maintenance release Git v2.9.3 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.9.3'\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.9.3 Release Notes\n========================\n\nFixes since v2.9.2\n------------------\n\n * A helper function that takes the contents of a commit object and\n   finds its subject line did not ignore leading blank lines, as is\n   commonly done by other codepaths.  Make it ignore leading blank\n   lines to match.\n\n * Git does not know what the contents in the index should be for a\n   path added with \"git add -N\" yet, so \"git grep --cached\" should not\n   show hits (or show lack of hits, with -L) in such a path, but that\n   logic does not apply to \"git grep\", i.e. searching in the working\n   tree files.  But we did so by mistake, which has been corrected.\n\n * \"git rebase -i --autostash\" did not restore the auto-stashed change\n   when the operation was aborted.\n\n * \"git commit --amend --allow-empty-message -S\" for a commit without\n   any message body could have misidentified where the header of the\n   commit object ends.\n\n * More mark-up updates to typeset strings that are expected to\n   literally typed by the end user in fixed-width font.\n\n * For a long time, we carried an in-code comment that said our\n   colored output would work only when we use fprintf/fputs on\n   Windows, which no longer is the case for the past few years.\n\n * \"gc.autoPackLimit\" when set to 1 should not trigger a repacking\n   when there is only one pack, but the code counted poorly and did\n   so.\n\n * One part of \"git am\" had an oddball helper function that called\n   stuff from outside \"his\" as opposed to calling what we have \"ours\",\n   which was not gender-neutral and also inconsistent with the rest of\n   the system where outside stuff is usuall called \"theirs\" in\n   contrast to \"ours\".\n\n * The test framework learned a new helper test_match_signal to\n   check an exit code from getting killed by an expected signal.\n\n * \"git blame -M\" missed a single line that was moved within the file.\n\n * Fix recently introduced codepaths that are involved in parallel\n   submodule operations, which gave up on reading too early, and\n   could have wasted CPU while attempting to write under a corner\n   case condition.\n\n * \"git grep -i\" has been taught to fold case in non-ascii locales\n   correctly.\n\n * A test that unconditionally used \"mktemp\" learned that the command\n   is not necessarily available everywhere.\n\n * \"git blame file\" allowed the lineage of lines in the uncommitted,\n   unadded contents of \"file\" to be inspected, but it refused when\n   \"file\" did not appear in the current commit.  When \"file\" was\n   created by renaming an existing file (but the change has not been\n   committed), this restriction was unnecessarily tight.\n\n * \"git add -N dir/file && git write-tree\" produced an incorrect tree\n   when there are other paths in the same directory that sorts after\n   \"file\".\n\n * \"git fetch http://user:pass@host/repo...\" scrubbed the userinfo\n   part, but \"git push\" didn't.\n\n * An age old bug that caused \"git diff --ignore-space-at-eol\"\n   misbehave has been fixed.\n\n * \"git notes merge\" had a code to see if a path exists (and fails if\n   it does) and then open the path for writing (when it doesn't).\n   Replace it with open with O_EXCL.\n\n * \"git pack-objects\" and \"git index-pack\" mostly operate with off_t\n   when talking about the offset of objects in a packfile, but there\n   were a handful of places that used \"unsigned long\" to hold that\n   value, leading to an unintended truncation.\n\n * Recent update to \"git daemon\" tries to enable the socket-level\n   KEEPALIVE, but when it is spawned via inetd, the standard input\n   file descriptor may not necessarily be connected to a socket.\n   Suppress an ENOTSOCK error from setsockopt().\n\n * Recent FreeBSD stopped making perl available at /usr/bin/perl;\n   switch the default the built-in path to /usr/local/bin/perl on not\n   too ancient FreeBSD releases.\n\n * \"git status\" learned to suggest \"merge --abort\" during a conflicted\n   merge, just like it already suggests \"rebase --abort\" during a\n   conflicted rebase.\n\n * The .c/.h sources are marked as such in our .gitattributes file so\n   that \"git diff -W\" and friends would work better.\n\n * Existing autoconf generated test for the need to link with pthread\n   library did not check all the functions from pthread libraries;\n   recent FreeBSD has some functions in libc but not others, and we\n   mistakenly thought linking with libc is enough when it is not.\n\n * Allow http daemon tests in Travis CI tests.\n\n * Users of the parse_options_concat() API function need to allocate\n   extra slots in advance and fill them with OPT_END() when they want\n   to decide the set of supported options dynamically, which makes the\n   code error-prone and hard to read.  This has been corrected by tweaking\n   the API to allocate and return a new copy of \"struct option\" array.\n\n * The use of strbuf in \"git rm\" to build filename to remove was a bit\n   suboptimal, which has been fixed.\n\n * \"git commit --help\" said \"--no-verify\" is only about skipping the\n   pre-commit hook, and failed to say that it also skipped the\n   commit-msg hook.\n\n * \"git merge\" in Git v2.9 was taught to forbid merging an unrelated\n   lines of history by default, but that is exactly the kind of thing\n   the \"--rejoin\" mode of \"git subtree\" (in contrib/) wants to do.\n   \"git subtree\" has been taught to use the \"--allow-unrelated-histories\"\n   option to override the default.\n\n * The build procedure for \"git persistent-https\" helper (in contrib/)\n   has been updated so that it can be built with more recent versions\n   of Go.\n\n * There is an optimization used in \"git diff $treeA $treeB\" to borrow\n   an already checked-out copy in the working tree when it is known to\n   be the same as the blob being compared, expecting that open/mmap of\n   such a file is faster than reading it from the object store, which\n   involves inflating and applying delta.  This however kicked in even\n   when the checked-out copy needs to go through the convert-to-git\n   conversion (including the clean filter), which defeats the whole\n   point of the optimization.  The optimization has been disabled when\n   the conversion is necessary.\n\n * \"git -c grep.patternType=extended log --basic-regexp\" misbehaved\n   because the internal API to access the grep machinery was not\n   designed well.\n\n * Windows port was failing some tests in t4130, due to the lack of\n   inum in the returned values by its lstat(2) emulation.\n\n * The characters in the label shown for tags/refs for commits in\n   \"gitweb\" output are now properly escaped for proper HTML output.\n\n * FreeBSD can lie when asked mtime of a directory, which made the\n   untracked cache code to fall back to a slow-path, which in turn\n   caused tests in t7063 to fail because it wanted to verify the\n   behaviour of the fast-path.\n\n * Squelch compiler warnings for netmalloc (in compat/) library.\n\n * The API documentation for hashmap was unclear if hashmap_entry\n   can be safely discarded without any other consideration.  State\n   that it is safe to do so.\n\n * Not-so-recent rewrite of \"git am\" that started making internal\n   calls into the commit machinery had an unintended regression, in\n   that no matter how many seconds it took to apply many patches, the\n   resulting committer timestamp for the resulting commits were all\n   the same.\n\n * \"git difftool <paths>...\" started in a subdirectory failed to\n   interpret the paths relative to that directory, which has been\n   fixed.\n\nAlso contains minor documentation updates and code clean-ups.\n\n----------------------------------------------------------------\n\nChanges since v2.9.2 are as follows:\n\nAlex Henrie (1):\n      unpack-trees: fix English grammar in do-this-before-that messages\n\nAndreas Brauchli (1):\n      gitweb: escape link body in format_ref_marker\n\nArmin Kunaschik (1):\n      t7610: test for mktemp before test execution\n\nCharles Bailey (3):\n      t7810-grep.sh: fix duplicated test name\n      t7810-grep.sh: fix a whitespace inconsistency\n      grep: fix grepping for \"intent to add\" files\n\nChris Packham (1):\n      completion: add option '--recurse-submodules' to 'git clone'\n\nDavid A. Greene (1):\n      contrib/subtree: Add a test for subtree rebase that loses commits\n\nDavid Aguilar (4):\n      t7900-subtree.sh: fix quoting and broken && chains\n      subtree: fix \"git subtree split --rejoin\"\n      difftool: avoid $GIT_DIR and $GIT_WORK_TREE\n      difftool: use Git::* functions instead of passing around state\n\nDavid Kastrup (1):\n      blame: require 0 context lines while finding moved lines with -M\n\nEric Wong (6):\n      gc: fix off-by-one error with gc.autoPackLimit\n      xread: retry after poll on EAGAIN/EWOULDBLOCK\n      xwrite: poll on non-blocking FDs\n      hoist out handle_nonblock function for xread and xwrite\n      daemon: ignore ENOTSOCK from setsockopt\n      configure.ac: stronger test for pthread linkage\n\nHeiko Voigt (3):\n      submodule-config: passing name reference for .gitmodule blobs\n      submodule-config: combine early return code into one goto\n      submodule-config: fix test binary crashing when no arguments given\n\nJeff King (14):\n      send-pack: use buffered I/O to talk to pack-objects\n      tests: factor portable signal check out of t0005\n      t0005: use test_match_signal as appropriate\n      test_must_fail: use test_match_signal\n      t/lib-git-daemon: use test_match_signal\n      parse_options: allocate a new array when concatenating\n      Makefile: drop extra dependencies for test helpers\n      Makefile: use VCSSVN_LIB to refer to svn library\n      push: anonymize URL in status output\n      t5541: fix url scrubbing test when GPG is not set\n      diff: do not reuse worktree files that need \"clean\" conversion\n      t4205: drop top-level &&-chaining\n      t4205: indent here documents\n      am: reset cached ident date for each patch\n\nJoey Hess (1):\n      clarify %f documentation\n\nJohannes Schindelin (13):\n      pretty: make the skip_blank_lines() function public\n      commit.c: make find_commit_subject() more robust\n      color.h: remove obsolete comment about limitations on Windows\n      t3404: fix a grammo (commands are ran -> commands are run)\n      commit -C: skip blank lines at the beginning of the message\n      sequencer: use skip_blank_lines() to find the commit subject\n      reset --hard: skip blank lines when reporting the commit subject\n      commit -S: avoid invalid pointer with empty message\n      am: counteract gender bias\n      diff: demonstrate a bug with --patience and --ignore-space-at-eol\n      diff: fix a double off-by-one with --ignore-space-at-eol\n      t/test-lib.sh: fix running tests with --valgrind\n      nedmalloc: fix misleading indentation\n\nJohannes Sixt (2):\n      Windows: add missing definition of ENOTSOCK\n      t4130: work around Windows limitation\n\nJohn Keeping (1):\n      difftool: fix argument handling in subdirs\n\nJunio C Hamano (7):\n      diff: document diff-filter exclusion\n      grep: further simplify setting the pattern type\n      Some fixes for 2.9.3\n      hashmap: clarify that hashmap_entry can safely be discarded\n      Hopefully final batch for 2.9.3\n      Yet another batch for 2.9.3\n      Git 2.9.3\n\nLars Schneider (1):\n      travis-ci: enable web server tests t55xx on Linux\n\nLukas Fleischer (3):\n      sideband.c: make send_sideband() return void\n      upload-pack.c: make send_client_data() return void\n      sideband.c: refactor recv_sideband()\n\nMatthieu Moy (8):\n      Documentation/git-mv.txt: fix whitespace indentation\n      doc: typeset short command-line options as literal\n      doc: typeset long command-line options as literal\n      doc: typeset '--' as literal\n      doc: typeset long options with argument as literal\n      CodingGuidelines: formatting HEAD in documentation\n      doc: typeset HEAD and variants as literal\n      status: suggest 'git merge --abort' when appropriate\n\nMike Hommey (2):\n      blame: allow to blame paths freshly added to the index\n      t/t8003-blame-corner-cases.sh: Use here documents\n\nNguyễn Thái Ngọc Duy (26):\n      new-command.txt: correct the command description file\n      grep: break down an \"if\" stmt in preparation for next changes\n      test-regex: isolate the bug test code\n      test-regex: expose full regcomp() to the command line\n      grep/icase: avoid kwsset on literal non-ascii strings\n      grep/icase: avoid kwsset when -F is specified\n      grep: rewrite an if/else condition to avoid duplicate expression\n      grep/pcre: prepare locale-dependent tables for icase matching\n      gettext: add is_utf8_locale()\n      grep/pcre: support utf-8\n      diffcore-pickaxe: Add regcomp_or_die()\n      diffcore-pickaxe: support case insensitive match on non-ascii\n      grep.c: reuse \"icase\" variable\n      pack-objects: pass length to check_pack_crc() without truncation\n      sha1_file.c: use type off_t* for object_info->disk_sizep\n      index-pack: correct \"len\" type in unpack_data()\n      index-pack: report correct bad object offsets even if they are large\n      index-pack: correct \"offset\" type in unpack_entry_data()\n      pack-objects: do not truncate result in-pack object size on 32-bit systems\n      fsck: use streaming interface for large blobs in pack\n      test-lib.sh: introduce and use $EMPTY_TREE\n      test-lib.sh: introduce and use $EMPTY_BLOB\n      cache-tree.c: fix i-t-a entry skipping directory updates sometimes\n      cache-tree: do not generate empty trees as a result of all i-t-a subentries\n      config.mak.uname: correct perl path on FreeBSD\n      t7063: work around FreeBSD's lazy mtime update feature\n\nNicolas Pitre (1):\n      sideband.c: small optimization of strbuf usage\n\nOrgad Shaneh (1):\n      commit: describe that --no-verify skips the commit-msg hook in the help text\n\nParker Moore (2):\n      contrib/persistent-https: update ldflags syntax for Go 1.7+\n      contrib/persistent-https: use Git version for build label\n\nPatrick Steinhardt (1):\n      rebase -i: restore autostash on abort\n\nPranit Bauva (1):\n      builtin/commit.c: memoize git-path for COMMIT_EDITMSG\n\nRamsay Jones (1):\n      write_or_die: remove the unused write_or_whine() function\n\nRené Scharfe (10):\n      .gitattributes: set file type for C files\n      notes-merge: use O_EXCL to avoid overwriting existing files\n      rm: reuse strbuf for all remove_dir_recursively() calls\n      worktree: use strbuf_add_absolute_path() directly\n      use strbuf_addbuf() for appending a strbuf to another\n      submodule-config: use explicit empty string instead of strbuf in config_from()\n      strbuf: avoid calling strbuf_grow() twice in strbuf_addbuf()\n      use strbuf_addstr() for adding constant strings to a strbuf\n      use strbuf_addstr() instead of strbuf_addf() with \"%s\"\n      nedmalloc: work around overzealous GCC 6 warning\n\nStefan Beller (2):\n      Documentation: pack-protocol correct NAK response\n      submodule deinit: remove outdated comment\n\n"}]}