CONTRIBUTING.md

Contributing

:wave: Hey there! Thanks for considering taking the time to contribute to git-bug. This page contains some general guidelines, and instructions for getting started as a contributor to this project.

Get the source code

Clone this repository to your system in a way you're comfortable with. Below, we show a command that [clones the repository][how-to-clone] using SSH, and places it in ~/code/git-bug.

git clone git@github.com:git-bug/git-bug ~/code/git-bug

[!IMPORTANT] If you wish to clone the repository to another location on disk, change ~/code/git-bug to your desired path. The rest of this documentation will refer to ~/code/git-bug in all instances, so make sure you change them there, too.

Software recommendations

While you can install Golang and hack on this project on your own, you're likely to have a better experience if you install the following software.

nix is used in this repository to provide a common development shell, with a complete set of the appropriate version of the tools used to work on git-bug.

You can install nix by following the official instructions, but we recommend adding some additional flags in order to enable some (technically experimental, but largely stable) configuration options:

curl -L https://nixos.org/nix/install | sh -s -- --daemon --nix-extra-conf-file <( \
cat << EOF | sed -e 's/^ *//'
  experimental-features = nix-command flakes
EOF
)

[!TIP] Make sure you read the prompts from the installation script carefully. After installation, you'll need to start a new shell.

direnv is used to automatically activate the development shell (because of the .envrc in the root of this repository).

With nix

[!IMPORTANT] If you are not comfortable with nix, we recommend [installing direnv without nix][install/install-direnv-without-nix].

nix --extra-experimental-options 'flakes nix-command' profile install nixpkgs\#direnv

There's a second step that is critical -- be sure to configure your shell.

Without nix

You can install direnv by following the official instructions. There's a second step that is critical -- be sure to configure your shell.

After installation, you'll need to start a new shell.

If you install direnv, it is recommended to set the following configuration options to improve your user experience. At the time of writing, these go in ~/.config/direnv/direnv.toml.

This configuration, namely, the whitelist.exact property, will ensure that direnv always automatically sources the .envrc in this repository.

hide_env_diff = true
warn_timeout = 0

[whitelist]
exact = ["~/code/git-bug/.envrc"]

[!IMPORTANT] Make sure you change the ~/code/git-bug portion of the string to the appropriate path (the path that you cloned this repository to on your system).