mirror of
https://github.com/go-gitea/gitea.git
synced 2026-11-11 20:57:35 +00:00
Backport #40102 by @Zettat123 The post-receive hook syncs pushed branches to the database, but `is_empty` and the default branch of an empty repository were only updated later by the `push_update` queue. Until then the API treated the repository as empty (branch list `null`, `GET /branches/{branch}` 500), and the queue overwrote the default branch chosen by the hook or set via the API. `SyncBranchesToDB` now initializes an empty repository and repairs a default branch missing in git in its locked transaction, so the state is final when `git push` returns. The push queue and web file edits retry it while the repository is still empty. - The default branch is the configured one if it exists, else `main`, else `master`, else the first branch by name, like GitLab. HEAD follows it. - A first push of several branches no longer depends on push order. The push that initializes a repository still prints no pull request hints, like GitHub. --------- Co-authored-by: Zettat123 <zettat123@gmail.com> Co-authored-by: silverwind <me@silverwind.io>