vole
Clone
Read only, no credentials:
https://rodent.software/git/vole.git
Write over SSH with a registered key:
git clone ssh://git@0.0.0.0:2222/vole.git
A free and open-source forge that lives in your Git repo.
Index state changes for the activity feed
4d938fe894d56ff29b87fa0f2ebec50a744f2993 · Keenan Nemetz · 9d ago · parent e2a58f3a
Index state changes for the activity feed The activity feed found closed, reopened and merged events by reading the last 200 metadata commit subjects on every render: one git process per repository, so the instance home with N repositories ran N of them. It was the last derived read still going to git. - A `state_changes` table is fed by the same refresh: a delta reads the commits in its range, a rebuild reads the whole metadata branch. Rows are keyed by the commit, so a retried or overlapping refresh cannot duplicate an event, and an ordinal keeps two changes in one second in branch order (commit times are seconds; a close and a reopen often share one). - `Store.StateChanges` returns the events newest first; the feed reads it and keeps the metadata log as the fallback for a server without an index or a failed read. - `git.Repo.Log` and `CommitsBetween` treat a limit of zero as no limit, which the rebuild needs, and `metadata.ParseStateSubject` is exported so the index derives the events without a second copy of the format. The activity page now starts no metadata log; the instance home and the instance activity page lose one process per visible repository. On the load harness with three repositories: activity 496 req/s (p50 7 ms), instance activity 230 req/s (p50 17 ms), home 202 req/s (p50 20 ms). Schema version 7 rebuilds each repository on its first read after upgrade.
docs/architecture.md +1−1
| @@ -61,7 +61,7 @@ auditable. | |||
| 61 | 61 | | Issues, requests, approvals, release pointers | The `vole` branch in each repository | It is the source | | |
| 62 | 62 | | CI records: finished attempts, steps, artifact pointers, and who reported them | `data/runs.db` | It is the source; back it up | | |
| 63 | 63 | | Accounts, instance roles, SSH keys, passkeys, enrollment links, sessions, access rules, locks, page-view counters | `data/users.db` | No; back it up | | |
| 64 | | Web/search index: issues, change requests, comments, release artifacts, and the `#42` alias numbering | `data/index.db` | Yes, with `vole admin index rebuild` | | ||
| 64 | | Web/search index: issues, change requests, comments, state changes, release artifacts, and the `#42` alias numbering | `data/index.db` | Yes, with `vole admin index rebuild` | | ||
| 65 | 65 | | CI queue, in-progress runs, contributor CI approvals | `data/runs.db` | Partly; in-progress work and approvals are lost | | |
| 66 | 66 | | CI logs | `data/logs/` | No; one file per attempt, back it up | | |
| 67 | 67 | | LFS files, build artifacts | `data/lfs/` | No; stored by content | | |