gitwig 2.6.2

a rust based tui, an alternative to sourcetree and gitui
Documentation
# 🚀 Installation & Running

## Prerequisites

**Gitwig** requires the following external tools to be installed on your system:
- **`git`**: A system installation of `git` is required in your `PATH` for operations like staging, diffing, pushing, pulling, and network syncing.
- **`ssh`**: Required if you use SSH-based Git remotes for network operations.
  > [!NOTE]
  > **SSH Host Key Policy:** To prevent connection hangs in the non-interactive TUI context, Gitwig executes git commands with `GIT_SSH_COMMAND` set to `ssh -o BatchMode=yes -o StrictHostKeyChecking=accept-new`. `accept-new` automatically trusts and saves new host keys while verifying existing ones to protect against MITM attacks; set `ssh_strict_host_checking = true` in `config.toml` (or toggle it in Settings) to use `-o StrictHostKeyChecking=yes` instead, in which case add host keys to your `known_hosts` beforehand. `BatchMode=yes` stops ssh from prompting on the terminal for passphrases or confirmations (which would paint over the TUI), so an SSH key that needs a passphrase must be loaded into `ssh-agent` first — otherwise the connection fails immediately and the error is shown in-app.


### Via Homebrew (macOS / Linux)

You can tap and install **Gitwig** using Homebrew:

```sh
brew tap tareqmy/tap
brew install gitwig
```

*Note: `brew install gitwig` only resolves the formula once the tap is added — if Homebrew reports "No available formula", run `brew tap tareqmy/tap` first and then `brew install gitwig` again.*

### Via Shell Script (macOS / Linux)

For a quick installation, run the following command in your terminal:

```sh
curl -fsSL https://raw.githubusercontent.com/tareqmy/gitwig/master/scripts/install.sh | sh
```

### On Windows

You can install **Gitwig** on Windows via PowerShell:

Run the following command in PowerShell:

```powershell
irm https://raw.githubusercontent.com/tareqmy/gitwig/master/scripts/install.ps1 | iex
```
* **Benefits**: Quick command-line installation to your user profile directory (`%USERPROFILE%\.gitwig\bin`) without requiring administrator privileges.
* **Updating**: Supports the in-app self-updater, which will automatically run `install.ps1` to download newer versions.

### Via Chocolatey (Windows)

You can install **Gitwig** using Chocolatey:

```cmd
choco install gitwig
```

*Note: For the in-app self-updater, if installed via Chocolatey, you should update the package by running `choco upgrade gitwig`.*

### Via Cargo

You can install **Gitwig** directly from [crates.io](https://crates.io/crates/gitwig):

```sh
cargo install gitwig
```

### Via Nix (flake)

The repository ships a Nix flake building both the `gitwig` and `gtg` binaries. Run it directly without installing:

```sh
nix run github:tareqmy/gitwig
```

Or install it into your profile:

```sh
nix profile install github:tareqmy/gitwig
```

In a flake-based NixOS / home-manager configuration, add the flake as an input and reference its package:

```nix
inputs.gitwig.url = "github:tareqmy/gitwig";
# ...
environment.systemPackages = [ inputs.gitwig.packages.${pkgs.system}.default ];
```

A development shell with the Rust toolchain is also provided: `nix develop`.

*Note: the in-app self-updater does not apply to Nix installs; update by bumping the flake input (`nix flake update gitwig`) or re-running `nix profile upgrade`.*

### Building from Source

Alternatively, you can clone the repository and build it from source:

```sh
git clone https://github.com/tareqmy/gitwig.git
cd gitwig
cargo build --release
```

The compiled binary will be located at `target/release/gitwig`. You can copy it to a directory in your `$PATH` or run it directly.

### Uninstalling

If you installed Gitwig via the shell script, you can uninstall it at any time using:

```sh
curl -fsSL https://raw.githubusercontent.com/tareqmy/gitwig/master/scripts/uninstall.sh | sh
```

If you installed Gitwig via the PowerShell script, you can uninstall it at any time using:

```powershell
irm https://raw.githubusercontent.com/tareqmy/gitwig/master/scripts/uninstall.ps1 | iex
```


### Running

You can launch **Gitwig** using either the full name or the short command alias `gtg`:

```sh
# Run with default config resolution
gitwig
# Or using the shortcut:
gtg

# Run with an explicit config path
gitwig path/to/config.toml
# Or:
gtg path/to/config.toml
```