Beyond coding. We forge. (Code of Conduct: https://codeberg.org/forgejo/code-of-conduct)
Go to file
Jason Song d5fec46de7
Avoid returning without written ctx when posting PR (#31843)
Fix #31625.

If `pull_service.NewPullRequest` return an error which misses each `if`
check, `CompareAndPullRequestPost` will return immediately, since it
doesn't write the HTTP response, a 200 response with empty body will be
sent to clients.

```go
	if err := pull_service.NewPullRequest(ctx, repo, pullIssue, labelIDs, attachments, pullRequest, assigneeIDs); err != nil {
		if repo_model.IsErrUserDoesNotHaveAccessToRepo(err) {
			ctx.Error(http.StatusBadRequest, "UserDoesNotHaveAccessToRepo", err.Error())
		} else if git.IsErrPushRejected(err) {
			// ...
			ctx.JSONError(flashError)
		} else if errors.Is(err, user_model.ErrBlockedUser) {
			// ...
			ctx.JSONError(flashError)
		} else if errors.Is(err, issues_model.ErrMustCollaborator) {
			// ...
			ctx.JSONError(flashError)
		}
		return
	}
```

Not sure what kind of error can cause it to happen, so this PR just
expose it. And we can fix it when users report that creating PRs failed
with error responses.

It's all my guess since I cannot reproduce the problem, but even if it's
not related, the code here needs to be improved.

(cherry picked from commit acd7053e9d4968e8b9812ab379be9027ac8e7771)

Conflicts:
	routers/web/repo/pull.go
  trivial context conflict
(cherry picked from commit 385718dd78)
2024-08-21 13:03:36 +02:00
.devcontainer Update ghcr.io/devcontainers/features/git-lfs Docker tag to v1.2.1 2024-06-20 00:01:42 +00:00
.forgejo fix(ci): use 512MB for elasticsearch instead of 32GB 2024-07-16 11:01:31 +00:00
.gitea [CHORE] Remove Microsoft SQL Server Support 2024-04-05 23:37:36 +02:00
assets Update module code.forgejo.org/f3/gof3/v3 to v3.4.0 (#4196) 2024-06-21 13:51:59 +00:00
build enable linter testifylint on v8 (#4573) 2024-07-30 19:41:27 +00:00
cmd enable linter testifylint on v8 (#4573) 2024-07-30 19:41:27 +00:00
contrib Lock file maintenance 2024-07-01 00:03:45 +00:00
custom/conf Add support for workflow_dispatch (#3334) 2024-06-28 05:17:11 +00:00
docker fix(Dockerfile.rootless): revert to default path for app.ini 2024-04-26 21:30:10 +02:00
models Fix panic of ssh public key page after deletion of auth source (#31829) 2024-08-21 13:03:36 +02:00
modules [BUG] Make logout event non-blocking 2024-08-16 14:21:39 +00:00
options [v8.0/forgejo] i18n: update of translations from Weblate 2024-08-08 13:08:19 +05:00
public [v8.0/forgejo] Improvements to English locale (#4460) 2024-07-12 13:09:13 +00:00
release-notes add release notes 2024-08-15 10:48:09 +01:00
releases/images [DOCS] RELEASE-NOTES.md 2024-02-05 14:44:32 +01:00
routers Avoid returning without written ctx when posting PR (#31843) 2024-08-21 13:03:36 +02:00
services Revert "Prevent allow/reject reviews on merged/closed PRs" 2024-08-15 10:47:38 +01:00
templates Show lock owner instead of repo owner on LFS setting page (#31788) 2024-08-21 10:57:57 +00:00
tests Show lock owner instead of repo owner on LFS setting page (#31788) 2024-08-21 10:57:57 +00:00
tools Add lint-go-gopls (#30729) 2024-06-09 11:13:39 +02:00
web_src [UI] Remove snapping for images on project cards 2024-08-20 18:13:54 +02:00
.air.toml Reduce air verbosity (#31417) 2024-06-23 12:30:09 +02:00
.deadcode-out Refactor markup code (#31399) 2024-06-23 11:53:36 +02:00
.dockerignore Add /public/assets/img/webpack to ignore files again (#30451) 2024-04-15 20:01:36 +02:00
.editorconfig fixed indentation style in editorconfig for go.mod 2024-05-14 00:24:18 +02:00
.eslintrc.yaml add built js files to eslint ignore (#30737) 2024-05-05 08:22:50 +01:00
.gitattributes Add interface{} to any replacement to make fmt, exclude *.pb.go (#30461) 2024-04-15 20:01:36 +02:00
.gitignore Add /public/assets/img/webpack to ignore files again (#30451) 2024-04-15 20:01:36 +02:00
.gitmodules cleanup(tests): remove manual testing submodule 2024-04-21 10:13:51 +02:00
.gitpod.yml Remove sqlite-viewer and using database client (#31223) 2024-06-09 11:13:39 +02:00
.golangci.yml enable linter testifylint on v8 (#4573) 2024-07-30 19:41:27 +00:00
.ignore Add /options/license and /options/gitignore to .ignore (#30219) 2024-04-07 15:40:31 +02:00
.markdownlint.yaml Update JS dependencies (#28537) 2023-12-30 05:29:03 +00:00
.npmrc Upgrade to npm lockfile v3 and explicitely set it (#23561) 2023-03-18 19:38:10 +01:00
.spectral.yaml
.yamllint.yaml fully replace drone with actions (#27556) 2023-10-11 06:39:32 +00:00
BSDmakefile Fix build errors on BSD (in BSDMakefile) (#27594) 2023-10-13 15:38:27 +00:00
build.go User/Org Feed render description as per web (#23887) 2023-04-04 04:39:47 +01:00
CODEOWNERS I feel responsible … (Codeowners) 2024-04-27 02:22:05 +02:00
CONTRIBUTING.md docs: contributing: avoid information duplication (#3454) 2024-04-25 19:10:43 +00:00
DCO Remove address from DCO (#22595) 2023-01-24 18:52:38 +00:00
Dockerfile Fix deprecated Dockerfile ENV format (#31450) 2024-06-23 13:20:40 +02:00
Dockerfile.rootless Fix deprecated Dockerfile ENV format (#31450) 2024-06-23 13:20:40 +02:00
flake.lock update nix flake and add gofumpt (#31320) 2024-06-16 13:42:58 +02:00
flake.nix update nix flake and add gofumpt (#31320) 2024-06-16 13:42:58 +02:00
go.mod Update dependency go to v1.22.5 2024-07-03 14:58:30 +00:00
go.sum Merge pull request 'Update module github.com/yuin/goldmark to v1.7.4' (#4240) from renovate/github.com-yuin-goldmark-1.x into forgejo 2024-06-26 07:51:29 +00:00
LICENSE [DOCS] LICENSE: add Forgejo Authors 2024-02-05 14:44:32 +01:00
main.go [RELEASE] decouple the release name from the version number 2024-02-17 15:27:35 +01:00
Makefile build(go-licenses): support go toolchain mismatch 2024-07-04 14:16:27 +00:00
package-lock.json Remove APA as cite format 2024-07-20 17:58:56 +02:00
package.json Remove APA as cite format 2024-07-20 17:58:56 +02:00
playwright.config.js Enforce trailing comma in JS on multiline (#30002) 2024-03-26 19:04:27 +01:00
poetry.lock Lock file maintenance 2024-07-01 00:03:45 +00:00
poetry.toml Clean up pyproject.toml and package.json, fix poetry options (#25327) 2023-06-18 18:13:08 +00:00
pyproject.toml Enable poetry non-package mode (#31282) 2024-06-09 16:04:57 +02:00
README.md [skip ci] IGNORE (#4106) 2024-06-11 16:06:50 +00:00
RELEASE-NOTES.md [skip ci] docs(release-notes): 1.21.11-2 2024-06-13 14:27:14 +02:00
renovate.json Merge pull request 'Update module golang.org/x/tools/gopls to v0.16.0' (#4242) from renovate/golang.org-x-tools-gopls-0.x into forgejo 2024-06-28 14:10:33 +00:00
stylelint.config.js Merge pull request 'Port "Enable declaration-block-no-redundant-longhand-properties (#30950)' (#3769) from beowulf/gitea-port-pull-30950 into forgejo 2024-05-14 22:23:54 +00:00
tailwind.config.js [FEAT] folding results for repo search (#4134) 2024-06-15 20:16:18 +00:00
vitest.config.js Switch to happy-dom for testing (#29948) 2024-03-26 19:04:26 +01:00
webpack.config.js [CHORE] Don't bundle elkjs 2024-07-25 00:20:31 +00:00

Welcome to Forgejo

Hi there! Tired of big platforms playing monopoly? Providing Git hosting for your project, friends, company or community? Forgejo (/for'd͡ʒe.jo/ inspired by forĝejo the Esperanto word for forge) has you covered with its intuitive interface, light and easy hosting and a lot of builtin functionality.

Forgejo was created in 2022 because we think that the project should be owned by an independent community. If you second that, then Forgejo is for you! Our promise: Independent Free/Libre Software forever!

What does Forgejo offer?

If you like any of the following, Forgejo is literally meant for you:

  • Lightweight: Forgejo can easily be hosted on nearly every machine. Running on a Raspberry? Small cloud instance? No problem!
  • Project management: Besides Git hosting, Forgejo offers issues, pull requests, wikis, kanban boards and much more to coordinate with your team.
  • Publishing: Have something to share? Use releases to host your software for download, or use the package registry to publish it for docker, npm and many other package managers.
  • Customizable: Want to change your look? Change some settings? There are many config switches to make Forgejo work exactly like you want.
  • Powerful: Organizations & team permissions, CI integration, Code Search, LDAP, OAuth and much more. If you have advanced needs, Forgejo has you covered.
  • Privacy: From update checker to default settings: Forgejo is built to be privacy first for you and your crew.
  • Federation: (WIP) We are actively working to connect software forges with each other through ActivityPub, and create a collaborative network of personal instances.

Learn more

Dive into the documentation, subscribe to releases and blog post on our website, find us on the Fediverse or hop into our Matrix room if you have any questions or want to get involved.

Get involved

If you are interested in making Forgejo better, either by reporting a bug or by changing the governance, please take a look at the contribution guide.