mirror of
https://github.com/go-gitea/gitea.git
synced 2026-06-17 19:10:22 +03:00
c68925152b
Moves the "Hacking on Gitea" page out of the documentation website and into the repository as `docs/development.md`, so contributors find build and test instructions next to the code. The content has been cleaned up and corrected for in-repo use. --------- Signed-off-by: bircni <bircni@icloud.com> Co-authored-by: wxiaoguang <wxiaoguang@gmail.com> Co-authored-by: Lunny Xiao <xiaolunwen@gmail.com>
68 lines
2.6 KiB
Markdown
68 lines
2.6 KiB
Markdown
# Setup and requirements
|
|
|
|
This document lists the tools you need to build Gitea from source and how to get
|
|
the code. Once your environment is ready, see [development.md](development.md) for
|
|
the build and development workflow, and [testing.md](testing.md) for running tests.
|
|
|
|
For the contribution workflow and review process, see [CONTRIBUTING.md](../CONTRIBUTING.md).
|
|
|
|
## Requirements
|
|
|
|
### Go
|
|
|
|
[Install Go](https://go.dev/doc/install) and set up your Go environment. The
|
|
required version is the one declared in [`go.mod`](../go.mod); installing the same
|
|
version your continuous integration uses avoids `gofmt` differences between Go
|
|
releases.
|
|
|
|
> [!NOTE]
|
|
> Some `make` tasks build external Go tools on demand (for example `make
|
|
> watch-backend`). To use them, the `"$GOPATH"/bin` directory must be on your
|
|
> executable `PATH`; otherwise you have to manage those tools yourself.
|
|
|
|
### Node.js and pnpm
|
|
|
|
[Install Node.js](https://nodejs.org/en/download/) to build the JavaScript and CSS
|
|
files. The minimum supported version is the one declared in
|
|
[`package.json`](../package.json) (`engines.node`); the latest LTS is recommended.
|
|
|
|
Gitea manages frontend dependencies with [pnpm](https://pnpm.io/). The `make`
|
|
targets invoke it for you, so installing pnpm manually is only needed if you want
|
|
to run `pnpm` commands directly.
|
|
|
|
### Make
|
|
|
|
Gitea uses [Make](https://www.gnu.org/software/make/) to drive builds, linting, and
|
|
tests. On Windows it can be installed via [MSYS2](https://www.msys2.org/) or
|
|
[Chocolatey](https://chocolatey.org/packages/make).
|
|
|
|
### Python with uv (optional)
|
|
|
|
Linting the templates, workflow files, and YAML requires Python tooling that Gitea
|
|
runs through [uv](https://docs.astral.sh/uv/). After installing uv, `make` creates
|
|
the environment automatically (`uv sync`); you only need this if you run
|
|
`make lint-templates`, `make lint-yaml`, or `make lint-actions` locally.
|
|
|
|
### Git LFS
|
|
|
|
The integration tests require [Git LFS](https://git-lfs.com/) to be installed.
|
|
|
|
## Getting the source code
|
|
|
|
Clone the repository:
|
|
|
|
```bash
|
|
git clone https://github.com/go-gitea/gitea
|
|
```
|
|
|
|
To contribute changes, [fork the repository](https://github.com/go-gitea/gitea) on
|
|
GitHub and add your fork as a git remote so you can push branches and open pull
|
|
requests. See GitHub's [working with forks](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/working-with-forks)
|
|
documentation for the details.
|
|
|
|
## Installing dependencies
|
|
|
|
Most build and test targets install the dependencies they need on their own. To
|
|
fetch everything up front, run `make deps` (or the per-group `make deps-frontend`,
|
|
`make deps-backend`, `make deps-tools`, `make deps-py`).
|