Git Rev News: Edition 136 (June 30th, 2026)
Welcome to the 136th edition of Git Rev News, a digest of all things Git. For our goals, the archives, the way we work, and how to contribute or to subscribe, see the Git Rev News page on git.github.io.
This edition covers what happened during the months of May and June 2026.
Discussions
Reviews
-
Elijah Newren sent a 3 patch series to improve the performance of a couple of commands in partial clones. The work was spurred by a real-world report where
git cherryjobs were each doing hundreds of single-blob fetches, at a cost of around 3 seconds each, so that batching those downloads should dramatically speed up such jobs. As Elijah put it, he “decided to fix upgit grepsimilarly while at it”. The series also corrected a small documentation typo he had noticed inpatch-ids.h(a missing trailing parenthesis in a comment), as a preparatory fixup.For readers unfamiliar with the trade-off, partial clones let users avoid downloading blobs upfront, at the expense of needing to download them later as they run other commands. That trade-off can sometimes be more painful than expected: when the needed blobs are discovered one at a time as they are accessed, each one triggers a separate network round-trip. Some commands like
checkout,diff, andmergealready mitigate this by doing batch prefetches of the blobs they will need, which dramatically reduces the cost of on-demand loading. The aim of this series was to extend that ability to two more commands,git cherryandgit grep.The interesting part for
git cherryis how to figure out, without fetching anything yet, which blobs will eventually be needed. As Elijah explained,git cherryworks in two phases: it first computes header-only patch IDs (based on file paths and modes), and only falls back to full content-based IDs when the header-only IDs collide. Those full IDs are what requires reading blob content, and the comparison is driven by a hashmap whose comparison function,patch_id_neq(), is exactly what triggers the on-demand fetches. To enumerate the colliding blobs ahead of time, the patch temporarily swaps the hashmap’s comparison function for a trivialalways_match()function, walks the entries that would collide to collect their blob OIDs into anoidset, restores the original comparison function, and then fetches everything in a single batch viapromisor_remote_get_direct(). A helper,collect_diff_blob_oids(), lists the blob OIDs touched by a commit’s diff. It leaves out files that are explicitly marked as binary in the userdiff configuration, because for those files thepatch_idjust hashes the OID withoid_to_hex()instead of reading the blob, so there is no point downloading them.While
git cherryrelies on hashmap comparisons, thegit greppatch takes an analogous but simpler approach: it adds a preliminary walk over the tree (similar togrep_tree()) that collects the blobs of interest and prefetches them in one go.Junio Hamano, the Git maintainer, took a first look and immediately spotted something that did not belong: the series added a 210-line
investigations/cherry-prefetch-design-spec.mdfile to the project. He pointed out that, as a document describing howgit cherryworks, it was “vastly lacking”, that much of its content was the sort of material that would normally go into a commit message, and that he was “not sure how others would benefit from being able to read it” once the series landed. Elijah’s reply was short and to the point: “Ugh, no, sorry.” That stray file had been committed by mistake.Elijah quickly sent version 2, whose only change compared to v1 was to remove that stray file, noting it was “So embarrassing that I didn’t catch that before submitting.”
Phillip Wood reviewed v2 and made an interesting connection:
git rebasewithout--reapply-cherry-pickssuffers from the same problem, since it does the equivalent ofgit log --cherry-pick. He asked whetherprefetch_cherry_blobs()could be shared with the cherry-pick detection inrevision.c. Elijah agreed the connection was correct, explaining thatgit rebase(without--reapply-cherry-picks) andgit log --cherry-pickboth go throughcherry_pick_list()inrevision.c, which has the same shape as the loop incmd_cherry()and triggers fetches from the samepatch_id_neq()callback. He even sketched what sharing the code would look like.However, he preferred to leave that out of the current series, expressing reservations about expanding partial-clone support further into this area:
git cherry,git log --cherry-pick, and the default cherry-pick detection ingit rebaseall exist to answer “has this patch already landed upstream?”, a question that, in repositories large enough to need partial clones, he felt “is rarely worth the cost of computing patch-ids across arbitrary amounts of history.” His honest guidance for users on a large repository would be to pass--reapply-cherry-picks(with rebase) and skip the detection entirely, or to narrow the range under consideration. He noted that the omission of a--no-reapply-cherry-picksoption ingit replayhad been a deliberate choice rather than an oversight. He had only implemented thegit cherryfix because of a specific customer whose tooling had already baked in the operation, and prefetching at least made the worst case tolerable. He added that he would happily review a patch from anyone wanting to carry the shared code forward.Phillip continued the exchange with several good questions, asking whether patch IDs are computed for every upstream commit or just the ones modifying the same paths, and remarking that it “is a shame that we don’t have a config setting for
--reapply-cherry-picksas it is easy to forget to pass that option” (a setting made awkward because the apply backend does not support that option). He was also “a bit surprised customers aren’t complaining about tools that usegit rebasebeing slow.”Elijah replied that determining which upstream commits modify the same paths still requires walking the upstream commits and doing a tree-diff for each, and that in the biggest repositories “even a merge-base operation can start to feel expensive.” On the surprise about rebase, he answered “Are you sure they aren’t complaining?”, explaining that the merging parts of a rebase already do batch prefetching, but the cherry-pick-detection part does not. He also noted that the customer in question was using
git replayrather thangit rebase, probably because early versions ofgit replaylacked the drop-commits-that-become-empty logic that Phillip later added (he thanked Phillip again for that), and that the prefetch patch lets things stay fast even if they keep theirgit cherrycalls.Derrick Stolee then reviewed v2, reading both the
git cherryandgit greppatches together. He worried thatcollect_diff_blob_oids()being “hidden in builtin/log.c may not be the right long-term home”, anticipating more and more cases where Git would want to prefetch blobs, and wondered whether the logic could take advantage of, or live alongside, the existingdiff_queued_diff_prefetch()withindiffcore_std()indiff.c. He framed thegit cherrypatch as caring about a diff and thegit greppatch as caring about a “scan prep”, suggestinggit archiveas a closer analog for the latter thancheckout. He was careful to add that he did not mean to complicate the series and was “most interested in having this logic be more reusable in the future without needing to move code across files.”Junio, seeing that Stolee’s two review messages had gone unanswered for a while, asked whether he should keep the patches in his tree “hoping that responses may come some day”, and said he would mark the topic as expecting review responses in the draft “What’s cooking” report for the time being. Elijah apologized for the delay, explaining he had been pulled into firefighting and remediation duties after a number of incidents at work, and suggested marking the series as expecting a re-roll since Stolee had asked for an additional test.
Elijah then answered Stolee’s reusability question in detail. He read the patch differently:
collect_diff_blob_oids()already leans on the diff library at the per-commit level (diff_tree_oid()plusdiffcore_std()), and the real value of the series lives above the diff library, in the accumulation across many commits.Concretely, the motivating case was a patch touching a few files where upstream had tens of thousands of commits in the relevant range, several hundred of which modified the same set of files: a per-diff prefetch like
diff.cuses would turn that into hundreds of small fetches, “what this series gives you is one fetch.” He pointed out two furthergit cherry-specific filters that he felt did not belong in the diff library: most commits are skipped before patch-ID is even computed (so prefetching for them would be wasted), and content for binary files is skipped because patch-ID usesoid_to_hex()for them. To check Stolee’s idea concretely, he reviewed all of the existingpromisor_remote_get_direct()call sites and concluded that none of them shared the “diff two trees and harvest OIDs” shape, so there was no natural shared layer above thepromisor_remote_get_direct()primitive itself. He agreedgit archivewould be the closest analog if it ever grew prefetch logic, and proposed factoring out a tree-walk helper only when a second caller actually wanted one.For the
git greppatch, Stolee asked for a test that exercises a pathspec filter, with files likematches.txt,nomatch.txt, andmatches.md, so thatgit grep -c "needle" HEAD -- *.txtwould download only the matching subset. This turned out to be more valuable than a simple test improvement: Elijah replied “Yes, absolutely”, and discovered that while he was handling pathspecs correctly, he was unconditionally requesting whatever objects matched the pathspecs even when those blobs were already present locally. He promised to send a fix along with the updated test.That fix arrived in version 3, which made three changes compared to v2:
-
the final patch’s test case was updated, as Stolee had suggested, to exercise a pathspec,
-
the last two patches were modified to avoid re-downloading blobs already present locally (checking with
odb_read_object_info_extended()andOBJECT_INFO_FOR_PREFETCHon thegit cherryside, andodb_has_object()on thegit grepside), with the tests adjusted to verify it, and -
a new first patch was inserted documenting the filtering contract of
promisor_remote_get_direct().
That documentation patch explains that the function does not filter out OIDs already present locally on its happy path, so callers are responsible for filtering and deduplicating themselves. Elijah candidly noted in the commit message that he “missed this originally and wrote two problematic callers”. He also mentioned that he had not pursued Stolee’s code-sharing suggestion, since it appeared to be based on a misunderstanding that the
git cherrypatch was about a diff.Stolee reviewed v3 and declared it “good to go”, graciously adding that Elijah’s detailed responses in the v2 thread “helped me understand that my thought was misguided” and gave him “extra confidence” in the approach. Junio agreed the series was “in a good shape” and marked the topic for the
nextbranch. Elijah thanked Stolee one more time, noting that the comments on thegit greppatch in particular “led me to what would have been a rather annoying bug”, so calling out the test improvement had been time well spent.In the end, the series was merged into the
masterbranch and is part of the recent v2.55.0 release. A concrete customer pain point led to extending Git’s existing batch-prefetching habit to two more commands,git cherryandgit grep, as well as a bug fix and improved documentation. The thread also clarified the boundaries of partial-clone friendliness for cherry-pick detection, leaving the door open for sharing the new code withgit rebaseandgit log --cherry-pick, should someone wish to carry that work forward. -
Other News
Events
Various
- What’s new in Git 2.55.0? by Toon Claes on GitLab Blog. Mentions a new git-history(1) fixup command, an fsmonitor daemon for Linux, pushing to remote groups, and more.
- Highlights from Git 2.55
by Taylor Blau on GitHub Blog. Mentions repacking with incremental multi-pack indexes,
fixing up earlier commits with
git history, running config based hooks in parallel, an inotify-based fsmonitor daemon for Linux, faster generation of reachability bitmaps and pseudo-merge bitmaps improvements, new experimentalgit format-revcommand, push groups, and more. - Git 2.55 Released With Rust Support Enabled By Default,
git history fixupby Michael Larabel on Phoronix. Mentions Rust code enabled by default (i.e., now opt-out), incremental multi-pack indexes, andgit history fixup. - I discovered a large-scale malware distribution campaign on GitHub by Orchid (@orchidfiles).
- Git good with Epic Games’ new open source VCS, Lore
by Brandon Vigliarolo on The Register.
Lore began its life as Unreal Revision Control.
- Compare Unity Version Control, formerly Plastic SCM, mentioned in passing in Git Rev News Edition #99, then in Edition #101.
- Compare Ark VCS, a new proprietary version control system for games, mentioned in Git Rev News Edition #134.
- See also Git for games: current problems and solutions video from Git Merge 2019, mentioned in Git Rev News Edition #48, with a link to the video posted in Edition #101.
- Git is forever. I’m building Oak anyways.
by Zach Geier on the Oak tool blog.
Oak intends to be a new type of version control designed for how humans and agents build software together. - Beagle the revision control system
(part I,
II,
III)
and Beagle: git, URIs and all the dirty words.
Beagle SCM intends to be a Git-compatible LLM-age source code management system. - Software Is Made Between Commits
by Nathan Sobo on Zed editor blog,
about DeltaDB, a version control system (in beta)
built for work with AI agents, that records the work as it unfolds
and keeps every change connected to the conversation that shaped it.
- Contrast the Gram editor,
which started as a fork of the Zed editor
without all the AI.
See the You Can Now Disable All AI Features in Zed blog post by Franciska Dethlefsen.
- Contrast the Gram editor,
which started as a fork of the Zed editor
without all the AI.
- Cursor, GitLab and Zed agree GitHub is breaking. They disagree on how to rebuild it. by Paul Sawers on TheNewStack. Mentions Cursor’s Origin, GitLab’s Project Switch, and Zed’s DeltaDB.
- How to make best use of git and GitHub for AI-assisted software development by Jon Udell on his blog, about Bram (Bram runs agents mindfully), a desktop app that helps you make best use of Git and GitHub for AI-assisted software development.
Light reading
- Grit: rewriting Git in (library-first) Rust with agents by Scott Chacon on Butler’s Log.
- The World Before Git. How did Git come to be? by Sarup Banskota on OSS History (2023).
- A History of Source Control Systems: SCCS and RCS (Part 1) by David Soria Parra on his blog (2024).
- Signing is for the bad days by Andrew Nesbitt on his blog, about tools for supply-chain security: TUF (The Update Framework) - which protects the last hop, from the repository to the machine doing the install (mentioned in passing in Git Rev News Edition #104); in-toto - which protects the build pipeline; and Sigstore - which allows to remove long-lived keys and for the developer to authenticate with OIDC identities you already have, like GitHub Actions, Google, etc., where Fulcio issues a short-lived code-signing certificate bound to that OIDC identity valid for ten minutes, and the signature and cert go into Sigstore Rekor, a public append-only transparency log (Sigstore was first mentioned in Git Rev News Edition #91 and Sigstore Rekor in Edition #111).
- gittuf - a signed log for git refs
by Andrew Nesbitt on his blog
(gittuf was mentioned in
Git Rev News Edition #104 and
in Edition #111).
- See also the Securing Git repositories with gittuf article by Joe Brockmeier on LWN.net, a report of a talk at OSSNA; video of the talk: Securing Git Repositories with Gittuf - Aditya Sirish A Yelgundhalli & Billy Lynch. Mentioned in Git Rev News Edition #111.
- Open source security at Astral by William Woodruff (@woodruffw) on Astral blog.
- GitHub Actions is a trap by Tyler Cipriani on his blog.
- What are git worktrees, and why should I use them? by Cassidy Williams·(@cassidoo) on GitHub Blog, in AI & ML section.
- Git Worktree - Practical workflow with a central bare repo by Aito Nakajima on NakaTechLabs.
- Git Worktrees with Bare Repos: A Clean Setup for Modern Development by Milad on his Medium-hosted blog.
- Git Worktrees Step-By-Step by Alex Russel on his Infrequently Noted blog (2011).
- One Line Fuzzy Find for Git Worktree
using
fzf(command-line fuzzy finder), by Olaf Alders on his blog (2024). - Jujutsu: The Git Upgrade You Didn’t Know You Needed
by Bruno Brito on Git Tower blog.
- Jujutsu (
jj) is a Git-compatible version control system written in Rust, which was first mentioned in Git Rev News Edition #85, and most recently in Edition #135.
- Jujutsu (
- Tangled CI runs on microVMs:
How we built spindle’s new QEMU-based microVM engine.
Written by ptr.pet on Tangled blog.
- Tangled is a decentralized code hosting and collaboration platform, built on top of AT Protocol (ATProto) (powering the BlueSky microblogging federated social media service), which was first mentioned in Git Rev News Edition #125.
- See also introducing spindle, mentioned in Edition #126.
- Stop Using Conventional Commits
by Sumner Evans on his blog, recommending prioritizing scope over change type.
- Compare Conventional Commits considered harmful rant by Salih Muhammed, mentioned in Git Rev News Edition #128.
- The Conventional Commits specification was first mentioned in Git Rev News Edition #52, and in many editions since.
- Using git’s rerere feature to escape recurring conflict hell, a Gist by @skipcloud (Skip Gibson).
- .gitignore Isn’t the Only Way To Ignore Files in Git
by Nelson Figueroa on his blog.
- See also The Many Flavors of Ignore Files by Andrew Nesbitt on his blog, mentioned in Git Rev News Edition #132.
- Git: –fixup –autosquash and GIT_SEQUENCE_EDITOR
on Karl Tryggvason’s Developer Blog, about the
GIT_SEQUENCE_EDITOR=truetrick for a faster interactive rebase (by avoiding opening the editor). - Updating Stacked Pull Requests with
git rebase --ontoby BD103 on their blog. - Git merges can be better, on the trick one can use to ensure that the order of branches in the conflict is the same in the (tricked-out) merge as it is in rebase. Done with the help of a Bash function. Written by Brandon Dong on their blog.
- Git imerge (interactive merge)
by Wilson Mar on his blog (2017).
git-imergewas first mentioned in passing in Git Rev News Edition #17, while Edition #34 includes Developer Spotlight: Michael Haggerty, an interview with the author of this tool.- See also the git-imerge: A Practical Introduction article, mentioned in Git Rev News Edition #118.
- Best Git Client - for Mac and Windows in 2026 by Bruno Brito on Git Tower GUI tool blog; with Tower listed first ;-).
- Diff Tools on macOS
by Tobias Günther on Git Tower blog (last updated 2024).
- The companion piece, Diff Tools on Windows was mentioned in Git Rev News Edition #26.
- Fixing Alembic’s Multiple Heads Problem with Git
by Julien Danjou on jd:/dev/blog, about the alembic-git-revisions
tool for automatic Alembic
migration chaining based on Git commit history.
- Alembic is a lightweight database migration tool for usage with the SQLAlchemy Database Toolkit for Python.
- Introducing django-linear-migrations by Adam Johnson on his blog (2020).
- Goofy Program Files: git-slog
by Michael McClimon on his blog (2023), about the Perl program he wrote
to display oneline-like
git logmessages which include a single-character indicator to denote whether a commit has a ‘Signed-off-by’ trailer or not. - Git Submodules vs. Subtrees vs. Monorepos.
- Costs exposed: Monorepo vs. multirepo by Julio Manuel Merino Vidal (@jmmv), aka Julio Merino, on jmmv.dev (2023); part 1 of the 3-part Costs exposed series.
- Never use git submodules by Ian Jackson on diziet’s journal (2023).
- How Josh helps Rust manage code across multiple repositories
by Jakub Beránek and Ralf Jung on Inside Rust Blog.
- Josh (Just One Single History) was mentioned in Git Rev News Edition #129.
- Marimo: A Modern Notebook for Reproducible Data Science
by Khuyen Tran on CodeCut.AI blog.
- Alternatives include: nbdev - a tool that creates programming environment out of Jupyter notebooks (first mentioned in Git Rev News Edition #69); nbdime - a tool for diffing Jupyter notebooks (first mentioned in Edition #37); jupytext - a tool for bidirectionally converting Jupyter notebooks to plain text files as either Markdown files or Python scripts (also mentioned in Edition #69); databooks - a package and a CLI tool to ease the collaboration between data scientists using Jupyter notebooks, by reducing the number of Git conflicts between different notebooks and resolution of Git conflicts when encountered (first mentioned in Git Rev News Edition #100).
- See also Git and Jupyter Notebooks: The Ultimate Guide by ReviewNB, mentioned in Git Rev News Edition #101.
- The Hidden Git Stash Keys in Emacs VC Directory Mode on Emacs Dwelling.
- Using git-annex for Data Archiving
by John Goerzen on his blog - The ChangeLog (2023).
- git-annex, which allows managing large files with Git, without storing the file contents in Git, was first mentioned in Git Rev News Edition #3.
- vcswatch and
git --filterby Christoph Berg on Myon’s Blog (2024). - GitHub and the crime against software: a software article by Efron Licht.
- Evaluating new software forges (other than GitHub) by John Nunley on notgull (2023).
-
Communicating in Pull Requests by Derric Stolee on Stolee’s Dev Blog (2025).
- Why Git Has a Variable Named false_but_the_compiler_does_not_know_it: A small C trick that keeps Clang from flagging valid code as unreachable, by Abhinav Upadhyay on Confessions of a Code Addict blog.
- The Honest Git Glossary is a fun
(and honest!) way to learn the most popular Git commands.
Written by Bruno Brito on Git Tower blog.
- Compare gitglossary(7) from the Git documentation.
Scientific papers
- Santiago Torres-Arias, Anil Kumar Ammula, Reza Curtmola, Justin Cappos:
“On Omitting Commits and Committing Omissions: Preventing Git Metadata Tampering That (Re)introduces Software Vulnerabilities“
presented at 25th USENIX Security Symposium,
August 10-12, 2016, in Austin, Texas, USA:
paper (with errata), slides, video. - Aditya Sirish A Yelgundhalli, Patrick Zielinski, Reza Curtmola, Justin Cappos:
“Rethinking Trust in Forge-Based Git Security“
presented at The Network and Distributed System Security (NDSS) Symposium,
February 23-27, 2026, in San Diego, California, USA.
DOI:10.14722/ndss.2025.241008
paper, slides, video.
Easy watching
- Worktrees missing piece:
Learn how to create bare repos, and why they’re being used with worktrees.
YouTube video on The Modern Coder channel [5:14].
- The video author had created LearnGit.io, focusing on how Git actually works, free for students. This site was first mentioned in Git Rev News Edition #127.
- Recipe for Discovery: Building the Open Source Repository Browser by Juanita Gomez on CURIOS YouTube channel [30:05].
Git tools and sites
- Worktrunk is a CLI for Git worktree management, designed for running AI agents in parallel. Written in Rust, dual-licensed under MIT and Apache-2.0 license.
nt(short for navigate tree) is a tinyzshcommand for hopping around worktrees: it spins one up — or jumps to it if it already exists —cds you in, and gets out of your way. Written as a Zsh script, under MIT license.treehouseis a CLI tool that helps you isolate your development environments when using Git worktrees. It assigns a stable number for each worktree, so you can use this number to derive per-worktree local configuration like ports, database names, etc., or anything you want isolated per worktree. Written in Go, under MIT license.- rift is an experimental alternative to Git worktrees using copy on write via reflinks or snapshots. Written in Rust, no license provided (yet).
- gitprofile is a tool to help
manage multiple Git identities — work, personal, open-source — so
the right name, email, and SSH key are always used without thinking about it.
It uses Git’s built-in
includeIfdirective. Written in Go, under MIT license. - hk is a Git hook manager and project linting tool with an emphasis on performance. Provides fast, powerful, and flexible hook management for modern development workflows. Written in Rust, under MIT license.
- GH Desktop Plus is a relatively up-to-date fork of GitHub Desktop with additional features and improvements, including: searching commits by title, message, tag, or hash; support for multiple GitHub, Bitbucket & GitLab accounts; Bitbucket and GitLab integration; and more. Note that it is a community-maintained project, not an official GitHub product. It is written in TypeScript as an Electron app, under MIT license.
- yadiff, yet another diff viewer,
is a local web application
built on pierrecomputer’s
trees and
diffs.
Written in TypeScript for Node.js, under MIT license.
Inspired by DiffsHub, which was mentioned in Git Rev News #135. git-pileis a set of scripts for using a stacked-diff workflow with Git & GitHub. There are a lot of different trade-offs for how this can work;git-pilechooses to be mostly not-magical at the cost of being best at handling multiple commits that don’t conflict with each other instead of chains of pull requests affecting the same code. Written in shell and Python, under MIT license.- spr (Super Pull Requests) for using a stacked-diff workflow with GitHub. Written in Rust, under MIT license.
- sem (Semantic version control)
is a command line tool that adds semantic understanding of Git changes.
Instead of lines changed, sem tells you what entities changed:
functions, methods, classes.
Provides six subcommands: diff, blame, impact, log, entities, and context.
Also works outside Git for arbitrary file comparison.
It parses code with tree-sitter. Helpful for working with AI agents.
Written in Rust, under MIT and Apache 2.0 licenses.
- Part of the Ataraxy Labs stack — agent-native infrastructure for software development. See also: weave (entity-level Git merge driver) · inspect (semantic code review) · opensessions (tmux sidebar for coding agents).
- git-courer is an MCP (Model Context Protocol) server that gives AI agents a full, safe interface to Git — not just commits, but the whole surface: status, diff, branch, stash, history, and sync. Includes 13 MCP tools, with structured JSON in, and structured JSON out. Every mutation backs itself up automatically. With local Ollama — zero tokens for Git operations. Written in Go, under MIT license.
- repo-slopscore
is a CLI + web app which gives a “slop score” for any public Git repository
resolvable via
https://. It goes through the entire commit history of a repository (upper limit is 5000 commits currently) and detects visible signs of AI/LLM tool usage in the commit history and the source tree. Aggressive caching is used to ensure that a repo that has been analyzed before does not need to get fully cloned again. Written in Rust, under Mozilla Public License 2.0. Used by https://slopscan.ava.pet/. - Grit is a “from-scratch”, library-based, memory-safe,
idiomatic Rust reimplementation of Git (created with help of AI agents)
that passes over 99% of the entire Git test suite.
The
grit-liblibrary is licensed under the MIT License, while thegrit-gitbinary crate is licensed under GPLv2 (like Git). - Flow Simulator by Mainline is a web app where you can watch the simulation on how the code flows from idea to production under three branching strategies: GitHub flow, Git flow, and trunk-based. You can switch modes to compare.
-
Commit Crimes is a joke web app, where you can paste any GitHub handle; the app will then pull their permanent record, book the user for crimes against version control (e.g. unprotected pushes straight to ‘main’), and hand down the sentence.
- jj_tui is a TUI for the Jujutsu version control system, with focus on performance, interactivity, and being intuive. Written in OCaml, under MIT license.
- Irmin is an OCaml library for building mergeable, branchable distributed data stores; a distributed database built on the same principles as Git. Under ISC license.
Releases
- Git 2.55.0, 2.55.0-rc2, 2.55.0-rc1, 2.55.0-rc0
- Git for Windows v2.55.0(1), v2.55.0-rc2(1), v2.55.0-rc1(1), v2.55.0-rc0(1)
- gitoxide 0.55.0
- JGit 7.7.0
- Gitea 1.26.4, 1.26.3
- Gerrit Code Review 3.12.8, 3.13.7, 3.14.1
- GitHub Enterprise 3.21.2, 3.21.1, 3.21.0, 3.20.4, 3.19.8, 3.18.11, 3.17.17, 3.16.20
- GitLab 19.2, 19.1, 19.1.1, 19.0.3, 18.11.6, 19.0.2, 18.11.5, 18.10.8
- GitKraken 12.2.1, 12.2.0
- GitHub Desktop 3.6.2, 3.6.1, 3.6.0, 3.5.12
- tig 2.6.1
- lazygit 0.62.2, 0.62.1
- GitButler 0.20.4, 0.20.3
- Kinetic Merge 1.15.0
Credits
This edition of Git Rev News was curated by Christian Couder <christian.couder@gmail.com>, Jakub Narębski <jnareb@gmail.com>, Markus Jansen <mja@jansen-preisler.de> and Kaartic Sivaraam <kaartic.sivaraam@gmail.com> with help from Toon Claes, Štěpán Němec and Paulo Gomes.