The developers of the OpenBSD project have released version 0.80 of the version control system Got (Game of Trees), which emphasizes simplicity in design and use. Got uses storage compatible with the disk format of Git repositories for versioned data, allowing work with the repository using tools from Got and Git. For instance, tasks not implemented in Got can be performed using Git. The code is distributed under the ISC open license.
The project's primary goal is to support the development of OpenBSD while considering the specifics of the project. Among other things, Got applies the security rules adopted in OpenBSD (such as privilege separation and the use of the pledge and unveil calls) and coding style. The toolkit is designed for a development process with a centralized repository and local branches for developers, external access via SSH, and changes reviewed via email.
For version control, the utility got is offered with a familiar set of commands. To simplify operations, the utility supports only the minimally necessary set of commands and options, sufficient for performing basic operations without unnecessary complications. For advanced operations, it is recommended to use standard git. Repository management operations are handled by a separate utility called gotadmin, which performs tasks such as initializing the repository, packing indexes, and cleaning up data. For navigating data within the repository, a web interface called gotwebd and the tog utility for interactive browsing of repository content from the command line are available.
Among the added changes:
- In the server process gotd, which provides network access to the repository, the ability to add rules for authorizing read and write operations tied to individual repositories has been implemented.
- New processes 'listen' and 'session' have been added to gotd for tracking calls to the Unix socket and handling sessions. Authentication operations have also been moved to a separate child process.
- The isolation of the background process gotd has been changed from chroot to using the unveil system call. The restriction on connecting to gotd for users only from the gotsh group has been removed.
- In gotd, a connection limit has been implemented based on uid.
- Configuration settings for managing connections have been added to gotd.conf, and the parameter unix_socket has been replaced with listen on.
- Access to information displayed when running gotctl info is now restricted to the root user only.
- Development of the CGI wrapper over got — gotweb — has been discontinued, and instead, the FastCGI implementation gotwebd should be used for the web interface, which has significantly expanded capabilities. For example, a templating engine has been added to simplify page styling, an RSS feed for tracking tags has been introduced, and the display of blobs and commit lists has been improved.
- The commands got log, got diff, and tog diff now support output in the diffstat format.
- Memory consumption has been reduced by limiting the number of tags stored in the object cache.
- The got patch command now supports the removal of binary files.
Source: opennet.ru
