{"thread":{"id":"64325","subject":"[ANNOUNCE] Git v2.51.1","startedAt":"2025-10-15T18:50:48Z","lastAt":"2025-10-15T18:50:48Z","messageCount":1,"participants":["Junio C Hamano"],"isPatch":false,"patchVersion":null,"patchTotal":null},"messages":[{"id":"528828","messageId":"xmqqa51suhh5.fsf@gitster.g","threadId":"64325","inReplyTo":null,"subject":"[ANNOUNCE] Git v2.51.1","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2025-10-15T18:50:46Z","receivedAt":"2025-10-15T18:50:48Z","isPatch":false,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"The latest maintenance release Git v2.51.1 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.51.1'\ntag and the 'maint' branch that the tag points at:\n\n  url = https://git.kernel.org/pub/scm/git/git\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 2.51.1 Release Notes\n========================\n\nThere shouldn't be anything exciting to see here.  This is primarily\nto flush the \"do you still use it?\" improvements that has landed on\nthe master front, together with a handful of low-hanging, low-impact\nfixes that should be safe.\n\n\nFixes since Git 2.51.0\n----------------------\n\n * The \"do you still use it?\" message given by a command that is\n   deeply deprecated and allow us to suggest alternatives has been\n   updated.\n\n * The compatObjectFormat extension is used to hide an incomplete\n   feature that is not yet usable for any purpose other than\n   developing the feature further.  Document it as such to discourage\n   its use by mere mortals.\n\n * Manual page for \"gitk\" is updated with the current maintainer's\n   name.\n\n * Update the instructions for using GGG in the MyFirstContribution\n   document to say that a GitHub PR could be made against `git/git`\n   instead of `gitgitgadget/git`.\n\n * Clang-format update to let our control macros be formatted the way we\n   had them traditionally, e.g., \"for_each_string_list_item()\" without\n   space before the parentheses.\n\n * A few places where a size_t value was cast to curl_off_t without\n   checking has been updated to use the existing helper function.\n\n * The start_delayed_progress() function in the progress eye-candy API\n   did not clear its internal state, making an initial delay value\n   larger than 1 second ineffective, which has been corrected.\n\n * Makefile tried to run multiple \"cargo build\" which would not work\n   very well; serialize their execution to work around this problem.\n\n * Adjust to the way newer versions of cURL selectively enable tracing\n   options, so that our tests can continue to work.\n\n * During interactive rebase, using 'drop' on a merge commit led to\n   an error, which has been corrected.\n\n * \"git refs migrate\" to migrate the reflog entries from a refs\n   backend to another had a handful of bugs squashed.\n\n * \"git push\" had a code path that led to BUG() but it should have\n   been a die(), as it is a response to a usual but invalid end-user\n   action to attempt pushing an object that does not exist.\n\n * Various bugs about rename handling in \"ort\" merge strategy have\n   been fixed.\n\n * \"git diff --no-index\" run inside a subdirectory under control of a\n   Git repository operated at the top of the working tree and stripped\n   the prefix from the output, and oddballs like \"-\" (stdin) did not\n   work correctly because of it.  Correct the set-up by undoing what\n   the set-up sequence did to cwd and prefix.\n\n * Various options to \"git diff\" that make comparison ignore certain\n   aspects of the differences (like \"space changes are ignored\",\n   \"differences in lines that match these regular expressions are\n   ignored\") did not work well with \"--name-only\" and friends.\n\n * Under a race against another process that is repacking the\n   repository, especially a partially cloned one, \"git fetch\" may\n   mistakenly think some objects we do have are missing, which has\n   been corrected.\n\n * \"git repack --path-walk\" lost objects in some corner cases, which\n   has been corrected.\n   cf. <CABPp-BHFxxGrqKc0m==TjQNjDGdO=H5Rf6EFsf2nfE1=TuraOQ@mail.gmail.com>\n\n * Fixes multiple crashes around midx write-out codepaths.\n\n * A broken or malicious \"git fetch\" can say that it has the same\n   object for many many times, and the upload-pack serving it can\n   exhaust memory storing them redundantly, which has been corrected.\n\n * A corner case bug in \"git log -L...\" has been corrected.\n\n * Some among \"git add -p\" and friends ignored color.diff and/or\n   color.ui configuration variables, which is an old regression, which\n   has been corrected.\n\n * \"git rebase -i\" failed to clean-up the commit log message when the\n   command commits the final one in a chain of \"fixup\" commands, which\n   has been corrected.\n\n * Deal more gracefully with directory / file conflicts when the files\n   backend is used for ref storage, by failing only the ones that are\n   involved in the conflict while allowing others.\n\nAlso contains various documentation updates, code cleanups and minor fixups.\n\n----------------------------------------------------------------\n\nChanges since v2.51.0 are as follows:\n\nAditya Garg (1):\n      docs: update sendmail docs to use more secure SMTP server for Gmail\n\nDaniele Sassoli (2):\n      count-objects: document count-objects pack\n      doc: clarify which remotes can be used with GitGitGadget\n\nDavid Aguilar (1):\n      Makefile: build libgit-rs and libgit-sys serially\n\nDenton Liu (3):\n      t5516: remove surrounding empty lines in test bodies\n      remote.c: remove BUG in show_push_unqualified_ref_name_error()\n      remote.c: convert if-else ladder to switch\n\nDerrick Stolee (8):\n      path-walk: fix setup of pending objects\n      path-walk: create initializer for path lists\n      midx-write: only load initialized packs\n      midx-write: put failing response value back\n      midx-write: use cleanup when incremental midx fails\n      midx-write: use uint32_t for preferred_pack_idx\n      midx-write: reenable signed comparison errors\n      midx-write: simplify error cases\n\nElijah Newren (8):\n      merge-ort: update comments to modern testfile location\n      merge-ort: drop unnecessary temporary in check_for_directory_rename()\n      t6423: document two bugs with rename-to-self testcases\n      t6423: fix missed staging of file in testcases 12i,12j,12k\n      merge-ort: clarify the interning of strings in opt->priv->path\n      merge-ort: fix incorrect file handling\n      merge-ort: fix directory rename on top of source of other rename/delete\n      Documentation/git-merge-tree.adoc: clarify the --merge-base option\n\nJean-Noël Avila (2):\n      doc: fix asciidoc format compatibility in pretty-formats.adoc\n      doc: change the markup of paragraphs following a nested list item\n\nJeff King (7):\n      fetch-pack: re-scan when double-checking graph objects\n      curl: add support for curl_global_trace() components\n      stash: pass --no-color to diff plumbing child processes\n      add-interactive: respect color.diff for diff coloring\n      add-interactive: manually fall back color config to color.ui\n      contrib/diff-highlight: mention interactive.diffFilter\n      doc: fix indentation of refStorage item in git-config(1)\n\nJohannes Schindelin (3):\n      http: offer to cast `size_t` to `curl_off_t` safely\n      imap-send: be more careful when casting to `curl_off_t`\n      http-push: avoid new compile error\n\nJohannes Sixt (4):\n      rebase -i: permit 'drop' of a merge commit\n      doc/gitk: update reference to the external project\n      doc/format-patch: adjust Thunderbird MUA hint to new add-on\n      progress: pay attention to (customized) delay time\n\nJunio C Hamano (4):\n      diff: --no-index should ignore the worktree\n      config: document includeIf conditions consistently\n      Prepare for 2.51.1\n      Git 2.51.1\n\nJustin Tobler (1):\n      clang-format: exclude control macros from SpaceBeforeParens\n\nKarthik Nayak (4):\n      refs/files: catch conflicts on case-insensitive file-systems\n      refs/files: use correct error type when lock exists\n      refs/files: handle F/D conflicts in case-insensitive FS\n      refs/files: handle D/F conflicts during locking\n\nKnut Harald Ryager (1):\n      docs: remove stray bracket from git-clone synopsis\n\nKristoffer Haugsbakk (17):\n      doc: git-log: fix description list\n      doc: interpret-trailers: close all pairs of single quotes\n      doc: config: replace backtick with apostrophe for possessive\n      doc: add missing backtick for inline-verbatim\n      doc: remove extra backtick for inline-verbatim\n      doc: fast-import: replace literal block with paragraph\n      Makefile: don’t add whatchanged after it has been removed\n      git: add `deprecated` category to --list-cmds\n      git: move seen-alias bookkeeping into handle_alias(...)\n      git: allow alias-shadowing deprecated builtins\n      t0014: test shadowing of aliases for a sample of builtins\n      you-still-use-that??: help the user help themselves\n      whatchanged: hint about git-log(1) and aliasing\n      whatchanged: remove not-even-shorter clause\n      BreakingChanges: remove claim about whatchanged reports\n      doc: patch-id: fix accidental literal blocks\n      RelNotes: minor fixups before 2.51.1\n\nKyle E. Mitchell (1):\n      doc: fix formatting of function-wrap shell alias\n\nLidong Yan (1):\n      diff: ensure consistent diff behavior with ignore options\n\nM Hickford (1):\n      docs/gitcredentials: describe URL prefix matching\n\nMikhail Malinouski (1):\n      docs: fix typo in worktree.adoc 'extension'\n\nPatrick Steinhardt (13):\n      Documentation/git-reflog: convert to use synopsis type\n      builtin/reflog: improve grouping of subcommands\n      refs: export `ref_transaction_update_reflog()`\n      builtin/reflog: implement subcommand to write new entries\n      ident: fix type of string length parameter\n      refs: fix identity for migrated reflogs\n      refs/files: detect race when generating reflog entry for HEAD\n      refs: stop unsetting REF_HAVE_OLD for log-only updates\n      refs: fix invalid old object IDs when migrating reflogs\n      t5530: modernize tests\n      upload-pack: don't ACK non-commits repeatedly in protocol v2\n      odb: drop deprecated wrapper functions\n      ci: fix broken jobs on Ubuntu 25.10 caused by switch to sudo-rs(1)\n\nPhillip Wood (2):\n      rebase -i: respect commit.cleanup when picking fixups\n      sequencer: remove VERBATIM_MSG flag\n\nRamsay Jones (1):\n      t6137-*.sh: fix test failure on cygwin\n\nRené Scharfe (1):\n      object-name: declare pointer type of extend_abbrev_len()'s 2nd parameter\n\nSZEDER Gábor (2):\n      line-log: fix assertion error\n      line-log: show all line ranges touched by the same diff range\n\nbrian m. carlson (1):\n      docs: note that extensions.compatobjectformat is incomplete\n\n"}]}