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

推荐订阅源

WordPress大学
WordPress大学
Cyberwarzone
Cyberwarzone
The GitHub Blog
The GitHub Blog
云风的 BLOG
云风的 BLOG
P
Proofpoint News Feed
小众软件
小众软件
Recent Announcements
Recent Announcements
博客园 - 三生石上(FineUI控件)
Security Archives - TechRepublic
Security Archives - TechRepublic
W
WeLiveSecurity
Cloudbric
Cloudbric
博客园 - 司徒正美
美团技术团队
N
News and Events Feed by Topic
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
PCI Perspectives
PCI Perspectives
宝玉的分享
宝玉的分享
H
Help Net Security
H
Hackread – Cybersecurity News, Data Breaches, AI and More
Google DeepMind News
Google DeepMind News
Help Net Security
Help Net Security
Last Week in AI
Last Week in AI
S
Schneier on Security
N
News | PayPal Newsroom
B
Blog RSS Feed
L
LINUX DO - 最新话题
T
Troy Hunt's Blog
S
Secure Thoughts
雷峰网
雷峰网
aimingoo的专栏
aimingoo的专栏
L
Lohrmann on Cybersecurity
G
Google Developers Blog
Microsoft Azure Blog
Microsoft Azure Blog
Hacker News - Newest:
Hacker News - Newest: "LLM"
T
Tenable Blog
S
Securelist
L
LangChain Blog
Recent Commits to openclaw:main
Recent Commits to openclaw:main
I
InfoQ
H
Heimdal Security Blog
Cisco Talos Blog
Cisco Talos Blog
F
Full Disclosure
Y
Y Combinator Blog
酷 壳 – CoolShell
酷 壳 – CoolShell
K
Kaspersky official blog
T
Tailwind CSS Blog
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
阮一峰的网络日志
阮一峰的网络日志
C
Cisco Blogs

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