Originally created by: athanclark
Part of [#538]. Adds Forgejo and Gitea, and commits, branches and forks, and changes the importer to one repository per timeline with --only/--except. This is stacked on [#544], and needs [#545] (128-character tags) to merge first. GitLab follows in its own PR.
A repository is now a reference: owner/name on github.com, and <platform>:<host>/<path> elsewhere.
| Repository | Item | Person | |
|---|---|---|---|
| github.com | github/acme/app |
github/acme/app#412 |
github/mona |
| Forgejo / Gitea | forgejo:codeberg.org/acme/app |
forgejo:codeberg.org/acme/app#5 |
forgejo:codeberg.org/mona |
| GitHub Enterprise | github:ghe.example.com/acme/app |
…#5 |
|
| GitLab (next PR) | gitlab/group/sub/app, or gitlab:<host>/… self-hosted |
…#12 for issues, …!7 for merge requests |
fj:codeberg.org:acme:app:5).* for everything under an owner or group.#12, then owner/name#12, then the whole reference across hosts.server/forgejo-source.mjs translates Forgejo's timelines and webhook deliveries into GitHub's shapes, so all the mapping is shared.
FORGEJO_WEBHOOK_SECRET is checked against the bare hex HMAC.token auth (FORGEJO_TOKEN) and limit paging.Checked against git.araliasoftware.com (Forgejo 16, read-only): a dry run of athan/openchronology-publicity read items, merges, renames, mentions and links in 6 requests.
Commits are moments on their repository, at the time they were authored, titled with the message's first line.
commit, the branch as named (feat/new_feature), and the author's account.Which branch a commit is tagged with:
Branches are moments when created or deleted (live), or when they began, at their first commit of their own (imported). Forks are moments too.
Items, commits, branches and forks are now kinds like the events.
--only commits or --except forks,branches, replacing --events and --no-events."only" and "except", the same way.--only commits reads no items at all.--repo and --timeline are each given once, and a second --repo is refused.npm test passes apart from contents.test.mjs, which fails locally with git ENOBUFS.🤖 Generated with Claude Code