@peterbe/gg
v0.0.13
Published
CLI tool for creating, committing, and generally managing your git branches.
Readme
gg2
CLI tool for creating, committing, and generally managing your git branches.
Installation
For Linux, download a relase file for your OS on https://github.com/peterbe/gg2/releases
For macOS, right now you can't install with Homebrew and your operating system won't allow you to download an executable from GitHub and run it. Simplest is to clone the repo and compile it yourself:
git clone https://github.com/peterbe/gg2.git && cd gg2
bun install
bun run build
cp out/gg ~/bin
chmod +x ~/bin/ggFor bash/zsh autocompletion add this to your ~/.bashrc or ~/.zshrc file:
source <(gg shell-completion)Now, you should be able to type gg [TAB] and see all options.
Compiled
The source code for this CLI is written in TypeScript.
The code is compiled using bun to
an executable that is compiled specifically for your operating system, for example,
bun-darwin-arm64. Because it's compiled to a single executable binary, the
start-up time to run the CLI is very fast. ⚡
For example, the GitHub CLI, gh, is written in Go and is also compiled to a single
executable binary. For comparison, running the hyperfine command-line
benchmarking tool using:
hyperfine "gg --version" "gh --version"Results:
Benchmark 1: gg --version
Time (mean ± σ): 25.0 ms ± 0.7 ms [User: 21.2 ms, System: 9.4 ms]
Range (min … max): 23.6 ms … 28.5 ms 108 runs
Benchmark 2: gh --version
Time (mean ± σ): 29.3 ms ± 0.6 ms [User: 26.9 ms, System: 8.0 ms]
Range (min … max): 27.9 ms … 31.1 ms 90 runs
Summary
gg --version ran
1.17 ± 0.04 times faster than gh --versionThe point is; it takes on average 25 milliseconds to run the gg --version command.
Development
git clone https://github.com/peterbe/gg2.git
cd gg2
bun install
bun run buildThis will create an executable called out/gg.
You can test it with:
./out/gg --helpBut if you don't want to compile every time, you can simply type, for example:
bun run src/index.ts --helpIf you prefer to test with the compiled executable, you can run:
bun build --watch src/index.ts --target=bun --outfile ~/bin/gg --compilewhich will constantly compile an executable and it into your ~/bin directory.
Test and linting
To run the unit tests:
bun testTo format and check linting, run:
bun run lintIf you want to check the linting without formatting, run:
bun run lint:check