惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

F
Fortinet All Blogs
S
Secure Thoughts
月光博客
月光博客
美团技术团队
雷峰网
雷峰网
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
N
News and Events Feed by Topic
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Forbes - Security
Forbes - Security
W
WeLiveSecurity
P
Proofpoint News Feed
阮一峰的网络日志
阮一峰的网络日志
爱范儿
爱范儿
G
GRAHAM CLULEY
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
AI
AI
Last Week in AI
Last Week in AI
Google Online Security Blog
Google Online Security Blog
Schneier on Security
Schneier on Security
云风的 BLOG
云风的 BLOG
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
Recent Announcements
Recent Announcements
Webroot Blog
Webroot Blog
T
Tor Project blog
Cisco Talos Blog
Cisco Talos Blog
N
News and Events Feed by Topic
罗磊的独立博客
The Register - Security
The Register - Security
Blog — PlanetScale
Blog — PlanetScale
T
Threat Research - Cisco Blogs
博客园 - 【当耐特】
Apple Machine Learning Research
Apple Machine Learning Research
人人都是产品经理
人人都是产品经理
T
The Exploit Database - CXSecurity.com
www.infosecurity-magazine.com
www.infosecurity-magazine.com
B
Blog
腾讯CDC
Microsoft Azure Blog
Microsoft Azure Blog
酷 壳 – CoolShell
酷 壳 – CoolShell
H
Hacker News: Front Page
Application and Cybersecurity Blog
Application and Cybersecurity Blog
Engineering at Meta
Engineering at Meta
Latest news
Latest news
IT之家
IT之家
D
DataBreaches.Net
博客园 - 司徒正美
N
Netflix TechBlog - Medium
V
V2EX
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知

Butler's Log

Agentic Version Control Benchmarks Grit: rewriting Git in Rust with agents Git Merge 2026 Agent-safe Git with GitButler We’ve raised $17M to build what comes after Git Announcing the GitButler CLI for Linux The Great CSS Expansion A couple of git nits Simplifying Git by Using GitButler Introducing the GitButler CLI GitButler 0.19 - "Commander Keen" But Head: Crafting a Custom Font MCP vs RAG: Two Very Different Ways to Gain Context Getting Started With GitButler Agents Using the GitButler MCP Server to Build Better AI-Driven Git Workflows Using GitButler With Multiple GitHub Accounts Advent of Code! Upcoming GitButler Events Use GitButler for your Gerrit workflow Integrating GitButler and GitHub Enterprise Butler Flow: shipping code faster (but less like Alfred, more like CI on steroids) - Part 3 Butler Flow: shipping code faster (but less like Alfred, more like CI on steroids) - Part 2 Butler Flow: shipping code faster (but less like Alfred, more like CI on steroids) - Part 1 Grid Happens: Because Flexbox Wasn’t Enough Using Cursor Hooks for automatic version control Deep Dive into the new Cursor Hooks A Responsive Item Counter with CSS only GitButler 0.16 - "Sweet Sixteen" GitButler's Claude Code tab GitButler's Annual Open Source Pledge Report Git Mini Summit 2025 Videos Automate Your AI Workflows with Claude Code Hooks Managing Multiple Claude Code Sessions Without Worktrees GitButler 0.15 - "Quirky Quinceañera" 20 years of Git. Still weird, still wonderful. GitButler's new patch based Code Review (Beta) Going down the rabbit hole of Git's new bundle-uri How to do patch-based review with git range-diff How Core Git Developers Configure Git Why is Git Autocorrect too fast for Formula One drivers? Stacked Branches with GitButler GitButler 0.13 - "Lucky Baseball" Fearless Rebasing Git Merge 2024 Why GitHub Actually Won GitButler is joining the Open Source Pledge The New Era of Town Hall Chat The Future of Open Source GitButler is now Fair Source Git Merge 2024 GitButler 0.12 - "Stingy Baker" The Birth of THE MERGE GitButler for Windows Fixing up Git with Autosquash The Git Zeitgeist Git Worktrees and GitButler DevWorld Git Slides Git Tips and Tricks Git Tips 1: Oldies but Goodies Git Tips 2: New Stuff in Git Git Tips 3: Really Large Repositories FOSDEM Git Talk Opening Up GitButler Debugging Tauri in VS Code Advent of GitButler Code Signing Commits in Git, Explained Virtual Branches Alpha Our We Are Developers Adventure Building Virtual Branches DevDays in Vilnius The Future of Software and Open Source Introducing GitButler
Git Merge 2024 Talks are Up
Scott Chacon · 2024-10-24 · via Butler's Log

One month ago, GitButler helped host the Git Merge 2024 conference and Git contributor summit, here in Berlin.

There were 13 talks on the first day of the conference and GitButler recorded all of them, which are now all up on our YouTube channel.

What were all the talks, you might ask? Well, let me summarize each one for you and if something floats your boat, you can watch it in it's entirety. Each talk was only about 20 minutes long, so they are all pretty quick watches.

The infamous Taylor Blau of GitHub talks about the incredible binary acrobatics that GitHub is working on to support some of the very large repositories that they need to deal with and has been upstreamed into Git core. He talks about multi-pack reuse, incremental MIDX bitmaps, pseudo-merge reachability bitmaps, and more.

Building a gossip layer and CRDT on top of Git

This talk by Alexis Sellier covers the work done as part of the Radicle project (a cool peer-to-peer code forge) to build a gossip-based networking layer on top of Git. This includes details on how they built issues, code reviews and discussions for their forge using a CRDT like data structures stored in the Git object format.

I specifically reached out to Martin von Zweigbergk of Google to ask him to fly all the way out to Berlin to give us a real world demo of some of the amazing things that his Jujutsu project can do. Martin gave a talk at Git Merge two years ago about the high level goals of this new VCS, but in this year's talk, he simply shows us how it's used in real life.

His Jujutsu project has been a real inspiration to us in several of the cool features we've built into GitButler, including our new fearless rebasing approach, and I loved watching him use the tool. We walks us through the operation log, the revset language, how it uniquely deals with conflicts and a pretty amazing demo of how it works with it's internal Google backend.

Emily Shaffer (nasamuffin), also from Google, spoke about the herculean task of trying to "libify" Git.

If you're not aware, Git was not really designed to have a shared, re-entrant library that could be used by tools like GitButler. There are issues with memory management and error handling that make linking to the libgit.a library untenable.

I have personally tried to deal with this issue by pushing for the development of the libgit2 project (almost 15 years ago now), which is what most projects (including GitButler) use for this type of functionality today. However, Emily's team at Google are hard at work to refactor Git's core code to be directly linkable and usable, the way that libgit2 is.

If you're interested in the current state of this project, you can also follow the libgit-rs (a Rust wrapper around libgit.a) patch series, currently in flight on the Git mailing list.

You can also check out her slides here: https://tinyurl.com/gm2024-libification

In this talk, GitHub's Brian Carlson shares with us new developments in the Git's credential helper tool.

Brian starts with a nice overview of what a "credential helper" is, which many of you may not really know. Essentially, Git's credential helper mechanism is a way for Git to securely ask for credentials for non-SSH things like HTTP, IMAP, SMTP, and TLS. This would include fetching username and passwords, Oauth tokens, PATs, etc, from secure, platform specific places like MacOS Keychain or Windows Credential Manager.

Well, recently this functionality has gained several new capabilities, such as enhanced support for Bearer tokens, multistage authentication, and ephemeral credentials.

libgit2: past, present, and future

Speaking of libgit2, my old friend Ed Thomson, who is also the current libgit2 maintainer, gave us a quick background, current status and future roadmap for the project.

He talks about how the project came to pass, how he got involved, benchmarking the library against core Git, and the need to bring on more people who are interested in hacking on libgit2.

Well, given that we're running the conference, it may not be surprising that managed to secure a speaking slot as well. 😄

I used my time to talk about how we're abusing Git in various ways to try to do some things with GitButler that Git was not really designed for. This includes how we implement virtual branches, injecting headers into the commit metadata for fearless rebasing, maintaining an operation log for our Timeline feature, how to hide references in the reflog so objects don't get GC'd, and other fun hacks.

Patrick Steinhardt from GitLab gave a talk introducing us to the new reftable backend that he's been working on for a while now.

In short, the reftable backend is a new way to store references (like branches or tags) in Git that is much more scalable. This becomes a problem when you have hundreds of thousands or even millions of branches and want to keep Git operations fast.

This talk is a great technical dive into how this new format works, but also a good 10 minute overview at the beginning that goes over how the Git object database works, what references are and the different ways that Git stores them with the pros and cons of each.

In this talk about git filter-repo, Elijah Newren of GitHub explains how to use this tool to rewrite your Git history en masse. You may have heard about or used git filter-branch in the past, but even the man page for that now points to the filter-repo tool as a much better alternative.

So when would you use this? Maybe you need to rewrite your history to remove a subset of files, or remove a specific file from every commit it's ever been in, or rename a file through the entire history. Maybe you need to change all of the commit messages in some specific way. Maybe you want to run a linter on every file for all your history, to pretend you were always good about it. In any of these and many other cases, this is the tool for you.

Daniele Sassoli from GerritForge talked about building an AI agent to basically act as a Git server SRE that can determine which backend optimizations to use at what time in order to make sure that large, problematic Git repositories are operating efficiently in a smart manner.

Gitoxide: What it is, and isn't

Sebastian Thiel gave a talk about his Gitoxide project, a Git library implemented in pure Rust. GitButler not only uses Gitoxide to do some of our Git operations, but Sebastian also contracts for us to help speed things up in our project, so we're big fans.

Sebastian talks about reasons why you might use Gitoxide, what it can and can't do, and where the project is headed.

In this talk, Aditya presents gittuf, an OpenSSF sandbox project that provides a security layer for Git repositories. gittuf embeds security policies within a repo to enforce rules such as what keys are trusted to sign commits and tags, or even who is allowed to write to a branch or a file.

He looks at how gittuf compares to "traditional" Git verification mechanisms, and how gittuf is used to distribute, rotate, and revoke trusted keys (GPG / SSH / Sigstore Gitsign) and policies for the repository.

Finally, we had Muir Manders and Rajiv Sharma from Meta talk about Sapling, it's Git support, and how Meta does version control internally with Git on the server via Mononoke.

If you have not heard of the Sapling smartlog, commit splitting and other cool features, or if you're curious how thousands of devs at Meta do version control, check it out.

That's all! Hope you enjoyed some of the talks.

Scott Chacon

Written by Scott Chacon

Scott Chacon is a co-founder of GitHub and GitButler, where he builds innovative tools for modern version control. He has authored Pro Git and spoken globally on Git and software collaboration.

Table of Contents

  • Scaling Git
  • Building a gossip layer and CRDT on top of Git
  • Jujutsu - A Git-compatible VCS
  • State of Libification
  • The Git Credential Helper Protocol: What's New
  • libgit2: past, present, and future
  • Abusing Git for GitButler
  • Introduction to the reftable backend
  • git-filter-repo for rewriting Git history
  • Leveraging AI to ensure Git Monorepo performance under heavy workloads
  • Gitoxide: What it is, and isn't
  • Securing Git Repositories with Gittuf
  • Marrying Meta SCM with Git