The developers of the OpenBSD project have published the release of Got 0.80 (Game of Trees) version control system, which focuses on ease of design and use. To store versioned data, Got uses storage that is compatible with the disk format of Git repositories, which allows you to work with the repository using the Got and Git toolkits. For example, with Git, you can do things not implemented in Got. The code is distributed under a free ISC license.
The main goal of the project is to support the development of OpenBSD with an eye to the specifics of the project. Among other things, Got uses OpenBSD’s security rules (such as separation of privileges and the use of pledge and unveil calls) and coding style. The toolkit is designed around the development process with a shared centralized repository and local branches for developers, external SSH access, and email review of changes.
For version control, the got utility is offered with the usual set of commands. To simplify the work, the utility supports only the minimum required set of commands and options, sufficient to perform basic operations without unnecessary complications. For advanced operations, it is suggested to use normal git. Repository management operations are moved to a separate gotadmin utility that performs tasks such as initializing the repository, packing indexes, and cleaning data. To navigate through the data in the repository, the gotwebd web interface and the tog utility are provided for interactive viewing of the contents of the repository from the command line.
Among the changes added:
In the gotd server process, which provides network access to the repository, it is possible to add rules for authorizing write and read operations in relation to individual repositories.
New “listen” and session” processes have been added to gotd to track unix socket calls and handle sessions. Authentication operations have also been moved to a separate child process.
Changed gotd background process isolation from chroot to using the unveil system call. Removed the restriction on connecting to gotd only users from the gotsh group.
Gotd implements a limit on the number of connections based on uid.
Added settings to gotd.conf to manage connections and changed the ‘unix_socket’ parameter to ‘listen on’.
Access to the information shown when running ‘gotctl info’ is now restricted to the root user.
The development of CGI wrapping over got – gotweb has been stopped, instead of which for the web interface, you should use the FastCGI implementation of gotwebd, the capabilities of which have been significantly expanded. For example, gotwebd has added a templating engine to make it easier to change page layouts, added an RSS feed to track tags, and improved display of blobs and commit lists.
The got log, got diff, and tog diff commands now support diffstat output.
Reduced memory consumption by limiting the number of tags stored in the object cache.
Got patch implements removal of binary files.