Gli sviluppatori del progetto OpenBSD hanno pubblicato il rilascio del sistema di controllo versione Got 0.80 (Game of Trees), il cui sviluppo si concentra principalmente sulla semplicità di utilizzo e implementazione. Per la memorizzazione dei dati versionati, Got utilizza un archivio compatibile con il formato del repository Git, permettendo di lavorare con il repository utilizzando gli strumenti di Got e Git. Ad esempio, con Git è possibile eseguire lavori non realizzati in Got. Il codice è distribuito con licenza ISC.
Il progetto ha come obiettivo principale il supporto dello sviluppo di OpenBSD tenendo conto delle specificità del progetto. Tra le altre cose, Got adotta le pratiche di sicurezza adottate in OpenBSD (come la separazione dei privilegi e l'uso delle chiamate pledge e unveil) e lo stile di scrittura del codice. Gli strumenti sono progettati per un processo di sviluppo con un repository centralizzato comune e rami locali per gli sviluppatori, accesso esterno tramite SSH e revisione delle modifiche via email.
Per la gestione delle versioni, è disponibile l'utilità got con un set di comandi familiare. Per semplificare l'uso, l'utilità supporta solo il set minimo necessario di comandi e opzioni, sufficiente per eseguire le operazioni di base senza complicazioni superflue. Per operazioni più avanzate si consiglia di utilizzare il classico git. Le operazioni di gestione del repository sono spostate in un'utilità separata, gotadmin, che svolge compiti come l'inizializzazione del repository, l'imballaggio degli indici e la pulizia dei dati. Per la navigazione dei dati nel repository, è disponibile l'interfaccia web gotwebd e l'utilità tog per visualizzare interattivamente il contenuto del repository dalla riga di comando.
Tra le modifiche aggiunte:
- Nel processo server gotd, che fornisce accesso di rete al repository, è stata implementata la possibilità di aggiungere regole per l'autorizzazione delle operazioni di scrittura e lettura associate a singoli repository.
- In gotd sono stati aggiunti nuovi processi "listen" e "session" per monitorare le richieste al socket unix e gestire le sessioni. Le operazioni di autenticazione sono state trasferite in un processo figlio separato.
- L'isolamento del processo in background gotd è stato spostato da chroot all'uso della chiamata di sistema unveil. È stata rimossa la limitazione che consentiva l'accesso a gotd solo agli utenti del gruppo gotsh.
- In gotd è stata implementata una limitazione del numero di connessioni in base all'uid.
- In gotd.conf sono state aggiunte impostazioni per gestire le connessioni, e il parametro 'unix_socket' è stato sostituito da 'listen on'.
- L'accesso alle informazioni visualizzate all'avvio di 'gotctl info' è ora consentito solo all'utente root.
- Lo sviluppo del wrapper CGI attorno a got — gotweb — è stato interrotto, mentre per l'interfaccia web si dovrebbe utilizzare l'implementazione FastCGI gotwebd, le cui funzionalità sono state significativamente ampliate. Ad esempio, in gotwebd è stato aggiunto un motore di template per semplificare la modifica dell'aspetto delle pagine, è stato aggiunto un feed RSS per monitorare i tag, e sono stati migliorati la visualizzazione dei blob e delle liste dei commit.
- Nei comandi got log, got diff e tog diff è stata implementata la supporto per l'output nel formato diffstat.
- Il consumo di memoria è stato ridotto limitando il numero di tag memorizzati nella cache degli oggetti.
- In got patch è stata implementata la rimozione di file binari.
Fonte: opennet.ru
