Back to Freedom.Tech Back
All ngit-cli releasesAll versions
Release Tue, May 26, 2026 2 min read

ngit-cli 2.5.0

Original release notes

Changed

  • git push pr/<branch> and ngit send now default to PR kind for new proposals when the repository has at least one GRASP server; previously only oversized commits (>60 KB) or those containing submodules triggered PR kind automatically
  • When a PR cannot be pushed to the repository's GRASP servers, ngit uses GRASP-06 instead of creating a new personal-fork announcement; ngit send --git-server or git push -o git-server=<url> lets contributors target a custom git URL or GRASP server explicitly
  • ngit init republishes now preserve unknown tags from the existing announcement instead of silently stripping them, so tags added by a future ngit version or third-party tool are never lost on republish; a yellow warning lists the carried-over tag names and --clean will remove them
  • ngit pr apply, ngit pr checkout, and ngit pr list now consult git servers lazily - only when the needed commit is not already present locally - and share a single fetch helper; previously each command had its own near-duplicate fetch logic, and checkout fetched unconditionally even when the commit was already local - thanks to m0wer for the contribution
  • ngit pr checkout (and the interactive path in ngit pr list) now tries the submitter-supplied clone URLs from the PR event as a fallback when the repo's declared git servers don't carry the PR tip, matching the existing behaviour in ngit pr apply; this fallback is disabled for passive git clone/git fetch paths to prevent a malicious submitter slowing down every repo operation
  • Integration test harness completely rewritten for greater reliability and speed

Fixed

  • Force-pushing a rebased pr/<branch> produced a PR update event with a stale merge-base tag; the remote helper was forwarding the original stored tag instead of recomputing from the actual git topology; the merge-base is now always recomputed from git merge-base for every push type
  • ngit pr checkout correctly checked out the PR as a local branch but left the working directory at its previous state
  • ngit pr checkout --force on a patch-kind proposal failed with "failed to find parent commit" when the new revision depended on a commit not yet in the local repo; the fetcher now retrieves the parent from the git servers before applying
  • ngit send --in-reply-to <hex_event_id> for a non-root reference (e.g. an issue mention) emitted an ["e", ...] tag instead of the NIP-21 ["q", ...] quote tag; hex and bech32 inputs now produce the same tag