Ken Muse
Using Git Worktrees for Concurrent Development
Ever found yourself stuck mid-feature when a production bug demands immediate attention? What about when a colleague asks if you can take a quick look at some code? We’ve all been there, trying to safely commit incomplete work or juggling stashes so we can switch between Git branches. What if I told you Git has had a solution for over a decade (and that VS Code just added support)? Learn how Git worktrees can reduce your friction!

Read this article

Creating a CodeQL Image for ARC With Python 2
Ready to finish crafting your CodeQL Actions runner image? Following up on my previous post, it’s time to add Python 2 support to the Docker image. You’ll add to the multistage build, learn how to preserve symbolic links, and learn a trick for unpacking archives without needing to copy the archive into the image first.

Read this article

Creating a CodeQL Image for ARC
Have you struggled with running CodeQL analysis on your own runners? You’re not alone. I figured that it was probably time to tackle this challenge to show you how to build the image, a few advanced Docker tricks, and a way to incorporate the scripts that the Actions team uses to build the official hosted runner VM images.

Read this article

Calling Docker From Inside a GitHub Job Container
A common question I’ve heard is “how do I run Docker commands from within a GitHub Actions job container?” In this post, I’ll explore how GitHub Actions implements job and service containers using Docker, and how you can use that to run your own Docker commands from inside a job container.

Read this article

Why Exporting Environment Variables Doesn't Work In Actions
Ever wondered why you can’t just export your environment variables in GitHub Actions? I mean, it’s a Bash script, right? Well, it turns out that the way GitHub Actions works makes exporting them across steps impossible. Let’s dive into the details and learn how to properly set environment variables in your workflows.

Read this article

How to Dynamically Authenticate With Git
Need to authenticate with different Git repositories using various credentials? This post explores how to dynamically authenticate with Git using credential helpers, environment variables, and secret management systems.

Read this article

How Does Git Authentication Work?
Ever wondered how Git actually authenticates with remote repositories? Ever needed to configure different credentials to access different repositories? This article dives into the inner workings of Git authentication, exploring the role of credential helpers, how they are implemented, and how to customize them for your needs.

Read this article

What's New in GitHub Actions Runner Controller
Over the last three months, the GitHub team behind Actions Runner Controller (ARC) has released three updates. These included bug fixes, performance improvements, improved configurability, and a new approach to metrics. In this post, I’ll cover some of the highlights of these releases and what they mean for you.

Read this article

The Secret Life of Git Large File Storage
For most people, Git Large File Storage (LFS) is a black box. You install it and somehow Git handles large files differently. But how does it manage the files? How does it know how and when to upload the files? And how was this implemented using only native Git extensibility points? This post will uncover its secrets and how it uses Git hooks and filters to manage large files.

Read this article

Migrating Git With An LFS Configuration File
Migrating repositories with LFS can be tricky. This is especially true when the repository is configured to use an LFS endpoint that is separate from the Git repository. Learn how to safely migrate repositories that are using .lfsconfig to manage the storage location.

Read this article