Why SQLite Does Not Use Git

Git is a pretty much standard de facto for version control when it comes to the modern software development.  Yet, there are still many projects, companies, and developers who don’t use it.  Some, like WordPress, for historical reasons – it’ll take a lot of work to migrate all of the infrastructure and community to git.  Others, for personal preference.  An example of the latter is SQLite.

Here’s an interesting article on why SQLite does not use git.  The core reason is simple – the main developer of the SQLite just doesn’t like git, and there is nothing wrong with it.  But in the article there are a few specific technical reasons of why not git, and why Fossil.

Oh sh*t, git!

Oh sh*t, git! is a collection of git problems, their solutions, and some explanations of how that happened and how to get out of it.

Git is hard: screwing up is easy, and figuring out how to fix your mistakes is f*cking impossible. Git documentation has this chicken and egg problem where you can’t search for how to get yourself out of a mess, unless you already know the name of the thing you need to know aboutin order to fix your problem.

GitHub : Quickly review changed functions in your PHP pull requests

GitHub is one of the greatest tools for developers ever.  And it keeps getting better.  Most of the new features that GitHub introduces are usually generic and apply to all developers universally.  Today, however, they have a special present for the PHP developers – Quickly review changed functions in your PHP pull requests.  This is mighty useful, especially on the larger pull requests.

Automerge – a JSON-like data structure for concurrent multi-user editing

Collaborative editing is a very challenging subject, technically speaking.  The old days of users editing a file, sending it to another user, and back are long gone.  Version control tools like git helped with tracking changes and resolving conflicts.  But the newer generation of tools – Google Docs for example – push the bar even higher.  Now many users expect real-time, transparent collaborative tools, which allow multiple users to work on the same document at the same time and without any additional technical complexity.

Automerge is one project that helps the developers to build such collaborative tools, by providing a library of JSON-like data structures, which can be edited in parallel and then merged back together.

Automerge […] supports automatic syncing and merging:

  • You can have a copy of the application state locally on several devices (which may belong to the same user, or to different users). Each user can independently update the application state on their local device, even while offline, and save the state to local disk.(Similar to git, which allows you to edit files and commit changes offline.)
  • When a network connection is available, Automerge figures out which changes need to be synced from one device to another, and brings them into the same state.(Similar to git, which lets you push your own changes, and pull changes from other developers, when you are online.)
  • If the state was concurrently changed on different devices, Automerge automatically merges the changes together cleanly, so that everybody ends up in the same state, and no changes are lost.(Different from git: no merge conflicts to resolve!)

 

GRV – Git Repository Viewer

GRV is a text-based Git repository viewer for the console, much like tig, but with a few extra features:

  • Commits and refs can be filtered using a query language.
  • Changes to the repository are captured by monitoring the filesystem allowing the UI to be updated automatically.
  • Organised as tabs and splits. Custom tabs and splits can be created using any combination of views.
  • Vi like keybindings by default, key bindings can be customised.
  • Custom themes can be created.