6 KiB
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.
Improved completions are currently in the works, these will complete things like bookmark names as well. You can activate them with the alternative "dynamic" instructions below. Please let us know if you encounter any issues, so we can ensure a smooth transition once we default to these new completions. If you have ideas about specific completions that could be added, please share them here.
Bash
source <(jj util completion bash)
dynamic:
echo "source <(COMPLETE=bash jj)" >> ~/.bashrc
Zsh
autoload -U compinit
compinit
source <(jj util completion zsh)
dynamic:
echo "source <(COMPLETE=zsh jj)" >> ~/.zshrc
Fish
jj util completion fish | source
dynamic:
echo "source (COMPLETE=fish jj | psub)" >> ~/.config/fish/config.fish
Nushell
jj util completion nushell | save completions-jj.nu
use completions-jj.nu * # Or `source completions-jj.nu`
(dynamic completions not available yet)
Xonsh
source-bash $(jj util completion)
(dynamic completions not available yet)