Die Entwickler des OpenBSD-Projekts haben die Version 0.80 des Versionskontrollsystems Got (Game of Trees) veröffentlicht, bei deren Entwicklung der Schwerpunkt auf der Einfachheit der Bedienung lag. Got verwendet ein Speicherformat, das mit dem Festplattensystem der Git-Repositories kompatibel ist, was die Arbeit mit dem Repository sowohl über die Werkzeuge von Got als auch von Git ermöglicht. So können beispielsweise mit Git Arbeiten durchgeführt werden, die in Got noch nicht implementiert sind. Der Code wird unter der ISC-Lizenz veröffentlicht.
Das Projekt verfolgt das primäre Ziel, die Entwicklung von OpenBSD unter Berücksichtigung der spezifischen Anforderungen des Projekts zu unterstützen. Unter anderem werden in Got die in OpenBSD etablierten Sicherheitspraktiken (z. B. Trennung von Rechten und Verwendung der Funktionen pledge und unveil) sowie der Code-Stil angewendet. Das Werkzeug ist auf einen Entwicklungsprozess mit einem gemeinsamen zentralisierten Repository und lokalen Zweigen für Entwickler ausgelegt, mit externem Zugriff über SSH und Überprüfung von Änderungen per E-Mail.
Für die Versionskontrolle steht das Tool got mit einem gewohnten Befehlssatz zur Verfügung. Um die Arbeit zu erleichtern, unterstützt das Tool nur den minimal notwendigen Satz von Befehlen und Optionen, die ausreichen, um grundlegende Operationen ohne unnötige Komplexität auszuführen. Für erweiterte Operationen wird empfohlen, das übliche git zu verwenden. Die Verwaltung des Repositories wird in ein separates Tool namens gotadmin ausgelagert, das Aufgaben wie die Initialisierung des Repositories, das Verpacken von Indizes und das Bereinigen von Daten übernimmt. Für die Navigation durch die Daten im Repository steht die Web-Schnittstelle gotwebd sowie das Tool tog zur interaktiven Anzeige des Inhalts des Repositories über die Kommandozeile zur Verfügung.
Unter den hinzugefügten Änderungen:
- Im Serverprozess gotd, der den Netzwerkzugang zum Repository ermöglicht, wurde die Möglichkeit zur Hinzufügung von Regeln zur Autorisierung von Lese- und Schreiboperationen in Bezug auf einzelne Repositories implementiert.
- Im gotd wurden neue Prozesse „listen“ und „session“ hinzugefügt, um Anfragen an den Unix-Socket zu verfolgen und Sitzungen zu verwalten. Auch die Authentifizierungsoperationen wurden in einen separaten untergeordneten Prozess ausgelagert.
- Die Isolierung des Hintergrundprozesses gotd wurde von chroot auf den Systemaufruf unveil umgestellt. Die Einschränkung, dass nur Benutzer der Gruppe gotsh sich mit gotd verbinden können, wurde aufgehoben.
- In gotd wurde eine Begrenzung der Anzahl der Verbindungen in Abhängigkeit von uid implementiert.
- In gotd.conf wurden Einstellungen zur Verwaltung von Verbindungen hinzugefügt, und der Parameter unix_socket wurde durch listen on ersetzt.
- Zugriff auf die Informationen, die beim Start von gotctl info angezeigt werden, wird jetzt nur dem Benutzer root gewährt.
- Die Entwicklung der CGI-Bindung über got - gotweb - wurde eingestellt. An seiner Stelle sollte für die Web-Oberfläche die FastCGI-Implementierung gotwebd verwendet werden, deren Möglichkeiten erheblich erweitert wurden. Zum Beispiel wurde in gotwebd ein Template-System hinzugefügt, um die Gestaltung der Seiten zu erleichtern, ein RSS-Feed zur Verfolgung von Tags integriert, sowie die Anzeige von Blobs und Commit-Listen verbessert.
- Die Befehle got log, got diff und tog diff unterstützen nun die Ausgabe im diffstat-Format.
- Der Speicherverbrauch wurde durch die Begrenzung der Anzahl der im Objektespeicher gehaltenen Tags reduziert.
- In got patch wurde die Entfernung von Binärdateien implementiert.
Quelle: opennet.ru
