Tutorial CVS Gentoo Linux
1.
Introducere
O privire de ansamblu
Acest ghid are două parţi. Prima vă arată cum să folosiţi sistemul
CVS în postura de non-programator, ex. cum să luaţi sursele din CVS şi
să le menţineţi actualizate. A doua parte, este o introducere în folosirea
sistemului CVS ca programator, aratându-vă cum să modificaţi, adăugaţi
sau să ştergeţi fişiere din CVS şi să întreprindeţi alte
activităţi specifice operaţiunilor de dezvoltare a unui program. Dacă
sunteţi un începător în CVS, se recomandă să începeţi cu prima
parte, iar după aceea să treceţi la a doua; dacă aveţi anumite
cunoştinţe de bază despre CVS dar este prima dată când doriţi să
folosiţi sistemul CVS ca un programator cu drepturi depline, ar trebui să
găsiţi informaţiile dorite în a doua parte, dar aţi putea să vă
uitaţi puţin peste prima parte, ca o introducere.
Ce este CVS şi ce face el?
CVS este un sistem client/server care permite programatorilor să stocheze
proiectul lor într-o locaţie centralizată, denumită repozitoriu. Folosind
utilitarele client cvs, programatorii pot efectua modificări asupra
conţinutului repozitoriului. În schimb, repozitoriul cvs urmăreşte
fiecare modificare a fişierelor, creând o istorie completă a evoluţiei
dezvoltării proiectului. Programatorii pot cere versiuni mai vechi ale unui
anumit fişier cod sursă, viziona un log al modificărilor, şi pot
efectua alte acţiuni dacă este nevoie.
Rolul sistemului CVS
Multe proiecte opensource deţin propriile servere CVS, care sunt folosite de
programatorii proiectului ca un repozitoriu care centralizează toată munca
lor. Programatorii adesea efectuează îmbunătăţiri surselor din
repozitoriul CVS zilnic; şi deseori, aceşti programatori sunt
răspândiţi în jurul lumii, totuşi CVS oferă mecanismul necesar pentru
a uni proiectul lor într-un tot centralizat şi coeziv. CVS crează
"adezivul organizaţional" care permite acestor programatori să
întreprindă îmbunătăţiri codului sursă fără a se încurca unul
pe celălalt, pierzând date importante sau omiţând modificările aduse de
fiecare asupra unui anumit cod sursă.
CVS -- Cele mai noi surse de la programatori
Când programatorii sunt gata, ei vor adăuga munca lor curenta din CVS
într-un fişier .tar.gz şi îl lansează sub postura de versiune nouă
oficială a pachetului aplicaţiei acestora. Totuşi, câteodată, cele mai
noi versiuni oficiale nu sunt destul de noi, dintr-o mulţime de cauze. În
prima parte a acestui ghid, vă voi arăta cum să folosiţi sistemul CVS
în acest scop -- să obţineţi cea mai nouă şi cea mai
îmbunătăţită versiune a surselor pe care doriţi să le folosiţi.
Instalarea CVS
Pentru a instala cvs, este necesar doar să tastaţi emerge cvs:
Cod 1.1: Instalarea CVS |
# emerge cvs
|
CVSROOT
Înainte să începem, există anumite lucruri fundamentale pe care trebuie
să le cunoaşteţi. Primul este acela că pentru a vă putea conecta la un
repozitoriu CVS, trebuie să cunoaşteţi o cale numită "CVSROOT". CVSROOT
este un şir de caractere, asemenea unui URL, care informează comanda cvs
asupra locaţiei repozitoriului la care doriţi să vă conectaţi. Doar
pentru a face lucrurile mai interesante, CVS are un număr de formate pentru
CVSROOT, depinzînd de faptul că repozitoriul este local sau nu şi ce
metodă veţi folosi pentru a vă conecta. Iată câteva exemple de CVSROOT,
împreună cu explicaţiile de rigoare...
Un CVSROOT local
Cod 1.2: Setare CVSROOT |
CVSROOT=/var/cvsroot
|
Acesta este un exemplu al unui căi locale CVSROOT; veţi folosi un CVSROOT
în modul acesta dacă doriţi să vă conectaţi la un repozitoriu local
care există în /var/cvsroot; sau poate aveţi un repozitoriu mount-at via
NFS la /var/cvsroot.
CVSROOT la distanţă pentru password server
Cod 1.3: Setarea CVSROOT cu autentificare |
CVSROOT=:pserver:cvs@foo.bar.com:/var/cvsroot
|
Aici avem un exemplu de CVSROOT pentru un repozitoriu la distanţă care se
află găzduit la foo.bar.com în directorul /var/cvsroot de pe acel server.
Partea ":pserver:" de la început semnalizează clientului dumneavoastră
conectarea folosind protocolul CVS password server, un protocol care este
integrat în CVS. De obicei, repozitoriile CVS publice folosesc acest protocol
pentru a permite accesul utilizatorilor anonimi.
rsh/ssh CVSROOT
Cod 1.4: RSH/SSH CVSROOT |
CVSROOT=drobbins@foo.bar.com:/data/cvs
|
Aici avem un exemplu de CVSROOT care foloseşte protocolul RSH sau SSH; în
acest exemplu, serverul CVS va încerca să acceseze repozitoriul de de
foo.bar.com folosind contul drobbins. Dacă variabila de sistem CVS_RSH este
setată cu valoarea "ssh", atunci clientul cvs va încerca să se conecteze
folosind ssh; în caz contrar rsh va fi folosit. Metoda de acces ssh este
populară în rândul celor care se preocupa de securitate; oricum, metodele
RSH sau SSH nu oferă o modalitate utilizatorilor anonimi de a obţine
sursele. Pentru a folosi aceasta metoda aveţi nevoie de un cont de login la
foo.bar.com
Încă câteva lucruri...
Pe lângă CVSROOT, mai trebuie să ştiţi numele modulului (colecţia de
surse) pe care doriţi să o verificaţi şi parola utilizatorului anonim
pentru a vă putea autentifica pe serverul CVS. Spre deosebire de accesul ftp
anonim, nu există nici un format "standard" pentru parolă, deci va trebui
să obţineţi parola de pe pagina web a proiectului, sau de la un programator
implicat în acest proiect. O dată ce aveţi aceste informaţii sunteţi gata
pentru a începe.
Lucrul cu CVS, partea 1
Aducerea surselor este un proces ce se desfăşoară în două etape. Prima
dată, ne autentificăm pe server. Apoi aducem sursele cu comanda
checkout. Urmează un exemplu de comenzi care pot fi folosite pentru a
verifica cele mai noi surse de Samba, un proiect popular de integrare
UNIX/Windows:
Cod 1.5: Setarea CVSROOT |
# export CVSROOT=:pserver:cvs@pserver.samba.org:/cvsroot
|
Această primă comandă iniţializează variabila CVSROOT. Dacă nu
setaţi această variabilă, următoarele două comenzi vor necesita să
adăugaţi -d :pserver:cvs@pserver.samba.org:/cvsroot după comanda
cvs. Exportând CVSROOT salvaţi din munca de a tasta.
Lucrul cu CVS, partea a 2-a
Aici sunt înşiruite comenzile necesare pentru a obţine o copie curentă a
surselor. Puteţi să treceţi peste această înşiruire de comenzi şi
să treceţi direct la explicarea lor, iar apoi să reveniţi:
Cod 1.6: Verificarea surselor |
# cvs login
(Logging in to cvs@pserver.samba.org)
CVS password:
# cvs -z5 co samba
U samba/COPYING
U samba/Manifest
U samba/README
U samba/Read-Manifest-Now
U samba/Roadmap
U samba/WHATSNEW.txt
|
Lucrul cu CVS -- explicaţia
Prima comandă cvs, vă autentifică pe server, iar a doua spune clientului
să verifice (check out - "co") modulul samba folosind un nivel de compresie
gzip 5 ("-z5") pentru a creşte transferul în cazul unei legături mai
slabe. Pentru fiecare fişier creat local, cvs afişează "U [cale]"
indicând faptul că ale fişier a fost copiat pe disc.
Finalizarea verificării
Odată comanda de verificare finalizată, veţi putea găsi un director
"samba" în directorul curent care conţine cele mai noi surse. De asemenea
veţi observa că toate directoarele au un director "CVS" în ele -- CVS
stochează informaţii în ele pe care le foloseşte doar el şi pot fi
ignorate. De aici înainte, nu trebuie să ne mai asigurăm că variabila
CVSROOT este setată şi nici nu trebuie să o mai specificăm în linia de
comandă pentru că este stocată în acele directoare "CVS". Nu uitaţi --
variabila CVSROOT trebui setată doar prima dată când vă autentificaţi.
Actualizarea surselor
Asta e -- surse proaspete! Acum că aveţi sursele, puteţi să le compilaţi
şi să instalaţi programul, să îl studiaţi, sau să faceţi orice cu
ele.
Oricând după aceea, poate doriţi ca directorul cu surse de pe discul
dumneavoastră să fie sincronizat cu versiunea curentă de CVS. Pentru
aceasta nu mai trebuie să vă autentificaţi din nou pe server;
informaţiile de autentificare sunt deasemenea stocate în directoarele "CVS".
Prima data schimbaţi calea către directorul principal în care se află
sursele (în cazul nostru "samba") şi tastaţi:
Cod 1.7: Actualizarea surselor |
# cvs update -dP
|
O privire asupra "cvs update", partea 1
Dacă există fişiere noi, cvs va afişa linii de tipul "U [cale]" pentru
fiecare fişier imediat după ce este actualizat. De asemenea, dacă aţi
compilat sursele va afişa o grămadă de linii "? [cale]" ; aceste sunt
fişiere obiect pe care cvs nu le găseşte în repozitoriul la distanţă.
O privire asupra "cvs update", partea 2
De asemenea, observaţi cele două opţiuni din linia de comandă pe care le
folosim pentru "cvs update". "-d" indică faptul că cvs va crea orice
director nou care a fost adăugat de curând în repozitoriu (acest
comportament nu este implicit), şi "-P" indică faptul că cvs va şterge
orice director gol din directorul local unde se află sursele. Folosirea "-P"
este o ideea bună pentru că cvs are tendinţa de a aduna o grămadă de
directoare goale (care au fost o dată folosite, dar acum sunt abandonate)
de-a lungul timpului.
Pentru a aduce cele mai noi surse, aceste cunoştinţe vă sunt suficiente.
Acum vom vedea cum să interacţionăm cu sistemul CVS în postura de
programator.
2.
CVS pentru programatori
Modificarea fişierelor
Ca programator, va trebui să modificaţi fişiere în CVS. Pentru acest
lucru, pur şi simplu efectuaţi modificările necesare în copia
dumneavoastră locală. Modificările codului sursă nu sunt adăugate
repozitoriului doar atunci când îi spuneţi explicit cvs-ului să comită
("commit") modificările dvs. Când aţi testat toate modificările şi
sunteţi gata să le adăugaţi la repozitoriu, urmaţi aceşti doi paşi.
Prima dată, actualizaţi sursele dumneavoastră tastând următoarea
comandă din directorul principal cu sursele:
Cod 2.1: Actualizarea surselor şi directoarelor |
# cvs update -dP
|
CVS concatenează modificările altora
După cum am văzut mai devreme, "cvs update" va actualiza sursele cu
versiunile curente din repozitoriu -- dar ce se întâmplă cu modificările
pe care le-aţi făcut? Nu vă îngrijoraţi, ele nu sunt şterse. Dacă un
alt programator efectuează modificări unui fişier de care dumneavoastră
nu v-aţi atins, fişierele dumneavoastră locale vor fi actualizate în
aşa fel încât să fie sincronizate cu versiunile din repozitoriu.
Iar dacă aţi modificat liniile 1-10 dintr-un fişier local, iar un alt
programator a şters liniile 40-50, a adăugat 12 linii noi la sfârşitul
fişierului, a modificat liniile 30-40 iar apoi a adăugat modificările la
repozitoriu înaintea dumneavoastră, cvs va concatena inteligent
modificările din sursele dumneavoastră locale în aşa fel încât să nu
se piardă modificările efectuate local de către dvs. Acest lucru permite
a doi sau mai mulţi programatori să lucreze în acelaşi timp pe acelaşi
fişier.
Concatenarea nu este perfectă
Totuşi, dacă doi sau mai mulţi programatori au făcut modificări pe
aceeaşi regiune a aceluiaşi fişier, atunci lucrurile se
complică. Dacă aşa ceva are loc, cvs vă va anunţă că a avut loc un
conflict. Nici o modificare nu se va pierde, dar veţi fi nevoit să
interveniţi şi să modificaţi manual sursele, deoarece acum cvs
aşteaptă răspunsurile dumneavoastră cum privire la modul în care se
vor efectua concatenările.
Comiterea
Ne vom ocupa de modul în care conflictele pot fi soluţionate, dar pentru
moment să presupunem că nu există conflicte după ce aţi tastat "cvs
update -dP" -- de obicei nu există. Fără conflicte, sursele locale sunt
actualizate iar acum puteţi să adăugaţi modificările dumneavoastră
în repozitoriu, tastând următoarea comandă în directorul principal al
modulului:
Cod 2.2: Comiterea modificărilor |
# cvs commit
|
Ce face commit
"cvs commit" nu doar adaugă modificările dumneavoastră
repozitoriului. Înainte să adauge modificările, cvs va porni editorul
dumneavoastră preferat pentru a putea adăuga o descriere a modificărilor
pe care le-aţi întreprins. După ce aţi introdus un comentariu, aţi salvat
fişierul şi aţi ieşit din editor, modificările (şi comentariile) vor
fi adăugate repozitoriului şi vor fi disponibile celorlalţi programatori
din echipa dumneavoastră.
Vizualizarea fişierelor log
Este chiar uşor să vizualizaţi o istorie completă a modificărilor unui
anumit fişier, împreună cu orice comentariu pe care programatorii
(inclusiv dumneavoastră) le-aţi făcut atunci când le-aţi adăugat.
Pentru a vedea aceste informaţii tastaţi:
Cod 2.3: Vizualizarea informaţiilor din fişierele log |
# cvs log myfile.c
|
Comanda "cvs log" este recursivă, de aceea, dacă doriţi să vizualizaţi
informaţiile complete pentru un director, doar intraţi în acel director şi
tastaţi;
Cod 2.4: Vizualizarea informaţiilor din fişierelor log cu ajutorul unui paginator |
# cvs log | less
|
Opţiuni pentru commit
Poate doriţi să folosiţi alt editor de cel pe care cvs îl porneşte
implicit atunci când tastaţi "cvs commit". În acest caz, setaţi variabila
EDITOR cu numele editorului preferat. Adăugarea unei asemenea setări în
fişierul ~/.bashrc ar fi o idee bună:
Cod 2.5: Definirea editorului preferat |
export EDITOR=jpico
|
De asemenea, puteţi specifica un mesaj ca opţiune în linia de comandă. în
acest fel cvs nu va mai porni editorul:
Cod 2.6: Adăugaţi modificările cu un mic mesaj de informare |
# cvs commit -m 'Am reparat câteva probleme stupide în portage.py'
|
Fişierul .cvsrc
Înainte să continuăm să descoperim şi mai multe comenzi cvs, recomand
definirea unui fişier ~/.cvsrc. Prin crearea fişierului
~/.cvsrc în directorul, puteţi specifica anumite opţiuni
implicite pentru a nu le introduce de fiecare dată. Iată un fişier
~/.cvsrc cu o configurare recomandată:
Cod 2.7: Recomandări pentru definirea opţiunilor implicite |
cvs -q
diff -u -b -B
checkout -P
update -d -P
|
Fişierul .cvsrc, continuare
Pe lângă a defini opţiuni folositoare pentru tot felul de comenzi cvs.
Prima linie din fişierul ~/.cvsrc pune cvs într-un mod "tacut",
avantajul acestei opţiuni fiind creşterea consistenţei mesajelor afişate
de cvs update. De asemenea, odată ce aţi definit acest fişier,
puteţi tasta cvs update în loc de cvs update -dP.
Adăugarea unui fişier repozitoriului
Este foarte uşor să adăugaţi un fişier la CVS. Prima dată, creaţi
fişierul cu ajutorul editorului preferat. Apoi tastaţi următoarele:
Cod 2.8: Adăugarea unu fişier |
# cvs add myfile.c
cvs server: use 'cvs commit' to add this file permanently
|
Prin această specificaţi ca fişierul să fie adăugat repozitoriului
următoarea dată când tastaţi comanda cvs commit. Până atunci
alţi programatori nu vor putea vedea fişierul.
Adăugarea unui director repozitoriului
Procesul de adăugare unui director repozitoriului este similar:
Cod 2.9: Adăugare unui director |
# mkdir foo
# cvs add foo
Directory /var/cvsroot/mycode/foo added to the repository
|
Spre deosebire de adăugarea unui fişier, atunci când adăugaţi un
director el apare în repozitoriu imediat; nu este necesar un cvs
commit. Odată cu adăugarea unui director local în cvs, veţi observa
că un director "CVS" va fi creat în interiorul acestuia pentru a memora în
el datele referitoare la istoria directorului. Deci, puteţi spune cu
uşurinţă dacă un director a fost adăugat la cvs prin faptul că el
conţine un director "CVS"
Note pentru "cvs add"
Ah, şi după cum cred că aţi ghicit, înainte de a adăuga un fişier
sau un director repoztoriului, trebuie să vă asiguraţi că directorul
părinte a fost deja adăugat la CVS. Altfel, veţi primi o eroare care
arată în felul următor:
Cod 2.10: Adăugarea unui fişier, dar cu producerea unei erori |
# cvs add myfile.c
cvs add: cannot open CVS/Entries for reading: No such file or directory
cvs [add aborted]: no repository
|
Să ne familiarizăm cu "cvs update", partea 1
Înainte să vedem cum să rezolvăm conflictele, să ne familiarizăm cu
mesajele afişate de comanda "cvs update". Dacă aţi creat un fişier
~/.cvsrc care conţine linia "cvs -q", veţi vedea că mesajele afişate de
"cvs update" sunt mai uşor de citit. "cvs update" vă informează asupra a
ceea ce face prin tipărirea unui singur caracter, spaţiu, un nume de
fişier; de exemplu:
Cod 2.11: Actualizare CVS |
# cvs update -dP
? distfiles
? packages
? profiles
|
Să ne familiarizăm cu "cvs update", partea a 2-a
"cvs update" foloseşte caracterul "?" pentru a ne informa asupra faptului
că nu ştie nimic despre fişierele pe care le găseşte în copia
locală a repozitoriului. Ele nu sunt parte din repozitoriu, nici nu au fost
programate pentru a fi adăugate. Aici este o listă cu alte caractere care
apar în mesajele informaţionale pe care CVS le foloseşte:
Cod 2.12: Mesaj informaţional: U |
U [cale]
|
Folosit când un fişier nou este creat în repozitoriul local, sau un
fişier de neatins (pentru dumneavoastră) a fost actualizat.
Cod 2.13: Mesaj informaţional: A |
A [cale]
|
Acest fişier este programat pentru a fi adăugat şi va fi adăugat
oficial repozitoriului atunci când veţi tasta cvs commit.
Să ne familiarizăm cu "cvs update", partea a 3-a
Cod 2.14: Mesaj informaţional: R |
R [cale]
|
La fel ca şi "A", "R" vă informează că fişierul este programat pentru
ştergere. Fişierul va fi şters de îndată ce veţi tasta cvs
commit.
Cod 2.15: Mesaj informaţional: M |
M [cale]
|
Aceasta înseamnă că acest fişier a fost modificat de dumneavoastră; de
asemenea, este posibil ca noile modificări din repozitoriu să fie
concatenate în acest fişier cu succes.
Cod 2.16: Mesaj informaţional: C |
C [cale]
|
Caracterul "C" indică faptul ca a apărut un conflict şi este necesară
să reparaţi manual această problemă înainte de a putea folosi comanda
"cvs commit".
Introducere în rezolvarea conflictelor
Acum, să analizăm modul în care se poate rezolva un conflict. Eu sunt
foarte mult implicat în proiectul Gentoo Linux, şi avem propriul nostru
server cvs la cvs.gentoo.org. Noi programatorii ne petrecem cea mai mare parte
a timpului modificând sursele modulului "gentoo-x86". În interiorul
modulului gentoo-x86, avem un fişier numit "ChangeLog" care găzduişte
(cred că aţi ghicit) o descriere a schimbărilor majore pe care le
efectuăm asupra fişierelor din repozitoriu.
Un exemplu de conflict
Deoarece acest fişier este modificat aproape de fiecare dată când un
programator aduce o schimbare majoră în CVS, este o sursă de conflicte --
iată un exemplu de conflict. Să presupunem că adaug următoarele linii
la începutul fişierului ChangeLog:
Cod 2.17: ChangeLog modificare |
data 25 Feb 2001
Această linie am adăugat-o eu
|
Să presupune că inainte ca eu să pot adăuga aceste trei linii, alt
programator adaugă următoarele trei linii la începutul fişierului
ChangeLog şi adaugă modificările făcute de el:
Cod 2.18: ChangeLog modificare 2 |
data 25 Feb 2001
Această parte este adăugată de un alt programator
|
Un exemplu de conflict, continuare
Acum, când o sa rulez cvs update -dP (ceea ce trebui să fac înainte
oricărei adăugări), cvs nu va putea concatena modificările în copia
mea locală de ChangeLog deoarece amândoi am adăugat linii în aceeaşi
parte a fişierului -- de unde să ştie cvs care versiune să o
folosească? CVS îmi afişează următorul mesaj:
Cod 2.19: eroare CVS |
RCS file: /var/cvsroot/gentoo-x86/ChangeLog,v
retrieving revision 1.362
retrieving revision 1.363
Merging differences between 1.362 and 1.363 into ChangeLog
rcsmerge: warning: conflicts during merge
cvs server: conflicts found in ChangeLog
C ChangeLog
|
Rezolvarea conflictelor, partea 1
Ah -- un conflict! Din fericire, rezolvarea conflictelor este uşoară.
Dacă îmi pornesc editorul de text, voi vedea următorul text la începutul
fişierului ChangeLog:
Cod 2.20: conflict ChangeLog |
<<<<<<< ChangeLog
date 25 Feb 2001
Această linie am adăugat-o eu
=======
date 25 Feb 2001
Această parte este adăugată de un alt programator
>>>>>>> 1.363
|
Rezolvarea conflictelor, partea 2
În loc de a alege o anumite versiune în favoarea celeilalte, cvs a adăugat
ambele versiuni fişierului ChangeLog, şi a folosit caractere speciale ca
separatori pentru a scoate în evidenţă conflictul. Acum, mă priveşte
cum voi modifica această porţiune cu textul care ar trebui să
apară în ChangeLog; în acest caz, textul cu care va fi înlocuit nu este
nici decum una dintre versiuni, ci o combinaţie între cele două:
Cod 2.21: Intrare din ChangeLog |
date 25 Feb 2001
Această linie am adăugat-o eu
Această parte este adăugată de un alt programator
|
Acum că am înlocuit regiunea cu conflict din fişier cu textul necesar
(şi am înlăturat marcajele "========", etc), pot adăuga modificările
mele la cvs fără probleme.
Ponturi în rezolvarea conflictelor
Atunci când sunteţi nevoiţi să modificaţi un fişier pentru conflicte
asiguraţi-vă că aţi parcurs întreg fişierul pentru a putea vizualiza
eventualele conflicte; dacă aţi omis un anumit conflict cvs nu vă va
permite să adăugaţi fişierul, doar atunci când toate conflictele sunt
soluţionate! Este de asemenea evident, şi foarte important să
înlăturaţi caraterele speciale de delimitare a conflictelor. Un alt pont --
dacă modificaţi greşit fişierul în care a avut loc un conflict iar apoi
("D'oh!") accidental salvaţi fişierul cu modificările greşite, puteţi
găsi o copie originală a versiunii dorite în fişierul
".#numefişier.versiune".
Înlăturarea unui fişier
Acum este momentul să învăţaţi ultima acţiune CVS -- înlăturarea
(ştergerea) fişierelor din repozitoriu. Ştergerea unui fişier este un
procedeu ce se desfăşoară în două etape. Prima dată ştergeţi
fişierul din copia locală a surselor, iar apoi tastaţi comanda pentru a
înlătura un fişier cvs remove:
Cod 2.22: Înlăturarea unui fişier |
# rm myoldfile.c
# cvs remove myoldfile.c
|
Înlăturarea unui fişier, continuare
Fişierul va fi programat pentru înlăturare din repozitoriu pentru
următoarea dată când veţi folosi cvs commit. O dată trimisă
comanda, fişierul va fi şters oficial din versiunea curentă a
repozitoriului. Oricum, cvs nu va arunca acest fişier, şi în continuare va
ţine un registru cu conţinutul şi istoria lui, în caz că veţi avea
nevoie de el în viitor. Aceasta este doar una dintre multiplele metode pe care
cvs le utilizează pentru a vă proteja codul sursă.
Comanda cvs remove este recursivă, ceea ce înseamă că puteţi
şterge mai multe fişiere. Apoi trebuie doar să rulaţi comanda cvs
remove fără nici un argument din directorul părinte. Acest lucru va
face ca toate fişierele şterse din acel director să fie marcate pentru
înlăturate la următoarea comandă cvs commit.
Înlăturarea unui director
Dacă doriţi să ştergeţi un director întreg, recomand următorii
paşi. Prima dată, ştergeţi toate fişierele iar apoi executaţi "cvs
remove" în directorul respectiv:
Cod 2.23: Înlăturarea unui director |
# rm *.c
# cvs remove
|
Înlăturarea unui director, continuare
Apoi, comiteţi:
Cod 2.24: Adăugaţi modificările |
# cvs commit
|
Aici intervine trucul. Urmaţi aceşti paşi pentru a şterge directorul:
Cod 2.25: Înlăturarea unui director |
# cd ..
# cvs remove mydir
# rm -rf mydir
|
Observaţi că înlăturarea directorului nu a necesitat o altă adăugare
-- directoarele sunt adăugate şi înlăturate din repozitoriu în timp
real.
Gata!
Introducerea dumneavoastră în CVS este completă -- Sper ca aces ghid v-a
fost de folos. Mai este mult de învăţat despre CVS, lucruri pe care nu
le-am putut cuprinde în acest ghid introductiv, dar există din fericire
multe resurse valoroase pentru CVS, pe care le puteţi folosi pentru a
aprofunda în CVS:
Despre acest document
Versiunea originală a acestui articol a fost publicată de IBM
developerWorks, şi este proprietatea Westtech Information Services. Acest
document este o actualizare a documentului original şi conţine diferite
îmbunătăţire aduse de echipa de documentaţie Gentoo Linux.
|