m (moved Getting Started/Sources/Using Subversion with KDE (ro) to Getting Started/Sources/Subversion (ro): Git reorg) |
|||
| Line 1: | Line 1: | ||
| − | + | ||
{{TutorialBrowser| | {{TutorialBrowser| | ||
| Tutorial Series | Getting Started |
| Previous | None |
| What's Next | n/a |
| Further Reading | n/a |
Aceasta este o scurtă introducere în folosirea utilitarului Subversion pentru a accesa fişierele din depozitul KDE. Dacă aveţi nevoie de un manual complet al utilitarului Subversion, vă recomandăm "Version Control with Subversion".
Pentru a accesa depozitul KDE aveţi nevoie de:
Notă: Dacă doar doriţi să descărcaţi fişiere, fără a avea nevoie de drepturi de scriere, nu este necesar contul de utilizator; folosiţi "svn" ca şi "<protocol>", fără "<utilizator>@", şi serverul "anonsvn.kde.org" în locul serverului "svn.kde.org".
Instalarea clientului Subversion: această pagină nu conţine instrucţiuni privind instalarea clientului Subversion. Pentru a afla cum puteţi instala Subversion consultaţi documentaţia de instalare a programelor pentru sistemul de operare pe care îl folosiţi. Veţi avea nevoie de cel puţin versiunea 1.1 a Subversion. Dacă compilaţi Subversion din codul sursă şi doriţi să accesaţi depozitul KDE cu protocolul de Internet "https" (şi nu svn+ssh), aveţi nevoie de suport pentru SSL şi ZLIB, deci va trebui să folosiţi opţiunile de compilare --with-ssl --with-zlib.
De asemenea, puteţi instala una dintre multele interfeţe grafice disponibile pentru Subversion. Acest tutorial a fost scris pentru a-i ajuta pe cei care folosesc doar clientul svn şi se referă la acţiunile care pot fi realizate cu cunoscutul utilitar cvs.
Obţinerea unui cont de utilizator: dacă aţi avut un cont de acces la depozitul CVS, acesta a fost adaptat pentru folosirea cu Subversion. Dacă nu aţi avut un asemenea cont, consultaţi acest ghid pentru a afla cum puteţi obţine unul.
| Note |
|---|
| Dacă nu vă mai amintiţi parola contului CVS, există două modalităţi simple de a o recupera: folosiţi cvspwd (C) sau cvs-unscramble (Perl). |
svn.kde.org/home/kde
Aceasta este adresa depozitului KDE. Poate fi accesată folosind oricare dintre protocoalele Internet HTTPS sau SVN+SSH, ceea ce înseamna că parola dumneavoastră nu va putea fi interceptată de către persoane nedorite.
Semnătura SSL în format MD5 recunoscută de către depozitul KDE este:
F6BF EDE2 D016 D1B2 4F18 742E 2C8F B7EF
iar semnătura SSL în format SHA1 este:
e1:e6:41:96:3c:eb:ae:78:e2:73:0d:a2:32:2f:6b:21:13:bf:3d:0f
Dacă folosiţi protocolul svn+ssh, semnătura cheii RSA a serverului este:
86:f3:66:06:20:74:81:d0:1b:b4:2f:25:03:f7:8e:fb
Depozitul este împărţit în următoarele dosare principale:
Interfaţa online a depozitului o veţi găsi la adresa http://websvn.kde.org/
În dosarul principal /trunk veţi găsi ultima versiune a surselor KDE. Acestea vor deveni următoarea distribuţie a KDE şi a aplicaţiilor sale. Tot aici veti găsi şi modulul www, care conţine paginile sitului principal KDE şi ale siturilor afiliate.
/trunk este împărţit mai departe în:
Acest dosar conţine versiunile oficiale ale programelor dezvoltate în depozitul KDE. Fiecare aplicaţie are aici un sub-dosar conţinând versiunile numerotate.
Spre exemplu, codul sursă al KDE 3.4.0 se află în /tags/KDE/3.4.0/.
În acest dosar se află ramificaţiile create după fiecare versiune oficială.
Cele mai multe aplicaţii KDE urmează principiul de a adăuga noi abilităţi (şi chiar şi texte vizibile) doar în versiunea aflată în dezvoltare — cea păstrată în /trunk/. Totuşi, modificările care rezolvă probleme se aplică tuturor programelor, chiar şi după publicarea versiunii oficiale.
Pentru a putea realiza acest lucru, în momentul publicării unei versiuni oficiale este creată o ramificaţie a versiunii de dezvoltare din acel moment. Modificările care rezolvă probleme sunt apoi adăugate la această ramificaţie. Aceste ramificaţii se află în /branches/.
Spre exemplu, ramificaţia KDE 3.4.x se află în /branches/KDE/3.4/
Dosarele din /branches sunt asociate fiecărei aplicaţii în parte, cum ar fi akregator/, amarok/, arts/, k3b/, etc. Tot aici veţi găsi dosarul KDE/, conţinând toate versiunile oficiale ale KDE.
Un dosar mai special aflat în /branches este work/. Acest dosar conţine aşa-numitele "ramificaţii de test", adică ramificaţii conţinând cod sursă aflat în teste, uneori chiar cod experimental. Ramificaţiile de test care afectează mai multe aplicaţii sunt păstrate în /branches/work/, dar ramificaţiile care afectează doar o singură aplicaţie pot fi păstrate în dosarul asociat cu aplicaţia respectivă. Dezvoltatorii aplicaţiei respective sunt cei care iau decizia folosirii uneia dintre aceste locaţii.
Comanda Subversion checkout poate fi folosită pentru a descărca orice modul din depozitul KDE.
Atenţie! Dacă descărcaţi trunk/KDE/ sau branches/KDE/foo/ veţi constata că aţi descărcat întreg modulul kde-i18n!
Spre exemplu, dacă doriţi să descărcaţi doar modulul KDevelop din depozit, folosiţi comenzile:
pentru CVS:
cvs -d :pserver:yourname@cvs.kde.org:/home/kde login cvs -d :pserver:yourname@cvs.kde.org:/home/kde checkout kdevelop
pentru Subversion:
Utilizatorii CVS care accesau depozitul prin intermediul SSH ar trebui să folosească protocolul svn+ssh, iar utilizatorii CVS care accesau depozitul folosind o parola ar trebui să folosească protocolul https în comenzile următoare.
svn checkout <protocol>://<utilizator>@svn.kde.org/home/kde/trunk/KDE/kdevelop
Pentru a actualiza copia dumneavoastră, folosiţi comanda update.
Această comandă funcţionează la fel ca în CVS: schimbaţi dosarul curent cu cel al copiei locale (pentru cei neexperimenţati în folosirea utilitarului Subversion, copia locală ar trebui să se afle în dosarul personal) şi tastaţi comanda svn update (sau, mai scurt, svn up).
Pentru a afla care dintre fişierele locale au fost modificate în depozit, majoritatea utilizatorilor CVS foloseau comanda:
cvs up
şi căutau marcajul M; în Subversion puteţi afla starea fişierelor locale cu comanda:
svn status
.
La fel ca în CVS, înglobarea modificărilor în depozit se realizează cu una dintre comenzile commit sau checkin (ci pe scurt).
comenzile CVS:
cvs commit # sau cvs ci # sau cvs ci numefisier.cpp
comenzile Subversion:
svn commit # sau svn ci # sau svn ci numefisier.cpp
svn va porni editorul de text specificat în variabila de mediu $SVN_EDITOR pentru a vă permite să introduceţi un mesaj asociat cu modificările dumneavoastră. Alternativ, puteţi folosi opţiunea -m alături de textul mesajului:
svn ci -m "Actualizarea protocolului de comunicatie conform cu standardul HTTP/1.1"
Subversion păstrează lista fişierelor ignorate în interiorul fiecarui dosar în parte. Pentru a edita lista fişierelor ignorate din dosarul curent, folosiţi comanda:
svn propedit svn:ignore .
svn va deschide lista în editorul de texte; scrieţi numele fişierelor care doriţi să fie ignorate, câte unul pe linie. Când aţi terminat de modificat lista, executaţi o comandă de înglobare pentru a trimite modificarea facută la depozitul KDE.
În CVS, spre deosebire de versiunea actuală a Subversion, fişierele ignorate puteau fi specificate într-o listă globală. Subversion 1.3 va adăuga suport pentru această listă globală, dar până atunci puteţi adăuga lista de fişiere ignorate la grupul [miscellany] din fişierul ~/.subversion/config (totul pe o singură linie):
global-ignores = *.o *.lo *.la .*.rej *.rej .*~ *~ .#* #*# .DS_Store *.moc *.moc.cc *.moc.cpp config.log config.status config.cache *.gmo .deps .libs SunWS_cache *.lo *.la *.rpo *.la.closure *_la_closure.cpp *_la_closure.cc *_la_closure.cxx *.all_cc.cc *.all_cpp.cpp *.all_C.C *.all_cxx.cxx *_meta_unload.cc *_meta_unload.h *_meta_unload.cpp *_meta_unload.C *_meta_unload.cxx index.cache.bz2 .memdump Makefile.rules.in Makefile.calls.in Makefile.rules Makefile.calls autom4te.cache *.kidl
Spre deosebire de CVS, Subversion nu generează un număr de revizie pentru fiecare fişier modificat, ci pentru întreg depozitul. Astfel, un numar de revizie reprezintă conţinutul depozitului în momentul în care a fost creată revizia. Cu alte cuvinte, un număr de revizie seamăna foarte mult cu o amprentă temporală (de fapt, serverul Subversion foloseşte acest fapt pentru a căuta mai eficient după dată).
Spre exemplu, atunci când acualizaţi copia locală din depozitul KDE, Subversion vă va comunica următoarele:
Updated to revision 403821.
Acest mesaj înseamnă că ultima revizie disponibilă în depozit la momentul actualizării este 403821. Dacă modificaţi un fişier şi apoi înglobaţi modificarea în depozit, Subversion va actualiza numărul reviziei pe server şi vă va informa de această actualizare a depozitului; ca şi în CVS, doar fişierele modificate vor fi actualizate în depozit: va trebui să rulaţi comanda cvs up petru a actualiza şi restul fişierelor.
Dacă doriţi să accesaţi o anumită revizie a unui fişier, puteţi folosi opţiunea -r alături de unul dintre următoarele cuvinte cheie:
Iată un posibil scenariu:
Aceste cuvinte cheie sunt utile atunci când doriţi să obţineţi înregistrări de transfer sau diferenţe între înglobări în depozit.
Dacă doriţi să vedeţi diferenţa dintre copia dumneavoastră şi revizia BASE puteţi folosi comanda:
svn diff
Această operaţie este rapidă deoarece Subversion poate obţine ambele versiuni din copia locală. Evident, nu este nevoie de conexiune la server pentru a efectua această operaţie.
Dacă doriţi să vedeţi diferenţa dintre copia dumneavoastră şi ultima revizie disponibilă pe server puteţi folosi comanda:
svn diff -r HEAD
Dacă doriţi să vedeţi ce s-a schimbat în depozit de la ultima actualizare pe care aţi făcut-o copiei dumneavoastră puteţi folosi comanda:
svn diff -r BASE:HEAD
Dacă doriţi să vedeţi ultima modificare înglobată înainte de revizia BASE puteţi folosi comanda:
svn diff -r PREV:BASE # sau svn diff -r PREV:COMMITTED
al cărei format este valabil şi pentru comanda svn log.
Poate doriţi să includeţi o copie a unui dosar aflat la o altă locaţie, doar pentru a-l putea accesa mai uşor, nu pentru a modifica codul conţinut în acesta. Bineînţeles, această copie va trebui să se actualizeze automat de fiecare dată când dosarul original este modificat. Subversion oferă suport pentru această actualizare automată. Va trebui să editaţi proprietatea svn:externals a dosarului local în care aţi plasat copia dosarului extern. Folosiţi comanda:
svn propedit svn:externals .
şi introduceţi o linie pentru dosarul extern, ca în exemplul următor:
libkhalkhi svn://anonsvn.kde.org/home/kde/trunk/playground/pim/khalkhi
La fiecare operaţie de actualizare a copiei locale, libkhalkhi va fi actualizat cu conţinutul dosarului extern /trunk/playground/pim/khalkhi.
| Warning |
|---|
| De reţinut că nu puteţi îngloba în depozit modificările pe care le faceţi în copia locală a dosarului extern, aceasta neavând drept de înglobare pe server. |
În exemplele de mai sus am folosit protocolul svn://anonsvn.kde.org deoarece serverul anonsvn.kde.org poate fi accesat fără a avea nevoie de cont de utilizator. Protocoalele https: sau svn+ssh: vor putea fi folosite doar dacă aveţi cont de utilizator. Serverul anonsvn.kde.org are totusi unele mici dezavantaje: nu este tot timpul sincronizat cu serverul svn.kde.org, deci înglobările efectuate pe svn.kde.org vor apărea putţn mai tarziu pe anonsvn.kde.org. De asemenea, unele utilitare firewall blochează protocolul svn:.
Un caz special al KDE 3 este dosarul admin, care conţine utilitarele de compilare specifice KDE 3. Acestea sunt dezvoltate în /branches/KDE/3.5/kde-common şi au câte o copie în fiecare dintre dosarelele principale. Depozitul KDE este configurat să nu permită modificarea de către dumneavoastră a dosarelor admin, aşadar nu este indicat să modificaţi linia
admin https://svn.kde.org/home/kde/branches/KDE/3.5/kde-common/admin
din proprietatea svn:externals a dosarelor principale.
Consultaţi această pagină wiki pentru a afla mai multe informaţii despre folosirea utilitarului Subversion cu depozitul KDE.