This repo's own hosting, issue tracking, and pull requests move from Gitea to OneDev (ADR-0029), keeping the Gitea repo as a read-only archive rather than deleting it. plugins/gitea is unaffected — it continues to ship as a marketplace product regardless of what this repo hosts itself on. Records the full execution plan (prerequisites, mirror/issue/PR/release phases, verification checklist) and updates CONTEXT.md's Issue entry and AGENTS.md's source-of-truth line to name OneDev instead of Gitea. ADR: 0029 Refs: ADR-0007 Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GGCPJBXPLJP5FprL4C8nu3
44 lines
3.0 KiB
Markdown
44 lines
3.0 KiB
Markdown
# OneDev supersedes Gitea as this repo's canonical forge
|
|
|
|
**Supersedes:** ADR-0007 (Gitea as the exclusive issue tracker)
|
|
|
|
This repo's own hosting, issue tracking, and pull requests move from Gitea (`git.dev.rkdr.net`) to
|
|
OneDev (`onedev.dev.rkdr.net/Holocron`). Gitea is frozen and kept reachable read-only as a historical
|
|
archive rather than deleted, so commit messages, branch names, and ADRs that cite Gitea issue/PR
|
|
numbers (e.g. `#124`, `#140`) stay resolvable. `plugins/gitea/` is unaffected — it continues to ship
|
|
as a marketplace product for consumers with Gitea repos of their own; this decision is about what
|
|
*this* repo uses on itself, not what this repo authors and distributes.
|
|
|
|
## Considered and rejected
|
|
|
|
- **Preserving Gitea's issue/PR numbers in OneDev.** Rejected: OneDev issues and pull requests use
|
|
independent per-type counters, unlike Gitea's single shared sequence — there is no API path to
|
|
reproduce both simultaneously without a fragile create/delete padding hack. Migrated issues carry a
|
|
back-link to their original Gitea URL instead; new work uses OneDev's own numbers from the cutover
|
|
point forward.
|
|
- **Recreating historical PR objects (title/description/reviews) in OneDev.** Rejected for the
|
|
existing ~140 closed/merged PRs: `tod pr create` requires a live source branch, and Gitea already
|
|
deletes head branches on merge, so recreating them means resurrecting deleted branches from
|
|
merge-commit parent SHAs, opening throwaway PRs, and discarding them without merging (to avoid a
|
|
second, divergent merge commit alongside the mirrored git history). The git mirror already carries
|
|
every commit, message, author, and merge losslessly; the archived Gitea instance still holds the
|
|
original PR/review UI for anyone who needs it. Any PRs genuinely open and in flight at cutover time
|
|
are migrated for real, not archived.
|
|
- **Recreating Gitea's `Reviewed/*`, `Status/*`, and `Compat/Breaking` labels as new OneDev labels.**
|
|
Rejected in favor of OneDev's own out-of-the-box shape: structured `Type`/`Priority` fields (which
|
|
`Kind/*` and `Priority/*` map onto directly) plus the native three-state workflow (`Open` /
|
|
`In Progress` / `Closed`, no built-in disposition states). Disposition information that has no
|
|
native home becomes a one-line note in the migrated issue body instead of a second, parallel,
|
|
unstructured label taxonomy next to the real fields.
|
|
|
|
## Consequences
|
|
|
|
- Gitea issue/PR numbers cited in existing commit messages and docs remain valid only as long as the
|
|
archived Gitea instance stays reachable; they are not remapped to OneDev numbers anywhere.
|
|
- The six first-party `apm.yml` plugin dependencies (`git`, `gitea`, `kyberforge`, `lint`, `core`,
|
|
`bin`), previously resolved unpinned against `git@git.dev.rkdr.net:Defame1297/holocron.git`, are
|
|
repointed to the OneDev remote as part of this migration — apm's own dependency resolution must
|
|
track the now-canonical remote, not a frozen archive.
|
|
- `AGENTS.md`'s "this repo and Gitea are the only source of truth" language is updated to name
|
|
OneDev.
|