The core idea of Dragit is to make a visual Git client free from the conventions of the Git terminal. This may seem surprising, given that "visual" Git clients are a dime a dozen, but I contend that basically all Git clients are being held back by Git's terminal UI.

The strongest example is git log. Many Git clients present a "graph" view of your commits that show merges and forks. However, they still insist on showing all commits in chronological order. Why? Because their idea of a "commit graph" comes straight from the terminal:

image.png

This is git log --oneline --graph. Every Git client I've ever seen, with the exception of GitUp, graphs commits in exactly this way. This is a huge waste! Especially because this chronological order communicates nothing about the actual history structure of the repo.

So, the fundamental questions I want to explore are:

  • How can we make the Git commit graph communicate the bigger picture of a project's history?
  • How can we make history editing more intuitive?

Unfortunately, due to other responsibilities and some difficulties with Orca, I was not able to achieve the workflow I wanted to achieve during the jam.

I spent a lot of time just figuring out how to lay out a graph of commits like this. Turns out it's a challenge! I maybe should have dropped that approach and tried something else, but I felt it was pretty fundamental to the history-editing workflows I had in mind...which I didn't have time to build.

Recent Activity

Unfortunately I didn't get to the interesting history-editing features I had in mind during the jam. I did at least manage to produce a git commit graph with collapsible commits. The idea is to condense the history of a repo so that the branching structure stands out more than all the individual commits. &dragit

Witness my visual git client! You can tell it's visual because you can pan and zoom. &dragit

(This is actually just proving that I have an Orca app up and running with git commands, which...took a while. The fun stuff starts now, finally.)