1.1 2010-04-26
Utilizzo del CVS Introduzione

Questa guida non vuole essere un manuale sull'utilizzo di CVS, per il quale è preferibile consultare la relativa pagina info oppure /doc/it/cvs-tutorial.xml. Invece essa si focalizza in modo specifico sull'uso di CVS e di Repoman nell'ebuild tree di Gentoo.

Configurazione

Tipicamente, nel proprio ~/.cvsrc dovranno esserci delle voci simili a queste:

cvs -q -z0
diff -u -B
checkout -P
update -d -P

Infine, ad alcuni utilizzatori di CVS piace usare la compressione (-z#). Si chiede agli sviluppatori che non hanno una connessione dialup di usare -z0 - con il contenuto del repository CVS Gentoo ed il carico di lavoro sullo stesso, si noterà un effettivo incremento della velocità senza compressione.

Recuperare i moduli CVS/SVN

Ci sono alcuni moduli utili nel repository di CVS di Gentoo. Gli ebuild sono contenuti nel modulo gentoo-x86. gentoo contiene i file XML per il sito web, la documentazione, le cartelle e le immagini degli sviluppatori, e altro ancora. gentoo-projects contiene diversi progetti e generalmente rimpiazza il modulo cvs gentoo-src. gentoo-src viene mantetenuto per ragioni storiche, per cui se lo si sta ancora utilizzando si prega di migrare ad un modulo differente.

# cvs -d username@cvs.gentoo.org:/var/cvsroot co gentoo-x86

Ogni volta, prima di lavorare nella struttura, è sempre una buona idea eseguire un'aggiornamento per controllare i cambiamenti e prevenire eventuali conflitti. È possibile aggiornare ogni singola sottocartella dell'albero nel caso non si voglia attendere l'aggiornamento completo, però ogni tanto è buona prassi aggiornare tutta la struttura:

# cd gentoo-x86
# cvs update

Inoltre Gentoo offre servizi subversion per tutti coloro che preferiscono SVN rispetto a CVS. Diversi progetti fondamentali come portage e baselayout adesso sono ospitati lì.

# svn co svn+ssh://username@cvs.gentoo.org/var/svnroot/portage
Aggiornare Portage

Se si vuole usare CVS come albero primario per Portage, aggiungere le seguenti linee al proprio /etc/make.conf, rimpiazzando you con il proprio nome utente:

SYNC="cvs://you@cvs.gentoo.org:/var/cvsroot"
CVSROOT=":ext:you@cvs.gentoo.org:/var/cvsroot"

Sia che CVS venga utilizzato come albero primario di Portage, sia che non venga utilizzato, è importante che cvs sia incluso nella variabile FEATURES in /etc/make.conf. Ciò assicura che Portage scarichi tutti i file elencati in SRC_URI all'interno dell'ebuild nel momento in cui si effettua un digest.

Siccome il checkout cvs non ha una cache dei metadati, il proprio portage potrebbe diventare veramente lento.

Nelle architetture supportate, bisogna anche avere sandbox nella propria variabile FEATURES per assicurarsi che gli ebuild non modifichino direttamente il filesystem root.

Aggiungere/Rimuovere pacchetti

Si presume di essere pronti per aggiungere un nuovo pacchetto, foo, in app-misc:

(Sostituire CVSROOT con il percorso del proprio CVS tree recuperato.)
# cd $CVSROOT/app-misc
(Aggiornare sempre prima di lavorare in una parte dell'albero CVS!)
# cvs update
# mkdir foo
(A questo punto si aggiunge al repository CVS la directory per il pacchetto foo.)
# cvs add foo
# cd foo
(È meglio mantenere gli ebuild in lavorazione esternamente all'albero CVS.)
# cp /path/to/foo-1.0.ebuild ./
(Assicurarsi che PORTDIR_OVERLAY sia impostato alla directory di CVS durante la creazione dei manifest.)
# repoman manifest
# ${EDITOR} metadata.xml
 Non è più necessario avere una directory files
# cvs add foo-1.0.ebuild ChangeLog files
[Non dimenticarsi di creare un ChangeLog - guardare la pagina man per echangelog.]
# echangelog "New ebuild for foo. Ebuild written by me. Fixes bug#XXXXXX."

Guardare la sezione Gentoo Metadata per maggiori informazioni su metadata.xml.

A questo punto, è possibile effettuare il commit (guardare la successiva sezione Commit). Ma volendo rimuovere foo-1.0 nel momento in cui è disponibile foo-1.1?

# cd $CVSROOT/app-misc/foo
# cvs update
# cvs remove -f foo-1.0.ebuild

Ora è possibile effettuare il commit (guardare la successiva sezione Commit).

Commit

Usare sempre repoman commit piuttosto che cvs commit. Repoman è un'utilità di controllo della qualità (QA) che esegue controlli di base e crea i file Manifest. Se una qualsiasi parte dell'output di repoman non è chiara, consultare man repoman. In più, se si è stanchi di digitare la propria password ripetutamente, keychain (http://www.gentoo.org/doc/it/keychain-guide.xml) può essere d'aiuto.

[Assicurarsi che non ci siano file appartenenti a root prima di avviare repoman!]
("scan" percorre la directory corrente per gli scopi di QA. "full" è più completo.)
# repoman scan
("commit" esegue uno scan, poi esegue il commit, intanto aggiorna anche il Manifest.
Assicurarsi di aggiungere un utile e dettagliato messaggio al ChangeLog di CVS...)
# repoman commit
Velocizzare CVS up

Se si riscontra un'evidente latenza verso il server cvs, è possibile usare la configurazione master slave di ssh, dove ci si connette all'altro server ssh una volta sola e si fa in modo che esso esegua i comandi successivi su tale connessione. In questo modo si risparmia l'overhead dovuto all'handshake incrementando in toto le operazioni di checkout/commit di quasi 3 volte. Basta aggiungere il pezzo di codice seguente alla propria configurazione

Host cvs.gentoo.org
ControlMaster auto
ControlPath ~/.ssh/master-%r@%h:%p
ControlPersist 3600
Informazioni varie Posizionare i file sui mirror

I distfile sono automaticamente prelevati dal sistema di Mirror di Gentoo. Bisogna solamente tenere sotto controllo i propri distfile per eventuali errori di scaricamento degli stessi. Leggere Distfiles Overview Guide per esaurienti istruzioni a riguardo.

Mail e Web

L'infrastruttura di Gentoo permette agli sviluppatori di gestire le proprie email. http://www.gentoo.org/proj/it/infrastructure/dev-email.xml contiene le istruzioni per la configurazione della propria email @gentoo.org.

Gli sviluppatori hanno accesso ad uno spazio web, http://dev.gentoo.org/~$PROPRIONOME. Per ulteriori dettagli leggere Configurazione dello spazio web su dev.gentoo.org.