50% off your 1st seat of GitKraken Pro — only $4/month!

Git Blog

Releasing the Power of Git

GitKraken Client is Migrating From Libgit2 to the Git Executable

In a world where companies pivot for breakfast, lunch and dinner – it’s rare to see a tech house commit to a large, time intensive project. Big projects take a long time to implement. Sometimes too long. But we asked ourselves, “Can we give users an early look at some of the stuff we’re working on?” We wanted something that was in-between a public beta and our own GitKraken preview states.

Experimental features give us a chance to share what we’re working on with users before it’s officially finished, and get your prized feedback.  Based on feedback and usage, some experimental features may graduate to an official release while others may be discarded to the graveyard.

You can try experimental features by navigating to Preferences > Experimental Features, and for the remainder of this post, we’re going to spotlight Git Executable.

What and Why is Git Executable?

Git is seeing rapid development of new features, all of which need to be added to the underlying library we use for performing Git operations: libgit2.

While libgit2 is still maintained and receives bug fixes/feature work, there is an order of magnitude difference in development between Git and libgit2. Additionally, libgit2 development effort tends to focus on features required for Git hosts, not clients.

In order to keep up with the fast-paced development of Git, we’ve decided to focus on moving GitKraken Client over to relying more on the Git Executable and less on libgit2.

Furthermore, with the overwhelmingly positive feedback and the many benefits described in this post, the Git Executable will become the exclusive way GitKraken Client performs Git operations in a future release.

What’s the Schedule?

Over the next few (or likely many) releases, we’ll be migrating more features from libgit2 to running via the Git Executable.

For those of you running Git Executable from Preferences > Experimental Features, we’ve already migrated a handful of core areas:

  • Refresh commits commit info displayed in the graph)
  • Verify commit gpg signature
  • Commit
  • Fetch
  • Branch ahead/behind count (e.g. from pull request panel)
  • Merge base calculation (e.g. from right clicking a local branch in the left panel)
  • Branch rename
  • Branch delete (local branch only)
  • Remote branch delete
  • Tag delete (local and remote)
  • SSH commit signing support
    • Actions that do not currently use the Git Executable (like rebasing) will still use GPG for signing
  • SSH strict host key checking support
  • Push
  • Support for streaming Git hooks output
  • Sign tags with SSH

What Difference Can I Expect from the App?

This will allow users to gain access to new Git features sooner. You won’t need to wait for libgit2 to build out support for new Git features, and some of them might be available without updates to the client.

The migration to Git Executable will allow us to resolve long-standing issues with GitKraken Client, such as poor LFS performance, SSH configuration support and many other features/performance improvements.

That means better stability and a smoother experience for our users. With that said, please pardon our dust as we continue to roll out the switch!🧹🚧

Stay legendary out there.

Like this post? Share it!

Read More Articles

Make Git Easier, Safer &
More Powerful

with GitKraken
Visual Studio Code is required to install GitLens.

Don’t have Visual Studio Code? Get it now.