<- HOME - a blog about
xit RSS
██╗ ██╗██╗████████╗██╗ ██████╗ ██████╗
╚██╗██╔╝██║╚══██╔══╝██║ ██╔═══██╗██╔════╝
╚███╔╝ ██║ ██║ ██║ ██║ ██║██║ ███╗
██╔██╗ ██║ ██║ ██║ ██║ ██║██║ ██║
██╔╝ ██╗██║ ██║ ███████╗╚██████╔╝╚██████╔╝
╚═╝ ╚═╝╚═╝ ╚═╝ ╚══════╝ ╚═════╝ ╚═════╝
XIT IS COMING - March 4, 2025
I'm working on a new version control system called
xit
(pronounced like "zit"). To paraphrase JFK: I do this not
because it is easy...but because I thought it would be
easy. It is hilarious how much I misjudged how hard this
would be. Nonetheless, here are the main features:
1. Compatible with git hosts. You can push/pull/clone with
Github and other git hosts, and nobody will even know
you're using xit. I spent all of this past winter
implementing the git protocol, and contrary to popular
belief I am not perfect, so PLEASE REPORT BUGS!
2. Combine snapshot-based and patch-based version control.
When you merge or cherry-pick with xit, it uses patch-based
merging, which should be more reliable and lead to fewer
merge conflicts than git's three-way merge. Once again,
until it sees more real-world use you should temper
expectations.
3. Built-in text user interface (TUI). If you just launch
`xit` in a repo with no extra arguments, it will launch a
TUI where you can browse commits and view the status of all
uncommitted changes. Eventually the TUI will expose *all*
the functionality of xit, including making commits and
performing merges, but I'm not quite there yet.
4. Store large/binary files efficiently. Internally, xit
stores objects in a completely different way than git does.
It uses FastCDC to break up files into chunks, somewhat
like BitTorrent except the chunks are variable sized. The
goal is to be excellent at storing large, binary files, so
we never need an add-on like git LFS.
5. Universal undo. Any change to the repo will be undoable.
Yes, I mean *any* change. That includes not just changes to
refs (as shown in git's reflog) but also changes to the
index, the config, and so on. I'm still working on this
feature so it's not available yet. It should land soon, but
for now, it's vaporware.
Git's 20th birthday is in April 2025. So much has changed
in those two decades, and we need a tool that is free from
the design limitations and technical debt that has accrued
in git. If all goes well, xit will celebrate its 20th
birthday in 2045 as an old incumbent being challenged by a
newcomer.
If that day comes, I'll do my best to sabotage the
newcomer's attempt to unseat me from the throne...just
kidding, of course. I'll nod sagely in my bathrobe with a
beverage in hand and continue not caring.