No way to bootstrap governance: add git-collab-server setup #87
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Governance shipped in
b6dcbb7band the exposure model in1beeb03e, and nothing can create asettings.git. Proven by the live deployment: it runs the code and hosts five repositories, and/data/repos/has no settings repo, so governance is present and entirely inert.Follow gitolite:
gitolite setuptakes an admin pubkey and createsgitolite-admin. We stole the rest of that design; this is the missing piece.It must be an explicit command, never automatic on startup. The exposure model makes unlisted-and-unreadable the default where governance is in force, and creating
settings.gitis exactly what puts it in force. A server that seeded one on boot would, at the moment it upgraded, make every repository invisible until someone wrote rules — rule 3's protection undone by the feature meant to make governance usable.The seed should reproduce the current effective policy, so enabling governance is behaviourally a no-op. That is what makes it safe to run on a live server, and it is the difference between a bootstrap and a switch nobody dares flip:
keydir/seeded from the admin key given, and named for the identity it belongs to.conf/access.confgranting that principalRW+onsettings, so the operator can push changes immediately — otherwise setup locks them out of the thing it just created.server.tomlgrants it today, includingR = @anonymousandoption listed = yeswhere the repo is currently public. Discovery already enumerates them; read each one's current policy and write the equivalent rule.1beeb03er2 refuses that pair, and the seed must not create by hand the state that guard exists to prevent.Requirements worth pinning:
settings.gitalready exists, rather than overwriting an operator's rules.--dry-runprinting theaccess.confit would write. An operator should read the policy before it governs their server.authorized_keys; leave the pre-governance path working until the operator is satisfied.Found while asking where
settings.gitwas on the live server, and finding the answer is nowhere and there is no way to make one.Migrated from git-collab issue
3733cccdb2d779b3bc36aa7b4da9a426f71bfe9d.Original author: a73x dev@a73x.sh.
Close reason: merged in patch
0065cd95