X is full of heated discussions and hot takes on which web framework you should be using, or which systems language is the only one you should consider learning in 2024. One tool that developers, in the most part, just accept, though, is git.
git has a steep learning curve, though pays dividends, not only as a tool for version control, but extra continuous integration and continuous delivery (CI/CD) benefits such as automated deploys and automated checks, offered by GitHub Actions, for example. GitButler and Graphite are just a couple of recent startups built for, git and I thought this might be an opportune time to run through some open source offerings worthy of a mention.
Self-hosted git with Large File Support
Discovered this recently. Soft serve is built in Go by the Charm team (also behind the Glow Markdown highlighter) and a few other terrific Terminal tools. It was recommended to me for game development, with large assets. I deployed it on the local network to help sync updates to my home-made Rust CLI tools between devices. It is quick to set up, and although it is intended to run in the cloud, you can spin it up on a network-connected Raspberry Pi.
Text-based user interface (TUI) for browsing git repos
The Soft Serve project is so good
that it gets two mentions! Even if you are not looking for git self-hosting, try
soft, which lets you browse your git projects from the command line. It has
syntax highlighting, and like Lazygit (next up), feels much more convenient than
using a GUI text editor. Just type soft
, and you can tab between a file
viewer, commits, the stash, branches, and tags.
Convenient Text-based user interface for common git operations
Lazygit is another CLI git tool, also written in Go. It lets you view diffs, add files for commit, create commits and much more. And all with a nicer, more interactive interface than the standard git tool. I find the interface quicker and more comfortable than the git tab in VS Code, for example. Lazygit just got a makeover, so if you have been meaning to try it for a while, now is a good time!
Open-source Rust CLI tool for stacking git commits
git-stack brings stacked git commits, which help you complete a sprint in small chunks. This makes it easier for the reviewer, as they can review smaller commits, as and when they come, taking less cognitive load. Graphite works along similar lines, though git-stack may better suit private projects, as you do not need to give anyone access to your code with git-stack. git-stack is also an open source project.
GitHub Actions hack for developers with many repos sharing similar workflows
This last one is a hack, rather than a piece of tooling. If you are running a lot of projects with GitHub Actions workflows, keeping the actions up-to-date can become burdensome. Jon Gjengset recommended creating a GitHub Action config repo, which just contains GitHub Actions that you use in all your Rust projects, for example. Then in a new project that fits the template you created, run:
git remote add ci \
https://github.com/your-profile/your-ci-repo
git fetch ci
git merge --allow-unrelated ci/main
Now you only need to keep track of GitHub action updates in the CI config repo. Add updates there, and then run that last git merge command on any other repos you want to bring up-to-date.
Hope you found those useful. What other git tooling do you use? Interested to hear about anything missing from this list.
Been getting some good feedback on the Deno posts I have written, from starting out with Deno Fresh to using Deno’s marvellous Rust WebAssembly (WASM) integrations.
It was also interesting to see Luke Edwards mention he has just published his first full-fledged Deno project. Recounting the experience he highlighted Deno’s:
See the tweet for the full rundown.
Hope there was something valuable in here for you. As always, reach out with feedback. Here are some links to recent content, which I hope you will find useful: