forgejo/CONTRIBUTING.md

73 lines
2.1 KiB
Markdown

# Forgejo Contributor Guide
The Forgejo project is run by a community of people who are expected to follow this guide when cooperating on a simple bug fix as well as when changing the governance. For more information about the project, take a look at [the documentation explaining what Forgejo provides](README.md).
Sensitive security-related issues should be reported to [security@forgejo.org](mailto:security@forgejo.org) using [encryption](https://keyoxide.org/security@forgejo.org).
You can find links to the different aspects of Developer documentation on this page: [Forgejo Contributor Guide](https://forgejo.org/docs/next/contributor/).
## For developers
Consider the below an appendix to the valuable [official *Forgejo Contributor Guide*](https://forgejo.org/docs/next/contributor).
For any development work, it's recommended to use the devcontainer.
### Building
Build a single image for multiple architectures:
1. Setup: (do this once)
```bash
docker buildx create --name mybuilder --use
docker buildx inspect --bootstrap
docker run --privileged --rm tonistiigi/binfmt --install all
```
2. Build:
```bash
docker buildx build --platform linux/amd64,linux/arm64 -t user/repo:tag --push .
```
Replace the tag. You can add more architectures, if you wish.
For non-Docker builds, [use the official instructions](https://forgejo.org/docs/next/contributor/from-source/).
### Live reload
Live reload make it easy to view changes.
```bash
TAGS='sqlite sqlite_unlock_notify' make watch
```
It's still recommended to restart whenever it's convenient, or making a bigger change.
### Merge
Merging changes from vanilla.
Make sure you checked out the branch to merge to.
1. Add the upstream repository, if you haven't already:
```bash
git remote add upstream https://codeberg.org/forgejo/forgejo.git
```
2. Fetch changes: (note: `--no-tags` is necessary)
```bash
git fetch --no-tags upstream
```
3. Merge the changes into the fork:
```bash
git merge upstream/$BRANCH
```
### Tag a release
```
git tag $TAG
git push origin tag $TAG
```