Ivy Git is a work-in-progress Git GUI that aims to simplify workflow by putting the least amount of resistance between the user and git as possible, enabling diverse workflows without the constraints of being opinionated.
It is built on Wails in Go, Svelte, Typescript, and SCSS, using Vite and WebView2 for the frontend.
- Tree View
- View file diffs/changes (current, staged, and commit history)
- Stage/Unstage files
- Stage/Unstage partial files by changed line
- Write and amend commits or stash changes
- Merge & Rebase
- Resolve conflicts when merging and rebasing
- Fetch/Push/Pull
- Manage branches
- CLOC (Count Lines of Code)
- Contributors list for repositories (WIP)
- Highlight Conventional Commit tags
- Select from three configurations: Merge Commits, Squash & Rebase, or Rebase Everything. Setting changes actions available in context menu.
- Cherry pick commits
- Add, remove, push tags
- Manage remotes
- Quickly set author information in git config per repo
Dependency | Package | Install |
---|---|---|
gcc | build-essential | package manager |
Go 1.21 | golang-1.21 | package manager |
Docker | docker.io | package manager |
libgtk-3 | libgtk-3-dev | package manager |
libwebkit | libwebkit2gtk-4.0-dev | package manager |
pkg-config | pkg-config | package manager |
Node.js/npm | nodejs | package manager / nvm |
Dependency | Package | Install |
---|---|---|
Xcode | xcode | Apple |
Xcode cli tools | xcode | xcode-select --install |
Docker | docker.io | Homebrew / Docker |
Go 1.21 | golang-1.21 | Homebrew / go.dev |
libgtk-3 | libgtk-3-dev | Homebrew |
libwebkit | libwebkit2gtk-4.0-dev | Homebrew |
Node.js/npm | nodejs | Homebrew / nvm |
Dependency | Package | Install |
---|---|---|
Docker | Docker | winget / Docker |
Go 1.21 | GoLang/Go | winget / go.dev |
NSIS | NSIS/NSIS | winget / NSIS |
WebView2 | Microsoft/EdgeWebView2Runtime | winget / Microsoft |
Node.js/npm | nodejs | nvm |
To build for your current platform, run from the ivy-git
source directory:
make
make install
make
will first install all Go and npm dependencies via make deps
, including Wails. It will then call make build
and build for your current system.
To build for a specific OS other than your own, you can run make linux
, make darwin
, or make windows
. To build for Windows, builds, you'll need the additional nsis
dependency.
make install
will copy the binary to /usr/bin/ivy-git
, additional files to /etc/ivy-git/*
, and a .desktop
file to /usr/share/applications/
.
make
will generate a universal app that should work on both x64 and amd (M1) chips. make install
will create a pkg
file that will install the app appropriately.
make install
will create both a zip file and an installer. If you have issues running make install
on Windows, make sure Powershell is accessible from the shell you are using. Be aware: Running install from WSL will, as you might expect, build and install for Linux, not Windows.
If you're having trouble getting Wails properly installed, see the Wails Getting Started guide.
To check dependencies listed above, run wails doctor
after installing Wails.
Node dependencies, including Svelte and Typescript, will be installed as a part of the build process. If you wish/need to manually install, you can run npm ci
from the /frontend
directory.
To run in live development mode, run ./run-dev.sh
. Via this script, the garbage collector will be configured correctly and debug mode enabled.
Alternatively, set the following environment variables and run wails dev
.
In order for the garbage collector to run correctly, the following to environment variables must be set:
GOGC=100
GOMEMLIMIT=1000MiB
To run in debug mode, set the following two environment variables:
IVY_GIT_DEBUG=true
GODEBUG=gctrace=1