Follow OpenBSD's security practices
and coding style.
- Use a development process based on code review in email.
- Consistently use
unveil(2) across the code base.
- Use privilege-separation when parsing repository data from network or disk.
Keep the entire code base BSD-licenced.
Remain on-disk compatible with bare
- Don't insist on Git-compatibility beyond this requirement.
- Provide a complete version control tool suite for OpenBSD.
- Intuitive command line interface for required version control operations
- Interactive repository browser for history analysis and review of
committed changes (tog).
- CGI repository browser for web servers (gotweb).
- Repository administration tooling with a strong focus on backup and recovery (gotadmin).
- Repository server for hosting a central repository and synchronizing
changes to a cascade of public and private mirrors.
Consider workflow requirements of OpenBSD developers.
- Strong built-in support for a centralized repository model
(ideas about pull/push).
- Keep things easy for developers who don't need branches.
- Support local branches for developers who need them.
- Support "-stable" release branches.
- Support features required by the OpenBSD project's build infrastructure.
- Implement authenticated and encrypted network communications.
- Provide SSH and optional
TLS support for cloning repositories
and pulling changes.
- Exclusively rely on SSH for pushing changes.
- Do not implement server-side support for plaintext network communications.