{"thread":{"id":"40321","subject":"[ANNOUNCE] Git v2.5.2, v2.4.9, v2.3.9 and v2.2.3","startedAt":"2015-09-10T20:24:52Z","lastAt":"2015-09-10T20:24:52Z","messageCount":1,"participants":["Junio C Hamano"],"isPatch":false,"patchVersion":null,"patchTotal":null},"messages":[{"id":"269736","messageId":"xmqqa8su2faj.fsf@gitster.mtv.corp.google.com","threadId":"40321","inReplyTo":null,"subject":"[ANNOUNCE] Git v2.5.2, v2.4.9, v2.3.9 and v2.2.3","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2015-09-10T20:24:52Z","receivedAt":"2015-09-10T20:24:52Z","isPatch":false,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"The latest maintenance release Git v2.5.2 is now available at the\nusual places, together with updates to older maintenance tracks,\nv2.4.9, v2.3.9 and v2.2.3.  These updates to older tracks are to\nplug buffer overflows due to fixed-sized buffers used to store\npathnames in a handful of codepaths (kudos to Peff).\n\nThe maintenance release 2.5.2 for the current maintenance track also\ncontains other fixes that was recently made on the 'master' front.\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.5.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.5.2 Release Notes\n========================\n\nFixes since v2.5.1\n------------------\n\n * \"git init empty && git -C empty log\" said \"bad default revision 'HEAD'\",\n   which was found to be a bit confusing to new users.\n\n * The \"interpret-trailers\" helper mistook a multi-paragraph title of\n   a commit log message with a colon in it as the end of the trailer\n   block.\n\n * When re-priming the cache-tree opportunistically while committing\n   the in-core index as-is, we mistakenly invalidated the in-core\n   index too aggressively, causing the experimental split-index code\n   to unnecessarily rewrite the on-disk index file(s).\n\n * \"git archive\" did not use zip64 extension when creating an archive\n   with more than 64k entries, which nobody should need, right ;-)?\n\n * The code in \"multiple-worktree\" support that attempted to recover\n   from an inconsistent state updated an incorrect file.\n\n * \"git rev-list\" does not take \"--notes\" option, but did not complain\n   when one is given.\n\n * Because the configuration system does not allow \"alias.0foo\" and\n   \"pager.0foo\" as the configuration key, the user cannot use '0foo'\n   as a custom command name anyway, but \"git 0foo\" tried to look these\n   keys up and emitted useless warnings before saying '0foo is not a\n   git command'.  These warning messages have been squelched.\n\n * We recently rewrote one of the build scripts in Perl, which made it\n   necessary to have Perl to build Git.  Reduced Perl dependency by\n   rewriting it again using sed.\n\n * t1509 test that requires a dedicated VM environment had some\n   bitrot, which has been corrected.\n\n * strbuf_read() used to have one extra iteration (and an unnecessary\n   strbuf_grow() of 8kB), which was eliminated.\n\n * The codepath to produce error messages had a hard-coded limit to\n   the size of the message, primarily to avoid memory allocation while\n   calling die().\n\n * When trying to see that an object does not exist, a state errno\n   leaked from our \"first try to open a packfile with O_NOATIME and\n   then if it fails retry without it\" logic on a system that refuses\n   O_NOATIME.  This confused us and caused us to die, saying that the\n   packfile is unreadable, when we should have just reported that the\n   object does not exist in that packfile to the caller.\n\n * An off-by-one error made \"git remote\" to mishandle a remote with a\n   single letter nickname.\n\n * A handful of codepaths that used to use fixed-sized arrays to hold\n   pathnames have been corrected to use strbuf and other mechanisms to\n   allow longer pathnames without fearing overflows.\n\nAlso contains typofixes, documentation updates and trivial code\nclean-ups.\n\n----------------------------------------------------------------\n\nChanges since v2.5.1 are as follows:\n\nAndreas Schwab (1):\n      Documentation/config: fix inconsistent label on gc.*.reflogExpireUnreachable\n\nChristian Couder (3):\n      trailer: ignore first line of message\n      trailer: retitle a test and correct an in-comment message\n      trailer: support multiline title\n\nClemens Buchacher (1):\n      git_open_noatime: return with errno=0 on success\n\nDavid Turner (1):\n      commit: don't rewrite shared index unnecessarily\n\nEric Sunshine (1):\n      generate-cmdlist: re-implement as shell script\n\nErik Elfström (1):\n      t7300: fix broken && chains\n\nJeff King (9):\n      vreportf: report to arbitrary filehandles\n      vreportf: avoid intermediate buffer\n      config: silence warnings for command names with invalid keys\n      rev-list: make it obvious that we do not support notes\n      log: diagnose empty HEAD more clearly\n      verify_absent: allow filenames longer than PATH_MAX\n      notes: use a strbuf in add_non_note\n      read_info_alternates: handle paths larger than PATH_MAX\n      show-branch: use a strbuf for reflog descriptions\n\nJim Hill (1):\n      strbuf_read(): skip unnecessary strbuf_grow() at eof\n\nJohannes Sixt (1):\n      t2019: skip test requiring '*' in a file name non Windows\n\nJunio C Hamano (5):\n      ps_matched: xcalloc() takes nmemb and then element size\n      Git 2.2.3\n      Git 2.3.9\n      Git 2.4.9\n      Git 2.5.2\n\nMichael Haggerty (4):\n      get_remote_group(): handle remotes with single-character names\n      get_remote_group(): rename local variable \"space\" to \"wordlen\"\n      get_remote_group(): eliminate superfluous call to strcspn()\n      get_remote_group(): use skip_prefix()\n\nNguyễn Thái Ngọc Duy (1):\n      setup: update the right file in multiple checkouts\n\nPatrick Steinhardt (2):\n      tests: fix broken && chains in t1509-root-worktree\n      tests: fix cleanup after tests in t1509-root-worktree\n\nPhilip Oakley (1):\n      po/README: Update directions for l10n contributors\n\nRené Scharfe (3):\n      t5004: test ZIP archives with many entries\n      archive-zip: use a local variable to store the creator version\n      archive-zip: support more than 65535 entries\n\nSZEDER Gábor (2):\n      t3020: fix typo in test description\n      wt-status: move #include \"pathspec.h\" to the header\n\nSven Strickroth (1):\n      config: close config file handle in case of error\n"}]}