Installation and setup¶
Installation¶
Download pre-built binaries for a release¶
There are pre-built binaries
of the last released version of jj
for Windows, Mac, or Linux (the "musl"
version should work on all distributions).
If you'd like to install a prerelease version, you'll need to use one of the options below.
Cargo Binstall¶
If you use cargo-binstall
, you
can install the same binaries of the last jj
release from GitHub as follows:
# Will put the jj binary for the latest release in ~/.cargo/bin by default
cargo binstall --strategies crate-meta-data jj-cli
Without the --strategies
option, you may get equivalent binaries that should
be compiled from the same source code.
Linux¶
From Source¶
First make sure that you have a Rust version >= 1.76 and that the libssl-dev
,
openssl
, pkg-config
, and build-essential
packages are installed by running
something like this:
sudo apt-get install libssl-dev openssl pkg-config build-essential
Now run either:
# To install the *prerelease* version from the main branch
cargo install --git https://github.com/martinvonz/jj.git --locked --bin jj jj-cli
or:
# To install the latest release
cargo install --locked --bin jj jj-cli
Arch Linux¶
You can install the jujutsu
package from the official extra repository:
pacman -S jujutsu
Or install from the AUR repository with an AUR Helper:
yay -S jujutsu-git
Nix OS¶
If you're on Nix OS you can install a released version of jj
using the
nixpkgs jujutsu
package.
To install a prerelease version, you can use the flake for this repository.
For example, if you want to run jj
loaded from the flake, use:
nix run 'github:martinvonz/jj'
You can also add this flake url to your system input flakes. Or you can install the flake to your user profile:
# Installs the prerelease version from the main branch
nix profile install 'github:martinvonz/jj'
Homebrew¶
If you use linuxbrew, you can run:
# Installs the latest release
brew install jj
Gentoo Linux¶
dev-vcs/jj
is available in the GURU repository.
Details on how to enable the GURU repository can be found here.
Once you have synced the GURU repository, you can install dev-vcs/jj
via Portage:
emerge -av dev-vcs/jj
Mac¶
From Source, Vendored OpenSSL¶
First make sure that you have a Rust version >= 1.76. You may also need to run:
xcode-select --install
Now run either:
# To install the *prerelease* version from the main branch
cargo install --git https://github.com/martinvonz/jj.git \
--features vendored-openssl --locked --bin jj jj-cli
or:
# To install the latest release
cargo install --features vendored-openssl --locked --bin jj jj-cli
From Source, Homebrew OpenSSL¶
First make sure that you have a Rust version >= 1.76. You will also need Homebrew installed. You may then need to run some or all of these:
xcode-select --install
brew install openssl
brew install pkg-config
export PKG_CONFIG_PATH="$(brew --prefix)/opt/openssl@3/lib/pkgconfig"
Now run either:
# To install the *prerelease* version from the main branch
cargo install --git https://github.com/martinvonz/jj.git --locked --bin jj jj-cli
or:
# To install the latest release
cargo install --locked --bin jj jj-cli
Homebrew¶
If you use Homebrew, you can run:
# Installs the latest release
brew install jj
MacPorts¶
You can also install jj
via the MacPorts jujutsu
port:
# Installs the latest release
sudo port install jujutsu
Windows¶
First make sure that you have a Rust version >= 1.76. Now run either:
# To install the *prerelease* version from the main branch
cargo install --git https://github.com/martinvonz/jj.git --locked --bin jj jj-cli --features vendored-openssl
or:
# To install the latest release
cargo install --locked --bin jj jj-cli --features vendored-openssl
Initial configuration¶
You may want to configure your name and email so commits are made in your name.
$ jj config set --user user.name "Martin von Zweigbergk"
$ jj config set --user user.email "martinvonz@google.com"
Command-line completion¶
To set up command-line completion, source the output of
jj util completion bash/zsh/fish
. Exactly how to source it
depends on your shell.
Bash¶
source <(jj util completion bash)
Zsh¶
autoload -U compinit
compinit
source <(jj util completion zsh)
Fish¶
jj util completion fish | source
Nushell¶
jj util completion nushell | save completions-jj.nu
use completions-jj.nu * # Or `source completions-jj.nu`
Xonsh¶
source-bash $(jj util completion)