Features
- Mirror from GitLab, Gitea and Forgejo. The connection card has a Source dropdown: GitHub, GitLab (beta) or Gitea / Forgejo, which also covers Codeberg. Code, branches, tags, wiki, LFS, scheduled sync, auto import, cleanup and add by URL work for every source. Issues, pull requests, labels, milestones and releases stay GitHub only for now, and the switches say so. Repositories remember which host they came from, and both mirror paths refuse a repository from a different host, so a token is never sent to the wrong server. Configure with
SOURCE_PROVIDERandSOURCE_URL, see SOURCE_PROVIDERS.md. (#376, #371) - Forgejo as a named destination, and locked hosts. The destination card has a Destination dropdown with Gitea and Forgejo, also settable with
DESTINATION_PROVIDER. Once repositories are imported the source locks, once anything is mirrored the destination locks, and changing either goes through a confirmation that spells out what happens to existing repositories. Environment values that disagree with a locked host are ignored on boot with a warning. (#376) - API keys. Create keys under Configuration, Authentication, API Keys, and send them in the
x-api-keyheader to use every existing endpoint from CI, workflow tools or scripts: list repositories, add one by owner and name, start a mirror. Keys are hashed at rest, can expire, can be revoked, and cannot create or revoke other keys. See API.md. (#380, closes #314) - Release asset limit. A new "Assets for latest" setting next to the release limit uploads assets only for the newest N releases; older releases keep their notes and tag. Zero means notes only. It can be set globally, per organization and per repository, and never deletes assets already uploaded.
RELEASE_ASSET_LIMITfor environment configs. (#379, closes #311)
Changes
- Better Auth 1.7.2. Accounts now carry the issuer that 1.7 looks up on sign in; the migration backfills it for existing password and SSO accounts, so nobody is locked out. Databases that ran the reverted 1.7 release candidate build from the
mainimage in August are repaired on boot. One visible change: a sign-up request that carries ausernamefield is now rejected with 400. The web UI never sends one. (#378) - The README has a troubleshooting entry for
mirror repository is read-only: a pull mirror is read-only by design, commits go to the source and arrive on the next sync. (#59)
Notes
Three migrations run on boot: 0015 (source columns on repositories), 0016 (Better Auth 1.7) and 0017 (API keys). Back up data/gitea-mirror.db before upgrading, as with every release.
Full Changelog: v3.29.1...v3.30.0