diff --git a/docs/contributing.md b/docs/contributing.md index e088bbac9..47c51309d 100644 --- a/docs/contributing.md +++ b/docs/contributing.md @@ -269,47 +269,85 @@ We recommend at least these settings: ## Previewing the HTML documentation -The documentation for `jj` is automatically published to the website at +The documentation for `jj` is automatically published online at . -When editing documentation, we'd appreciate it if you checked that the -result will look as expected when published to the website. +When editing documentation, you should check your changes locally — especially +if you are adding a new page, or doing a major rewrite. -### Setting up the prerequisites +### Install `uv` -To build the website, you must have `uv` installed (version 0.5.1 or later). -Please see: [Installing uv]. +The only thing you need is [`uv`][uv] (version 0.5.1 or newer). -[Installing uv]: https://docs.astral.sh/uv/getting-started/installation/ +`uv` is a Python project manager written in Rust. It will fetch the right Python +version and the dependencies needed to build the docs. Install it like so: -Once you have `uv` installed, you should ask it to install the rest -of the required tools into a virtual environment as follows: +[uv]: https://docs.astral.sh/uv/ -```shell -uv sync -``` +=== "macOS/Linux" -### Building the HTML docs locally (with live reload) + ``` { .shell .copy } + curl -LsSf https://astral.sh/uv/install.sh | sh + ``` -The HTML docs are built with [MkDocs](https://github.com/mkdocs/mkdocs). After -following the above steps, you should be able to view the docs by running + !!! note + If you don't have `~/.local/bin` in your `PATH`, the installer will + modify your shell profile. To avoid it: -```shell -# Note: this and all the commands below should be run from the root of -# the `jj` source tree. + ``` { .shell .copy } + curl -LsSf https://astral.sh/uv/install.sh | env INSTALLER_NO_MODIFY_PATH=1 sh + ``` + +=== "Windows" + + ``` { .shell .copy } + powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex" + ``` + +=== "Homebrew" + + ``` { .shell .copy } + brew install uv + ``` + +=== "Cargo" + + ``` { .shell .copy } + # This might take a while + cargo install --git https://github.com/astral-sh/uv uv + ``` + +=== "Other options" + + * Directly download the binaries from GitHub: [uv releases](https://github.com/astral-sh/uv/releases). + * Even more options: [Installing uv](https://docs.astral.sh/uv/getting-started/installation/). + +### Build the docs + +To build the docs, run from the root of the `jj` repository: + +``` { .shell .copy } uv run mkdocs serve ``` -and opening in your browser. +Open in your browser to see the docs. -As you edit the `md` files, the website should be rebuilt and reloaded in your -browser automatically, unless build errors occur. +As you edit the `.md` files in `docs/`, the website should be rebuilt and +reloaded in your browser automatically. -You should occasionally check the terminal from which you ran `uv run mkdocs serve` for -any build errors or warnings. Warnings about `"GET /versions.json HTTP/1.1" code -404` are expected and harmless. +!!! note "If the docs are not updating" + Check the terminal from which you ran `uv run mkdocs serve` for any build + errors or warnings. Warnings about `"GET /versions.json HTTP/1.1" code 404` + are expected and harmless. -### How to build the entire website (not usually necessary) +## Building the entire website + +!!! tip + Building the entire website is not usually necessary. If you are editing + documentation, the previous section is enough. + + These instructions are relevant if you are working on the versioning of the + documentation that we currently do with `mike`. The full `jj` website includes the documentation for several `jj` versions (`prerelease`, latest release, and the older releases). The top-level @@ -325,16 +363,18 @@ On a POSIX system or WSL, one way to build the entire website is as follows (on Windows, you'll need to understand and adapt the shell script): 1. Check out `jj` as a co-located `jj + git` repository (`jj clone --colocate`), -cloned from your fork of `jj` (e.g. `jjfan.github.com/jj`). You can also use a +cloned from your fork of `jj` (e.g. `github.com/jjfan/jj`). You can also use a pure Git repo if you prefer. -2. Make sure `jjfan.github.com/jj` includes the `gh-pages` bookmark of the jj repo +2. Make sure `github.com/jjfan/jj` includes the `gh-pages` bookmark of the jj repo and run `git fetch origin gh-pages`. 3. Go to the GitHub repository settings, enable GitHub Pages, and configure them to use the `gh-pages` bookmark (this is usually the default). -4. Run the same `sh` script that is used in GitHub CI (details below): +4. Install `uv` as explained in [Previewing the HTML +documentation](#previewing-the-html-documentation), and run the same `sh` script +that is used in GitHub CI (details below): ```shell .github/scripts/docs-build-deploy 'https://jjfan.github.io/jj/'\ @@ -373,7 +413,7 @@ this can be done with: If you want to preserve some of the changes you made, you can do `jj bookmark set my-changes -r gh-pages` BEFORE running the above commands. -#### Explanation of the `docs-build-deploy` script +### Explanation of the `docs-build-deploy` script The script sets up the `site_url` mkdocs config to `'https://jjfan.github.io/jj/'`. If this config does not match the URL