{"thread":{"id":"53927","subject":"[ANNOUNCE] Git v2.28.0","startedAt":"2020-07-27T16:49:32Z","lastAt":"2020-07-27T19:25:07Z","messageCount":2,"participants":["Junio C Hamano","Elijah Newren"],"isPatch":false,"patchVersion":null,"patchTotal":null},"messages":[{"id":"402143","messageId":"xmqq5za8hpir.fsf@gitster.c.googlers.com","threadId":"53927","inReplyTo":null,"subject":"[ANNOUNCE] Git v2.28.0","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2020-07-27T16:49:16Z","receivedAt":"2020-07-27T16:49:32Z","isPatch":false,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"The latest feature release Git v2.28.0 is now available at the\nusual places.  It is comprised of 317 non-merge commits since\nv2.27.0, contributed by 58 people, 13 of which are new faces.\nIt is smaller than the releases in our recent past, mostly due to\nthe development cycle was near the shorter end of the spectrum (our\ncycles last 8-12 weeks and this was a rare 8-week cycle).\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.28.0'\ntag and the 'master' 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\nNew contributors whose contributions weren't in v2.27.0 are as follows.\nWelcome to the Git development community!\n\n  Andrew Ng, Bojun Chen, Chris Torek, David J. Malan, Don\n  Goodman-Wilson, Jiuyang Xie, Luc Van Oostenryck, Marco Trevisan\n  (Treviño), Mikhail Terekhov, Miroslav Koškár, Rafael Aquini,\n  Srinidhi Kaushik, and Trygve Aaberge.\n\nReturning contributors who helped this release are as follows.\nThanks for your continued support.\n\n  Abhishek Kumar, Alessandro Menti, Ben Keene, brian m. carlson,\n  Carlo Marcelo Arenas Belón, Christian Couder, Christopher\n  Diaz Riveros, Denton Liu, Derrick Stolee, Đoàn Trần Công\n  Danh, Elijah Newren, Emily Shaffer, Emir Sarı, Eric Sunshine,\n  Han-Wen Nienhuys, Jacob Keller, Jean-Noël Avila, Jeff King,\n  Jiang Xin, Johannes Schindelin, John Lin, Jonathan Nieder,\n  Jonathan Tan, Jordi Mas, Josh Steadmon, Junio C Hamano, Laurent\n  Arnoud, Martin Ågren, Matheus Tavares, Matthias Rüster, Paolo\n  Bonzini, Patrick Steinhardt, Peter Krefting, Pratyush Yadav,\n  Ralf Thielow, Ramsay Jones, Randall S. Becker, René Scharfe,\n  Shourya Shukla, SZEDER Gábor, Taylor Blau, Trần Ngọc Quân,\n  Ville Skyttä, Xin Li, and Yi-Jyun Pan.\n\n----------------------------------------------------------------\n\nGit 2.28 Release Notes\n======================\n\nUpdates since v2.27\n-------------------\n\nBackward compatibility notes\n\n * \"fetch.writeCommitGraph\" is deemed to be still a bit too risky and\n   is no longer part of the \"feature.experimental\" set.\n\n\nUI, Workflows & Features\n\n * The commands in the \"diff\" family learned to honor \"diff.relative\"\n   configuration variable.\n\n * The check in \"git fsck\" to ensure that the tree objects are sorted\n   still had corner cases it missed unsorted entries.\n\n * The interface to redact sensitive information in the trace output\n   has been simplified.\n\n * The command line completion (in contrib/) learned to complete\n   options that the \"git switch\" command takes.\n\n * \"git diff\" used to take arguments in random and nonsense range\n   notation, e.g. \"git diff A..B C\", \"git diff A..B C...D\", etc.,\n   which has been cleaned up.\n\n * \"git diff-files\" has been taught to say paths that are marked as\n   intent-to-add are new files, not modified from an empty blob.\n\n * \"git status\" learned to report the status of sparse checkout.\n\n * \"git difftool\" has trouble dealing with paths added to the index\n   with the intent-to-add bit.\n\n * \"git fast-export --anonymize\" learned to take customized mapping to\n   allow its users to tweak its output more usable for debugging.\n\n * The command line completion support (in contrib/) used to be\n   prepared to work with \"set -u\" but recent changes got a bit more\n   sloppy.  This has been corrected.\n\n * \"git gui\" now allows opening work trees from the start-up dialog.\n\n\nPerformance, Internal Implementation, Development Support etc.\n\n * Code optimization for a common case.\n   (merge 8777616e4d an/merge-single-strategy-optim later to maint).\n\n * We've adopted a convention that any on-stack structure can be\n   initialized to have zero values in all fields with \"= { 0 }\",\n   even when the first field happens to be a pointer, but sparse\n   complained that a null pointer should be spelled NULL for a long\n   time.  Start using -Wno-universal-initializer option to squelch\n   it (the latest sparse has it on by default).\n\n * \"git log -L...\" now takes advantage of the \"which paths are touched\n   by this commit?\" info stored in the commit-graph system.\n\n * As FreeBSD is not the only platform whose regexp library reports\n   a REG_ILLSEQ error when fed invalid UTF-8, add logic to detect that\n   automatically and skip the affected tests.\n\n * \"git bugreport\" learns to report what shell is in use.\n\n * Support for GIT_CURL_VERBOSE has been rewritten in terms of\n   GIT_TRACE_CURL.\n\n * Preliminary clean-ups around refs API, plus file format\n   specification documentation for the reftable backend.\n\n * Workaround breakage in MSVC build, where \"curl-config --cflags\"\n   gives settings appropriate for GCC build.\n\n * Code clean-up of \"git clean\" resulted in a fix of recent\n   performance regression.\n\n * Code clean-up in the codepath that serves \"git fetch\" continues.\n\n * \"git merge-base --is-ancestor\" is taught to take advantage of the\n   commit graph.\n\n * Rewrite of parts of the scripted \"git submodule\" Porcelain command\n   continues; this time it is \"git submodule set-branch\" subcommand's\n   turn.\n\n * The \"fetch/clone\" protocol has been updated to allow the server to\n   instruct the clients to grab pre-packaged packfile(s) in addition\n   to the packed object data coming over the wire.\n\n * A misdesigned strbuf_write_fd() function has been retired.\n\n * SHA-256 migration work continues, including CVS/SVN interface.\n\n * A few fields in \"struct commit\" that do not have to always be\n   present have been moved to commit slabs.\n\n * API cleanup for get_worktrees()\n\n * By renumbering object flag bits, \"struct object\" managed to lose\n   bloated inter-field padding.\n\n * The name of the primary branch in existing repositories, and the\n   default name used for the first branch in newly created\n   repositories, is made configurable, so that we can eventually wean\n   ourselves off of the hardcoded 'master'.\n\n * The effort to avoid using test_must_fail on non-git command continues.\n\n * In 2.28-rc0, we corrected a bug that some repository extensions are\n   honored by mistake even in a version 0 repositories (these\n   configuration variables in extensions.* namespace were supposed to\n   have special meaning in repositories whose version numbers are 1 or\n   higher), but this was a bit too big a change.  The behaviour in\n   recent versions of Git where certain extensions.* were honored by\n   mistake even in version 0 repositories has been restored.\n\n\nFixes since v2.27\n-----------------\n\n * The \"--prepare-p4-only\" option of \"git p4\" is supposed to stop\n   after replaying one changeset, but kept going (by mistake?)\n\n * The error message from \"git checkout -b foo -t bar baz\" was\n   confusing.\n\n * Some repositories in the wild have commits that record nonsense\n   committer timezone (e.g. rails.git); \"git fast-import\" learned an\n   option to pass these nonsense timestamps intact to allow recreating\n   existing repositories as-is.\n   (merge d42a2fb72f en/fast-import-looser-date later to maint).\n\n * The command line completion script (in contrib/) tried to complete\n   \"git stash -p\" as if it were \"git stash push -p\", but it was too\n   aggressive and also affected \"git stash show -p\", which has been\n   corrected.\n   (merge fffd0cf520 vs/complete-stash-show-p-fix later to maint).\n\n * On-the-wire protocol v2 easily falls into a deadlock between the\n   remote-curl helper and the fetch-pack process when the server side\n   prematurely throws an error and disconnects.  The communication has\n   been updated to make it more robust.\n\n * \"git checkout -p\" did not handle a newly added path at all.\n   (merge 2c8bd8471a js/checkout-p-new-file later to maint).\n\n * The code to parse \"git bisect start\" command line was lax in\n   validating the arguments.\n   (merge 4d9005ff5d cb/bisect-helper-parser-fix later to maint).\n\n * Reduce memory usage during \"diff --quiet\" in a worktree with too\n   many stat-unmatched paths.\n   (merge d2d7fbe129 jk/diff-memuse-optim-with-stat-unmatch later to maint).\n\n * The reflog entries for \"git clone\" and \"git fetch\" did not\n   anonymize the URL they operated on.\n   (merge 46da295a77 js/reflog-anonymize-for-clone-and-fetch later to maint).\n\n * The behaviour of \"sparse-checkout\" in the state \"git clone\n   --no-checkout\" left was changed accidentally in 2.27, which has\n   been corrected.\n\n * Use of negative pathspec, while collecting paths including\n   untracked ones in the working tree, was broken.\n\n * The same worktree directory must be registered only once, but\n   \"git worktree move\" allowed this invariant to be violated, which\n   has been corrected.\n   (merge 810382ed37 es/worktree-duplicate-paths later to maint).\n\n * The effect of sparse checkout settings on submodules is documented.\n   (merge e7d7c73249 en/sparse-with-submodule-doc later to maint).\n\n * Code clean-up around \"git branch\" with a minor bugfix.\n   (merge dc44639904 dl/branch-cleanup later to maint).\n\n * A branch name used in a test has been clarified to match what is\n   going on.\n   (merge 08dc26061f pb/t4014-unslave later to maint).\n\n * An in-code comment in \"git diff\" has been updated.\n   (merge c592fd4c83 dl/diff-usage-comment-update later to maint).\n\n * The documentation and some tests have been adjusted for the recent\n   renaming of \"pu\" branch to \"seen\".\n   (merge 6dca5dbf93 js/pu-to-seen later to maint).\n\n * The code to push changes over \"dumb\" HTTP had a bad interaction\n   with the commit reachability code due to incorrect allocation of\n   object flag bits, which has been corrected.\n   (merge 64472d15e9 bc/http-push-flagsfix later to maint).\n\n * \"git send-email --in-reply-to=<msg>\" did not use the In-Reply-To:\n   header with the value given from the command line, and let it be\n   overridden by the value on In-Reply-To: header in the messages\n   being sent out (if exists).\n   (merge f9f60d7066 ra/send-email-in-reply-to-from-command-line-wins later to maint).\n\n * \"git log -Lx,y:path --before=date\" lost track of where the range\n   should be because it didn't take the changes made by the youngest\n   commits that are omitted from the output into account.\n\n * When \"fetch.writeCommitGraph\" configuration is set in a shallow\n   repository and a fetch moves the shallow boundary, we wrote out\n   broken commit-graph files that do not match the reality, which has\n   been corrected.\n\n * \"git checkout\" failed to catch an error from fstat() after updating\n   a path in the working tree.\n   (merge 35e6e212fd mt/entry-fstat-fallback-fix later to maint).\n\n * When an aliased command, whose output is piped to a pager by git,\n   gets killed by a signal, the pager got into a funny state, which\n   has been corrected (again).\n   (merge c0d73a59c9 ta/wait-on-aliased-commands-upon-signal later to maint).\n\n * The code to produce progress output from \"git commit-graph --write\"\n   had a few breakages, which have been fixed.\n\n * Other code cleanup, docfix, build fix, etc.\n   (merge 2c31a7aa44 jx/pkt-line-doc-count-fix later to maint).\n   (merge d63ae31962 cb/t5608-cleanup later to maint).\n   (merge 788db145c7 dl/t-readme-spell-git-correctly later to maint).\n   (merge 45a87a83bb dl/python-2.7-is-the-floor-version later to maint).\n   (merge b75a219904 es/advertise-contribution-doc later to maint).\n   (merge 0c9a4f638a rs/pull-leakfix later to maint).\n   (merge d546fe2874 rs/commit-reach-leakfix later to maint).\n   (merge 087bf5409c mk/pb-pretty-email-without-domain-part-fix later to maint).\n   (merge 5f4ee57ad9 es/worktree-code-cleanup later to maint).\n   (merge 0172f7834a cc/cat-file-usage-update later to maint).\n   (merge 81de0c01cf ma/rebase-doc-typofix later to maint).\n\n----------------------------------------------------------------\n\nChanges since v2.27.0 are as follows:\n\nAbhishek Kumar (4):\n      object: drop parsed_object_pool->commit_count\n      commit-graph: introduce commit_graph_data_slab\n      commit: move members graph_pos, generation to a slab\n      commit-graph: minimize commit_graph_data_slab access\n\nAlessandro Menti (1):\n      l10n: it.po: update the Italian translation for Git 2.28.0 round 1\n\nAndrew Ng (1):\n      merge: optimization to skip evaluate_result for single strategy\n\nBen Keene (1):\n      git-p4.py: fix --prepare-p4-only error with multiple commits\n\nBojun Chen (1):\n      githooks.txt: use correct \"reference-transaction\" hook name\n\nCarlo Marcelo Arenas Belón (5):\n      t/helper: teach test-regex to report pattern errors (like REG_ILLSEQ)\n      t4210: detect REG_ILLSEQ dynamically and skip affected tests\n      bisect--helper: avoid segfault with bad syntax in `start --term-*`\n      t5608: avoid say() and use \"skip_all\" instead for consistency\n      commit-reach: avoid is_descendant_of() shim\n\nChris Torek (3):\n      t/t3430: avoid undefined git diff behavior\n      git diff: improve range handling\n      Documentation: usage for diff combined commits\n\nChristian Couder (40):\n      upload-pack: remove unused 'wants' from upload_pack_data\n      upload-pack: move {want,have}_obj to upload_pack_data\n      upload-pack: move 'struct upload_pack_data' around\n      upload-pack: use 'struct upload_pack_data' in upload_pack()\n      upload-pack: pass upload_pack_data to get_common_commits()\n      upload-pack: pass upload_pack_data to receive_needs()\n      upload-pack: use upload_pack_data writer in receive_needs()\n      upload-pack: move symref to upload_pack_data\n      upload-pack: pass upload_pack_data to send_ref()\n      upload-pack: pass upload_pack_data to check_non_tip()\n      upload-pack: remove static variable 'stateless_rpc'\n      upload-pack: pass upload_pack_data to create_pack_file()\n      upload-pack: use upload_pack_data fields in receive_needs()\n      upload-pack: annotate upload_pack_data fields\n      upload-pack: move static vars to upload_pack_data\n      upload-pack: move use_sideband to upload_pack_data\n      upload-pack: move filter_capability_requested to upload_pack_data\n      upload-pack: move multi_ack to upload_pack_data\n      upload-pack: change multi_ack to an enum\n      upload-pack: pass upload_pack_data to upload_pack_config()\n      upload-pack: move keepalive to upload_pack_data\n      upload-pack: move allow_filter to upload_pack_data\n      upload-pack: move allow_ref_in_want to upload_pack_data\n      upload-pack: move allow_sideband_all to upload_pack_data\n      upload-pack: move pack_objects_hook to upload_pack_data\n      upload-pack: pass upload_pack_data to send_shallow_list()\n      upload-pack: pass upload_pack_data to deepen()\n      upload-pack: pass upload_pack_data to deepen_by_rev_list()\n      upload-pack: pass upload_pack_data to send_unshallow()\n      upload-pack: move shallow_nr to upload_pack_data\n      upload-pack: move extra_edge_obj to upload_pack_data\n      upload-pack: move allow_unadvertised_object_request to upload_pack_data\n      upload-pack: change allow_unadvertised_object_request to an enum\n      upload-pack: pass upload_pack_data to process_haves()\n      upload-pack: pass upload_pack_data to send_acks()\n      upload-pack: pass upload_pack_data to ok_to_give_up()\n      upload-pack: pass upload_pack_data to got_oid()\n      upload-pack: move oldest_have to upload_pack_data\n      upload-pack: refactor common code into do_got_oid()\n      cat-file: add missing [=<format>] to usage/synopsis\n\nChristopher Diaz Riveros (1):\n      l10n: es: 2.28.0 round 1\n\nDavid J. Malan (1):\n      git-prompt: change == to = for zsh's sake\n\nDenton Liu (18):\n      lib-submodule-update: add space after function name\n      lib-submodule-update: consolidate --recurse-submodules\n      remote-curl: fix typo\n      remote-curl: remove label indentation\n      transport: extract common fetch_pack() call\n      pkt-line: extern packet_length()\n      remote-curl: error on incomplete packet\n      pkt-line: define PACKET_READ_RESPONSE_END\n      stateless-connect: send response end packet\n      t/README: avoid poor-man's small caps GIT\n      CodingGuidelines: specify Python 2.7 is the oldest version\n      lib-submodule-update: prepend \"git\" to $command\n      t3200: rename \"expected\" to \"expect\"\n      t3200: test for specific errors\n      branch: don't mix --edit-description\n      builtin/diff: update usage comment\n      builtin/diff: fix botched update of usage comment\n      lib-submodule-update: pass 'test_must_fail' as an argument\n\nDerrick Stolee (3):\n      line-log: integrate with changed-path Bloom filters\n      commit-reach: create repo_is_descendant_of()\n      commit-reach: use fast logic in repo_in_merge_base\n\nDon Goodman-Wilson (1):\n      init: allow setting the default for the initial branch name via the config\n\nElijah Newren (11):\n      fast-import: add new --date-format=raw-permissive format\n      sparse-checkout: avoid staging deletions of all files\n      dir: fix treatment of negated pathspecs\n      git-sparse-checkout: clarify interactions with submodules\n      dir: fix a few confusing comments\n      dir, clean: avoid disallowed behavior\n      clean: consolidate handling of ignored parameters\n      clean: optimize and document cases where we recurse into subdirectories\n      wt-status: show sparse checkout status as well\n      git-prompt: document how in-progress operations affect the prompt\n      git-prompt: include sparsity state as well\n\nEmily Shaffer (3):\n      help: add shell-path to --build-options\n      bugreport: include user interactive shell\n      docs: mention MyFirstContribution in more places\n\nEmir Sarı (1):\n      l10n: tr: v2.28.0 round 1\n\nEric Sunshine (10):\n      worktree: factor out repeated string literal\n      worktree: give \"should be pruned?\" function more meaningful name\n      worktree: make high-level pruning re-usable\n      worktree: prune duplicate entries referencing same worktree path\n      worktree: prune linked worktree referencing main worktree path\n      worktree: generalize candidate worktree path validation\n      worktree: make \"move\" refuse to move atop missing registered worktree\n      worktree: drop get_worktrees() special-purpose sorting option\n      worktree: drop get_worktrees() unused 'flags' argument\n      worktree: avoid dead-code in conditional\n\nHan-Wen Nienhuys (5):\n      refs.h: clarify reflog iteration order\n      t: use update-ref and show-ref to reading/writing refs\n      refs: improve documentation for ref iterator\n      reftable: clarify how empty tables should be written\n      reftable: define version 2 of the spec to accomodate SHA256\n\nJacob Keller (16):\n      completion: add test showing subpar git switch completion\n      completion: add tests showing subpar DWIM logic for switch/checkout\n      completion: add tests showing subar checkout --detach logic\n      completion: add tests showing subpar switch/checkout --track logic\n      completion: add tests showing subpar -c/-C startpoint completion\n      completion: add tests showing subpar -c/C argument completion\n      completion: add tests showing subpar switch/checkout --orphan logic\n      completion: replace overloaded track term for __git_complete_refs\n      completion: extract function __git_dwim_remote_heads\n      completion: perform DWIM logic directly in __git_complete_refs\n      completion: improve handling of DWIM mode for switch/checkout\n      completion: improve completion for git switch with no options\n      completion: improve handling of --detach in checkout\n      completion: improve handling of --track in switch/checkout\n      completion: improve handling of -c/-C and -b/-B in switch/checkout\n      completion: improve handling of --orphan option of switch/checkout\n\nJean-Noël Avila (1):\n      l10n: fr v2.28.0 round 1\n\nJeff King (14):\n      diff: discard blob data from stat-unmatched pairs\n      upload-pack: actually use some upload_pack_data bitfields\n      t9351: derive anonymized tree checks from original repo\n      fast-export: use xmemdupz() for anonymizing oids\n      fast-export: store anonymized oids as hex strings\n      fast-export: tighten anonymize_mem() interface to handle only strings\n      fast-export: stop storing lengths in anonymized hashmaps\n      fast-export: use a flex array to store anonymized entries\n      fast-export: move global \"idents\" anonymize hashmap into function\n      fast-export: add a \"data\" callback parameter to anonymize_str()\n      fast-export: allow seeding the anonymized mapping\n      fast-export: anonymize \"master\" refname\n      fast-export: use local array to store anonymized oid\n      diff: check for merge bases before assigning sym->base\n\nJiang Xin (2):\n      l10n: git.pot: v2.28.0 round 1 (70 new, 14 removed)\n      l10n: zh_CN: for git v2.28.0 l10n round 1\n\nJiuyang Xie (1):\n      doc: fix wrong 4-byte length of pkt-line message\n\nJohannes Schindelin (16):\n      checkout -p: handle new files correctly\n      clone/fetch: anonymize URLs in the reflog\n      msvc: fix \"REG_STARTEND\" issue\n      fmt-merge-msg: stop treating `master` specially\n      send-pack/transport-helper: avoid mentioning a particular branch\n      submodule: fall back to remote's HEAD for missing remote.<name>.branch\n      docs: add missing diamond brackets\n      init: allow specifying the initial branch name for the new repository\n      clone: use configured default branch name when appropriate\n      remote: use the configured default branch name when appropriate\n      testsvn: respect `init.defaultBranch`\n      docs: adjust for the recent rename of `pu` to `seen`\n      docs: adjust the technical overview for the rename `pu` -> `seen`\n      tests: reference `seen` wherever `pu` was referenced\n      diff-files --raw: show correct post-image of intent-to-add files\n      difftool -d: ensure that intent-to-add files are handled correctly\n\nJohn Lin (1):\n      bash-completion: add git-prune into bash completion\n\nJonathan Nieder (5):\n      config: let feature.experimental imply protocol.version=2\n      reftable: file format documentation\n      experimental: default to fetch.writeCommitGraph=false\n      Revert \"check_repository_format_gently(): refuse extensions for old repositories\"\n      repository: allow repository format upgrade with extensions\n\nJonathan Tan (12):\n      t5551: test that GIT_TRACE_CURL redacts password\n      http, imap-send: stop using CURLOPT_VERBOSE\n      http: redact all cookies, teach GIT_TRACE_REDACT=0\n      http: use --stdin when indexing dumb HTTP pack\n      http: refactor finish_http_pack_request()\n      http-fetch: refactor into function\n      http-fetch: support fetching packfiles by URL\n      Documentation: order protocol v2 sections\n      Documentation: add Packfile URIs design doc\n      upload-pack: refactor reading of pack-objects out\n      fetch-pack: support more than one pack lockfile\n      upload-pack: send part of packfile response as uri\n\nJordi Mas (1):\n      l10n: Update Catalan translation\n\nJosh Steadmon (1):\n      fuzz-commit-graph: properly free graph struct\n\nJunio C Hamano (13):\n      Start the post 2.27 cycle\n      The second batch\n      The third batch\n      The fourth batch\n      The fifth batch\n      The sixth batch\n      The seventh batch\n      Git 2.28-rc0\n      Hopefully the last batch before -rc1\n      Git 2.28-rc1\n      RelNotes: update the v0 with extension situation\n      Git 2.28-rc2\n      Git 2.28\n\nLaurent Arnoud (1):\n      diff: add config option relative\n\nLuc Van Oostenryck (1):\n      sparse: allow '{ 0 }' to be used without warnings\n\nMarco Trevisan (Treviño) (1):\n      completion: use native ZSH array pattern matching\n\nMartin Ågren (5):\n      git-rebase.txt: fix description list separator\n      git-diff.txt: don't mark required argument as optional\n      git-diff.txt: reorder possible usages\n      gitworkflows.txt: fix broken subsection underline\n      t3200: don't grep for `strerror()` string\n\nMatheus Tavares (1):\n      entry: check for fstat() errors after checkout\n\nMatthias Rüster (1):\n      l10n: de.po: Update German translation for Git v2.28.0\n\nMikhail Terekhov (1):\n      git-gui: allow opening work trees from the startup dialog\n\nMiroslav Koškár (1):\n      doc: fix author vs. committer copy/paste error\n\nPaolo Bonzini (1):\n      t4014: do not use \"slave branch\" nomenclature\n\nPatrick Steinhardt (1):\n      refs: implement reference transaction hook\n\nPeter Krefting (1):\n      l10n: sv.po: Update Swedish translation (4931t0f0u)\n\nRafael Aquini (1):\n      send-email: restore --in-reply-to superseding behavior\n\nRalf Thielow (1):\n      l10n: de.po: fix grammar\n\nRamsay Jones (1):\n      upload-pack: fix a sparse '0 as NULL pointer' warning\n\nRandall S. Becker (2):\n      bugreport.c: replace strbuf_write_fd with write_in_full\n      strbuf: remove unreferenced strbuf_write_fd method.\n\nRené Scharfe (10):\n      fsck: fix a typo in a comment\n      t1450: increase test coverage of in-tree d/f detection\n      t1450: demonstrate undetected in-tree d/f conflict\n      fsck: detect more in-tree d/f conflicts\n      checkout: add tests for -b and --track\n      checkout: improve error messages for -b with extra argument\n      commit-reach: plug minor memory leak after using is_descendant_of()\n      pull: plug minor memory leak after using is_descendant_of()\n      revision: reallocate TOPO_WALK object flags\n      revision: disable min_age optimization with line-log\n\nSZEDER Gábor (7):\n      line-log: remove unused fields from 'struct line_log_data'\n      t4211-line-log: add tests for parent oids\n      line-log: more responsive, incremental 'git log -L'\n      line-log: try to use generation number-based topo-ordering\n      commit-graph: fix progress of reachable commits\n      commit-graph: fix \"Writing out commit graph\" progress counter\n      commit-graph: fix \"Collecting commits from input\" progress line\n\nShourya Shukla (1):\n      submodule: port subcommand 'set-branch' from shell to C\n\nSrinidhi Kaushik (1):\n      diff-files: treat \"i-t-a\" files as \"not-in-index\"\n\nTaylor Blau (12):\n      commit-graph.c: extract 'refs_cb_data'\n      commit-graph.c: show progress of finding reachable commits\n      commit-graph.c: peel refs in 'add_ref_to_set'\n      builtin/commit-graph.c: extract 'read_one_commit()'\n      builtin/commit-graph.c: dereference tags in builtin\n      commit-graph.c: simplify 'fill_oids_from_commits'\n      t5318: reorder test below 'graph_read_expect'\n      commit-graph: drop COMMIT_GRAPH_WRITE_CHECK_OIDS flag\n      t5318: use 'test_must_be_empty'\n      t5318: test that '--stdin-commits' respects '--[no-]progress'\n      commit.c: don't persist substituted parents when unshallowing\n      Documentation/RelNotes: fix a typo in 2.28's relnotes\n\nTrygve Aaberge (2):\n      Wait for child on signal death for aliases to builtins\n      Wait for child on signal death for aliases to externals\n\nTrần Ngọc Quân (1):\n      l10n: vi.po(4931t): Updated translation for v2.28.0\n\nVille Skyttä (2):\n      completion: don't override given stash subcommand with -p\n      completion: nounset mode fixes\n\nXin Li (4):\n      repository: add a helper function to perform repository format upgrade\n      fetch: allow adding a filter after initial clone\n      sparse-checkout: upgrade repository to version 1 when enabling extension\n      check_repository_format_gently(): refuse extensions for old repositories\n\nYi-Jyun Pan (1):\n      l10n: zh_TW.po: v2.28.0 round 1 (0 untranslated)\n\nbrian m. carlson (61):\n      t1050: match object ID paths in a hash-insensitive way\n      Documentation: document v1 protocol object-format capability\n      builtin/checkout: simplify metadata initialization\n      t2060: add a test for switch with --orphan and --discard-changes\n      connect: have ref processing code take struct packet_reader\n      wrapper: add function to compare strings with different NUL termination\n      remote: advertise the object-format capability on the server side\n      connect: add function to parse multiple v1 capability values\n      connect: add function to fetch value of a v2 server capability\n      pkt-line: add a member for hash algorithm\n      transport: add a hash algorithm member\n      connect: add function to detect supported v1 hash functions\n      send-pack: detect when the server doesn't support our hash\n      connect: make parse_feature_value extern\n      fetch-pack: detect when the server doesn't support our hash\n      connect: detect algorithm when fetching refs\n      builtin/receive-pack: detect when the server doesn't support our hash\n      docs: update remote helper docs for object-format extensions\n      transport-helper: implement object-format extensions\n      remote-curl: implement object-format extensions\n      builtin/clone: initialize hash algorithm properly\n      t5562: pass object-format in synthesized test data\n      fetch-pack: parse and advertise the object-format capability\n      setup: set the_repository's hash algo when checking format\n      t3200: mark assertion with SHA1 prerequisite\n      packfile: compute and use the index CRC offset\n      t5302: modernize test formatting\n      builtin/show-index: provide options to determine hash algo\n      t1302: expect repo format version 1 for SHA-256\n      Documentation/technical: document object-format for protocol v2\n      connect: pass full packet reader when parsing v2 refs\n      connect: parse v2 refs with correct hash algorithm\n      serve: advertise object-format capability for protocol v2\n      t5500: make hash independent\n      builtin/ls-remote: initialize repository based on fetch\n      remote-curl: detect algorithm for dumb HTTP by size\n      builtin/index-pack: add option to specify hash algorithm\n      t1050: pass algorithm to index-pack when outside repo\n      remote-curl: avoid truncating refs with ls-remote\n      t/helper: initialize the repository for test-sha1-array\n      t5702: offer an object-format capability in the test\n      t5703: use object-format serve option\n      t5704: send object-format capability with SHA-256\n      t5300: pass --object-format to git index-pack\n      bundle: detect hash algorithm when reading refs\n      remote-testgit: adapt for object-format\n      t9109: make test hash independent\n      t9168: make test hash independent\n      t9108: make test hash independent\n      t9100: make test work with SHA-256\n      t9104: make hash size independent\n      t9101: make hash independent\n      t/lib-git-svn: make hash size independent\n      perl: create and switch variables for hash constants\n      perl: make Git::IndexInfo work with SHA-256\n      perl: make SVN code hash independent\n      git-svn: set the OID length based on hash algorithm\n      git-cvsserver: port to SHA-256\n      git-cvsimport: port to SHA-256\n      git-cvsexportcommit: port to SHA-256\n      http-push: ensure unforced pushes fail when data would be lost\n\nĐoàn Trần Công Danh (2):\n      contrib: subtree: adjust test to change in fmt-merge-msg\n      l10n: vi.po: correct \"ident line\" translation\n\n"},{"id":"402152","messageId":"CABPp-BGVFKKm+n8wTN9dqbA6=HJSZ5m3bnG7fLZ5DGevXSXBAA@mail.gmail.com","threadId":"53927","inReplyTo":"xmqq5za8hpir.fsf@gitster.c.googlers.com","subject":"[ANNOUNCE] git-filter-repo v2.28.0 (Was: Re: [ANNOUNCE] Git v2.28.0)","fromName":"Elijah Newren","fromEmail":"newren@gmail.com","sentAt":"2020-07-27T19:24:51Z","receivedAt":"2020-07-27T19:25:07Z","isPatch":false,"sender":{"key":"newren@gmail.com","avatar":"https://avatars.githubusercontent.com/u/5455730?v=4"},"body":"Hi,\n\nOn Mon, Jul 27, 2020 at 11:54 AM Junio C Hamano <gitster@pobox.com> wrote:\n>\n> The latest feature release Git v2.28.0 is now available at the\n> usual places.  It is comprised of 317 non-merge commits since\n> v2.27.0, contributed by 58 people, 13 of which are new faces.\n\nThe latest release of git-filter-repo, v2.28.0, is also now available.\nIt is comprised of 15 non-merge commits since v2.27.1, including two\nchanges from new contributors.\n\nThe public repo of filter-repo is at\n\n    https://github.com/newren/git-filter-repo\n\nThe tarballs can be found at:\n\n    https://github.com/newren/git-filter-repo/releases\n\ngit-filter-repo can also be installed via a variety of package managers\nacross Windows, Mac OS, or Linux (and maybe others)[1].\n\nNew contributors whose contributions weren't in v2.27.1 are as follows.\nWelcome to the git-filter-repo development community!\n\n  * James Ramsay\n  * Jonas Bernoulli\n\n[1] https://github.com/newren/git-filter-repo/blob/master/INSTALL.md\n\n----------------------------------------------------------------\n\ngit-filter-repo 2.28 Release Notes\n==================================\n\n(Note: Additional information is available for many release notes at\n    https://github.com/newren/git-filter-repo/issues/<NUMBER>)\n\n* New features:\n  * ignore comment lines in --paths-from-file (#111)\n\n* Fixes:\n  * allow globs to match file or directory names (#114)\n  * use new --date-format=raw-permissive fast-import option to avoid\n    fast-import failure on malformed date timezones (#88)\n  * fix undefined variable names reported by flake8 in rare error paths (#128)\n  * fix crash from assuming parent is an int (#131)\n\n* Documentation:\n  * document mapping output (#117)\n  * ignore the generated documentation (#127)\n  * several miscellaneous doc improvements\n\n* Miscellaneous:\n  * make tests individually re-runnable\n\n\nChanges since v2.27.1 are as follows:\n\nElijah Newren (13):\n      INSTALL.md: fix missing trailing backquote\n      t9390: make tests individually re-runnable\n      filter-repo: allow globs to match file or directory names\n      filter-repo: ignore comment lines in --paths-from-file\n      git-filter-repo.txt: point people at the generated documentation\n      git-filter-repo.txt: be more forceful on the wording of --force\n      filter-repo: make fresh clone warning scarier\n      INSTALL.md: wording clarification on what repology.org tracks\n      contrib: rename no-op-example to barebones-example\n      filter-repo: use new --date-format=raw-permissive fast-import option\n      Contributing.md: link to Nicolai Hähnle's code review comments\n      Fix undefined variable names\n      filter-repo: fix crash from assuming parent is an int\n\nJames Ramsay (1):\n      git-filter-repo.txt: document mapping output\n\nJonas Bernoulli (1):\n      .gitignore: ignore the generated documentation\n"}]}