[ precedente ] [ Contenuti ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 10 ] [ 11 ] [ 12 ] [ 13 ] [ 14 ] [ 15 ] [ A ] [ successivo ]
Leggete /usr/share/doc/cvs/html-cvsclient,
/usr/share/doc/cvs/html-info, /usr/share/doc/cvsbook
con lynx, od eseguite un info cvs e man
cvs per informazioni dettagliate.
Le impostazioni seguenti permettono il commit solo da parte di un membro del gruppo "src", e l'amministrazione del cvs solo da parte di un membro del gruppo "staff", riducendo così le possibilità di mettersi nei guai.
# cd /var/lib; umask 002 ; mkdir cvs # [Woody] FSH
# apt-get install cvs cvs-doc cvsbook
# export CVSROOT=/var/lib/cvs
# cd $CVSROOT
# chown root:src . # mettete "staff" per aumentare le restrizioni. # in caso di progetti allo stato iniziale.
# chmod 3775 . # Se si usa "staff", utilizzate 2775
# cvs -d /var/lib/cvs init # è più sicuro specificare l'opzione -d in maniera esplicita!
# cd CVSROOT
# chown -R root:staff .
# chmod 2775 .
# touch val-tags
# chmod 664 history val-tags
# chown root:src history val-tags
Quanto segue imposta l'ambiente di shell per l'accesso al deposito CVS.
Accesso remoto in sola lettura
$ export CVSROOT=:pserver:anonymous@cvs.sf.net:/cvsroot/qref
$ cvs login
$ cvs -z3 co qref
Accesso locale da una shell sulla stessa macchina:
$ export CVSROOT=/var/lib/cvs
Accesso remoto senza SSH (usate le capacità del protocollo RSH in
cvs)
$ export CVSROOT=:pserver:account@cvs.foobar.com:/var/lib/cvs
$ cvs login
E' vulnerabile ad attacchi tipo eavesdropping.
sshAccesso remoto con SSH:
$ export CVSROOT=:ext:account@cvs.foobar.com:/var/lib/cvs
oppure, per SourceForge:
$ export CVSROOT=:ext:account@cvs.sf.net:/cvsroot/qref
Potete anche utilizzare l'autenticazione RSA (Connettersi con meno passwords – RSA, Sezione 9.5.3), che elimina la necessità della richiesta di password.
Per,
OGGETTO VALORE SIGNIFICATO
albero sorgente ~/progetto-x Tutti i codici sorgente
Nome progetto progetto-x Nome per questo progetto
Vendor Tag: Main-branch Tag per la branca intera
Release Tag: Versione-iniziale Tag per una versione specifica
Quindi,
$ cd ~/progetto-x # entra nella directory sorgente
... crea un albero sorgente ...
$ cvs import -m "Start progetto-x" progetto-x Main-branch Versione-iniziale
$ cd ..; rm -R ~/progetto-x
Per richiamare e lavorare con le versioni locali del progetto-x con l'archivio CVS:
$ cd # muove all'area di lavoro.
$ cvs co progetto-x # copia i sorgenti CVS all'archivio locale
$ cd progetto-x
... esegui cambiamenti al contenuto ...
$ cvs diff -u # simile a diff -u repository/ local/
$ cvs up -C file_modificato # elimina le modifiche ad un file
$ cvs ci -m Descrivi i cambiamenti # salva i sorgenti locali nel CVS
$ vi nuovofile_aggiunto
$ cvs add nuovofile_aggiunto
$ cvs ci -m Aggiunto nuovofile_aggiunto
$ cvs up # fonde l'ultima versione da CVS
... per creare tutte le sottodirectory appena create da CVS, usate
.... "cvs up -d -P", invece
... cercate le righe che iniziano per "C nomefile"
... il codice immodificato viene spostato a `.#nomefile.version'.
... Cerca "<<<<<<<" e ">>>>>>>" in nomefile.
$ cvs tag Release-1 # aggiunge la tag di versione
... esegui ulteriori modifiche ...
$ cvs tag -d Release-1 # rimuove la tag di versione
$ cvs ci -m altri commenti
$ cvs tag Release-1 # ri-aggiunge la tag di versione
$ cd # ritorna all'area di lavoro.
$ cvs co -r Release-initial -d old progetto-x
... riporta la versione originale alla directory old
$ cd old
$ cvs tag -b Release-initial-bugfixes # crea la tag di branca (-b)
... Ora si può lavorare sulla vecchia versione (Tag=sticky)
$ cvs update -d -P # non crea directory vuote
... L'albero sorgente ha ora una tag fissa "Release-initial-bugfixes"
... Lavorate su questa branca
$ cvs up -d -P # si sincronizza con i file modificati da altri su questa branca
$ cvs ci -m "controllate questa branca"
$ cvs update -kk -A -d -P
... Rimuovete la tag fissa e dimenticate il contenuto
... Aggiornate la linea principale senza espansione per parola chiave
$ cvs update -kk -d -P -j Release-initial-bugfixes
... Fonde la branca Release-initial-bugfixes nella linea
... principale senza espansione per parola chiave. Risolvete i conflitti con l'editor.
$ cvs ci -m fusa Release-initial-bugfixes
$ cd
$ tar -cvzf old-progetto-x.tar.gz old # produce un archivio, -j per bz2
$ cvs release -d old # rimuove i sorgenti locali (opzionale)
Alcune opzioni utili da ricordare (da usare come primi argomenti per
cvs):
-n esecuzione secca, nessun effetto
-t mostra messaggi sui passi dell'attività di cvs
Per ottenere l'ultimissima versione da CVS, usate "tomorrow":
$ cvs ex -D tomorrow nome_modulo
Aggiungere un alias ad un progetto(server locale):
$ su - admin # un membro del team
$ export CVSROOT=/var/lib/cvs
$ cvs co CVSROOT/modules
$ cd CVSROOT
$ echo "px -a progetto-x" >>modules
$ cvs ci -m Ora px è un alias per progetto-x
$ cvs release -d .
$ exit # o Ctrl-D per uscire da su
$ cvs co -d progetto px
... check out progetto-x (alias:px) da CVS alla directory del progetto
$ cd project
... modifica il contenuto ...
CVS non sovrascriverà il file corrente, ma lo rimpiazzerà con un altro. Quindi, il permesso di scrittura nella directory deposito è critico. Ogni volta che si crea un nuovo deposito, è bene lanciare i seguenti comandi per assicurarsi che detta condizione venga soddisfatta se necessario.
# cd /var/lib/cvs
# chown -R root:src deposito
# chmod -R ug+rwX deposito
# chmod 2775 deposito
# se necessario, anche per le sottodirectory
Il bit d'esecuzione di un file viene mantenuto alla chiusura della sessione (check-out). Tutte le volte che appaiono problemi di permessi di esecuzione dei file, cambiate i permessi nel deposito CVS con il comando seguente.
# chmod ugo-x filename
Ecco i comandi CVS con le abbreviazioni corrispondenti.
{add|ad|new} [-k kflag] [-m 'message'] files...
{admin|adm|rcs} [rcs-options] files...
{annotate|ann} [options] [files...]
{checkout|co|get} [options] modules...
{commit|ci|com} [-lnR] [-m 'log_message' | -f file] \
[-r revision] [files...]
{diff|di|dif} [-kl] [rcsdiff_options] [[-r rev1 | -D date1] \
[-r rev2 | -D date2]] [files...]
{export|ex|exp} [-flNn] -r rev|-D date [-d dir] [-k kflag] module...
{history|hi|his} [-report] [-flags] [-options args] [files...]
{import|im|imp} [-options] repository vendortag releasetag...
{login|logon|lgn}
{log|lo|rlog} [-l] rlog-options [files...]
{rdiff|patch|pa} [-flags] [-V vn] [-r t|-D d [-r t2|-D d2]] modules...
{release|re|rel} [-d] directories...
{remove|rm|delete} [-lR] [files...]
{rtag|rt|rfreeze} [-falnR] [-b] [-d] [-r tag | -D date] \
sym_bolic_tag modules...
{status|st|stat} [-lR] [-v] [files...]
{tag|ta|freeze} [-lR] [-F] [-b] [-d] [-r tag | -D date] [-f] \
sym_bolic_tag [files...]
{update|up|upd} [-AdflPpR] [-d] [-r tag|-D date] files...
Subversion è un sistema di controllo versione di prossima generazione, che è inteso come rimpiazzo di CVS. Gli sviluppatori lo considerano al momento in stadio "alfa", ma è probabilmente sufficientemente stabile per gran parte degli usi. Al momento della scrittura di questa guida, Subversion è disponibile solo in Debian unstable.
Il metapacchetto subversion dipende dai pacchetti necessari per
impiantare un server (libapache2-svn e
subversion-tools).
Attualmente il pacchetto subversion non imposta un deposito, per
cui bisogna farlo manualmente. Una locazione possibile per un deposito è in
/var/local/repos.
Create la directory:
# mkdir -p /var/local/repos
Create il database del deposito:
# svnadmin create /var/local/repos
Rendete il deposito scrivibile dal server WWW:
# chown -R www-data:www-data /var/local/repos
Per permettere l'accesso al deposito tramite autenticazione degli utenti,
aggiungete quanto segue a
/etc/apache2/mods-available/dav_svn.conf:
<Location /repos>
DAV svn
SVNPath /var/local/repos
AuthType Basic
AuthName "Subversion repository"
AuthUserFile /etc/subversion/passwd
<LimitExcept GET PROPFIND OPTIONS REPORT>
Require valid-user
</LimitExcept>
</Location>
Poi create un file per l'autenticazione degli utenti con il comando:
htpasswd2 -c /etc/subversion/passwd username-di-qualcuno
Riavviate Apache2 ed il vostro nuovo deposito Subversion sarà accessibile all'URL http://hostname/repos.
Le sezioni seguenti vi insegnano l'utilizzo dei diversi comandi in subversion.
Per creare un nuovo archivio Subversion, digitate quanto segue:
$ cd ~/il-tuo-progetto # vai alla directory sorgente
$ svn import http://localhost/repos il-tuo-progetto \
nome-progetto -m "importazione iniziale progetto"
Ciò crea una directory denominata nome-progetto nel vostro deposito Subversion che contiene i file del progetto. Guardate in http://localhost/repos/ per vedere se è lì.
Lavorare con il progetto-y usando Subversion:
$ cd # muove all'area di lavoro
$ svn co http://localhost/repos/progetto-y # Copia (checkout) i sorgenti
$ cd progetto-y
... lavorateci ...
$ svn diff # simile a diff -u repository/ local/
$ svn revert file_modificato # cancella le modifiche di un file
$ svn ci -m "Descrivi le modifiche" # copia le vostre modifiche nel deposito
$ vi nuovofile_aggiunto
$ svn add nuovofile_aggiunto
$ svn add nuova_dir # aggiunge tutti i file ricorsivamente in nuova_dir
$ svn add -N nuova_dir2 # aggiunge la directory non ricorsivamente
$ svn ci -m "Aggiunto nuovofile_aggiunto, nuova_dir,nuova_dir2"
$ svn up # aggiorna l'ultima versione dal deposito
$ svn log # mostra tutte le modifiche effettuate
$ svn copy http://localhost/repos/progetto-y \
http://localhost/repos/progetto-y-branca \
-m "sto creando la mia branca del progetto-y"
# creazione di una branca del progetto-y
$ svn copy http://localhost/repos/progetto-y \
http://localhost/repos/prog-y_rilascio1.0 \
-m "progetto-y rilascio 1.0" # aggiunta tag di release
... notate che il processo di branching e di tagging sono la stessa cosa. L'unica differenza
... è che le branche subiscono il commit mentre le tag no.
... modificate la branca ...
$ # fa confluire la branca copiata nel tronco principale
$ svn merge http://localhost/repos/progetto-y \
http://localhost/repos/progetto-y-branca
$ svn co -r 4 http://localhost/repos/progetto-y # prende la revisione 4
[ precedente ] [ Contenuti ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 10 ] [ 11 ] [ 12 ] [ 13 ] [ 14 ] [ 15 ] [ A ] [ successivo ]
La guida Debian
CVS, gio gen 18 11:52:32 UTC 2007osamu#at#debian.orgmc0315#at#mclink.it