Difference between revisions of "Getting Started/Sources/Subversion (ro)"

Jump to: navigation, search
Line 32: Line 32:
 
{{Note|Daca nu va mai amintiti parola contului CVS, exista doua modalitati simple de a o recupera: folositi [http://ktown.kde.org/~coolo/cvspwd.c cvspwd] (C) sau [http://kdab.net/~dfaure/cvs-unscramble cvs-unscramble] (Perl).}}
 
{{Note|Daca nu va mai amintiti parola contului CVS, exista doua modalitati simple de a o recupera: folositi [http://ktown.kde.org/~coolo/cvspwd.c cvspwd] (C) sau [http://kdab.net/~dfaure/cvs-unscramble cvs-unscramble] (Perl).}}
  
== Structura depozitului SVN a KDE ==
+
== Structura depozitului SVN al KDE ==
  
 
  svn.kde.org/home/kde
 
  svn.kde.org/home/kde
Line 53: Line 53:
 
# /trunk
 
# /trunk
  
Interfata depozitului o veti gasi la adresa [http://websvn.kde.org/ http://websvn.kde.org/]
+
Interfata online a depozitului o veti gasi la adresa [http://websvn.kde.org/ http://websvn.kde.org/]
  
  
Line 201: Line 201:
 
  svn ci numefisier.cpp
 
  svn ci numefisier.cpp
  
Astfel, <tt>svn</tt> va porni editorul de text specificat in variabila de mediu <tt>$SVN_EDITOR</tt> pentru a va permite sa introduceti un mesaj asociat cu operatia de inglobare. Alternativ, puteti folosi optiunea <tt>-m</tt> alaturi de textul mesajului:
+
<tt>svn</tt> va porni editorul de text specificat in variabila de mediu <tt>$SVN_EDITOR</tt> pentru a va permite sa introduceti un mesaj asociat cu modificarile dumneavoastra. Alternativ, puteti folosi optiunea <tt>-m</tt> alaturi de textul mesajului:
  
 
  svn ci -m "Actualizarea protocolului de comunicatie conform cu standardul HTTP/1.1"
 
  svn ci -m "Actualizarea protocolului de comunicatie conform cu standardul HTTP/1.1"
Line 209: Line 209:
 
Subversion pastreaza lista fisierelor ignorate in fiecare catalog. Pentru a edita lista fisierelor ignorate din catalogul curent, folositi comanda:
 
Subversion pastreaza lista fisierelor ignorate in fiecare catalog. Pentru a edita lista fisierelor ignorate din catalogul curent, folositi comanda:
 
   svn propedit svn:ignore .
 
   svn propedit svn:ignore .
<tt>svn</tt> va deschide lista in editorul de texte asociat; scrieti numele fisierelor care doriti sa fie ignorate, cate unul pe linie. Cand ati terminat de modificat lista, tastati o comanda de inglobare pentru a trimite modificarea facuta la depozitul SVN.
+
<tt>svn</tt> va deschide lista in editorul de texte; scrieti numele fisierelor care doriti sa fie ignorate, cate unul pe linie. Cand ati terminat de modificat lista, tastati o comanda de inglobare pentru a trimite modificarea facuta la depozitul SVN.
  
A lot of files were ignored in CVS with help from global ignore list which
+
In CVS, dar nu si in Subversion inca, fisierele ignorate puteau fi specificate intr-o lista globala. Subversion 1.3 va adauga suport pentru aceasta lista globala, dar pana atunci puteti adauga lista de fisiere ignorate la grupul [miscellany] din fisierul {{path|~/.subversion/config}} (totul pe o singura linie):
is not supported yet by SVN. You can wait for svn 1.3 or you need to add the
+
ignore list to the [miscellany] group in your {{path|~/.subversion/config}} (all in
+
one line):
+
  
 
  global-ignores = *.o *.lo *.la .*.rej *.rej .*~ *~ .#* #*# .DS_Store *.moc
 
  global-ignores = *.o *.lo *.la .*.rej *.rej .*~ *~ .#* #*# .DS_Store *.moc
Line 224: Line 221:
 
  Makefile.rules Makefile.calls autom4te.cache *.kidl
 
  Makefile.rules Makefile.calls autom4te.cache *.kidl
  
== Working with multiple revisions and branches ==
+
== Lucrul cu mai multe revizii si ramificatii ==
  
Unlike CVS, Subversion doesn't generate a revision number for each file
+
Spre deosebire de CVS, Subversion nu genereaza un numar de revizie pentru fiecare fisier modificat, ci pentru intreg depozitul. Astfel, un numar de revizie va reprezenta continutul depozitului in momentul in care a fost creata revizia. Cu alte cuvinte, un numar de revizie seamana foarte mult cu o amprenta temporala (de fapt, serverul Subversion foloseste acest fapt pentru a cauta dupa data mai repede).
modified. Instead, the full repository is versioned, as a whole. This way, a
+
given revision number represents the state the repository was on a given date.
+
In other words, a revision number is like a timestamp (in fact, the Subversion
+
server uses this fact to search for dates in the repository faster).
+
  
So, for instance, when you check out the KDE repository, Subversion will
+
Spre exemplu, cand acualizati din depozitul KDE, Subversion va va comunica urmatoarele:
tell you the following:
+
  
 
  Updated to revision 403821.
 
  Updated to revision 403821.
  
This means that the latest revision available at the time of the operation
+
Aceasta inseamna ca ultima revizie disponibila in depozit la momentul actualizarii a fost 403821. Daca modificati un fisier si il inglobati in depozit, Subversion va actualiza numarul reviziei pe server si va va informa de aceasta actualizare; ca si in CVS, doar fisierele inglobate vor fi actualizate: va trebui sa rulati comanda <tt>cvs up</tt> petru a actualiza si restul fisierelor.
was 403821. If you make a modification and commit, Subversion will update the
+
server-side revision and will inform you of it. Like CVS, only the committed
+
files will be updated: you will need run <tt>cvs up</tt> to update the rest of the
+
files.
+
  
If you want to retrieve a specific revision of a file, you can use the <tt>-r</tt>
+
Daca doriti sa accesati o anumita revizie a unui fisier, puteti folosi optiunea <tt>-r</tt> alaturi de una din urmatoarele:
switch. Besides the revision number itself, -r accepts a number of other
+
possibilities:
+
 
    
 
    
* The revision number: for example, use -r 403819 to retrieve that version
+
* Numarul reviziei: spre exemplu, folositi -r 403819 pentru a accesa revizia cu numarul 403819
* '''BASE''': the revision you updated to
+
* '''BASE''': revizia la care ati efectuat ultima actualizare a copiei locale
* '''COMMITTED''': the revision a file was last modified, before BASE
+
* '''COMMITTED''': revizia la care ati facut ultima inglobare a modificarilor dumneavoastra, inainte de BASE
* '''PREV''': the revision of the previous commit to the file before COMMITTED
+
* '''PREV''': revizia la care ati facut penultima inglobare, inainte de COMMITTED
* '''HEAD''': the most recent revision available in the server
+
* '''HEAD''': ultima revizie disponibila pe server
* '''{ date }''': between curly brackets, you can specify a date for searching the closest revisions
+
* '''{ date }''': puteti specifica o data intre acolade, pentru a cauta revizia cea mai apropiata de aceasta data.
  
The following illustrates the evolution of the keywords:
+
Iata un posibil scenariu:
  
# You run <tt>svn up</tt> to update to the latest available revision. Suppose Subversion tells you it updated to revision 403821. This means that HEAD and BASE are 403821.
+
# Rulati comanda <tt>svn up</tt> pentru a actualiza copia locala la ultima revizie disponibila. Sa presupunem ca Subversion v-a anuntat ca a actualizat copia locala la revizia 403821. Aceasta inseamna ca HEAD si BASE au valoarea 403821.
# You modify file README and commit it. Suppose Subversion tells you it committed revision 403822. This means HEAD, BASE and COMMITTED are 403822.
+
# Modificati fisierul README si inglobati modificarea in depozit. Sa presupunem ca Subversion va anunta ca ati creat revizia 403822. Aceasta inseamna ca HEAD, BASE si COMMITTED au valoarea 403822.
# You modify the file again and commit it. Now PREV is 403822, but HEAD, BASE and COMMITTED are updated to a new value (suppose it's 403823).
+
# Modificati acelasi fisier din nou si inglobati modificarea in depozit. Acum PREV are valoarea 403822, dar HEAD, BASE si COMMITTED au o noua valoare (sa presupunem ca aceasta este 403823).
# Now someone else modifies the repository, and you update your working copy. If Subversion tells you it updated to 403824, this means now HEAD and BASE are moved to 403824 (but PREV and COMMITTED stay the same)
+
# In continuare, o alta persoana inglobeaza modificarile sale in depozit, iar dumneavoastra va actualizati copia cu aceste modificari. Daca Subversion va anunta ca ati actualizat copia locala la revizia 403824, aceasta inseamna ca HEAD si BASE vor avea noua valoare 403824 dar PREV si COMMITTED raman la vechile valori)
# If someone modifies the README file now, HEAD is moved. The other keywords stay the same for you, until you update. At this time, we will have HEAD = 403825 (the latest available revision), BASE = 403824 (the revision you last updated to), COMMITTED = 403823 (the revision of the latest change to the file when you last updated) and PREV = 403822 (the revision of the change before COMMITTED)
+
# Daca o alta persoana modifica acum fisierul README, HEAD va avea o noua valoare. Pana la urmatoarea actualizare, valorile celorlalte cuvinte cheie raman aceleasi pentru dumneavoastra. In acest moment vom avea HEAD = 403825 (ultima revizie disponibila pe server), BASE = 403824 (ultima revizie la care ati efectuat o actualizare), COMMITTED = 403823 (revizia ultimelor modificari pe care le-ati inglobat in depozit) si PREV = 403822 (revizia penultimelor modificari pe care le-ati inglobat in depozit).
  
Those keywords are useful to retrieve logs and diffs for commits to the
+
Aceste cuvinte cheie sunt utile atunci cand doriti sa obtineti inregistrari sau diferente intre inglobari in depozit.
repository.
+
  
If you want to see the difference between your working copy and BASE, you
+
Daca doriti sa vedeti diferenta dintre copia dumneavoastra si revizia BASE puteti folosi comanda:
can run:
+
  
 
  svn diff
 
  svn diff
  
This is a very fast operation, since Subversion keeps a local copy of BASE.
+
Aceasta operatie este rapida deoarece Subversion poate obtine ambele versiuni din copia locala. Evident, nu este nevoie de conexiune la server pentru a efectua aceasta operatie.
It doesn't need a network connection to accomplish this operation.
+
  
If you want to see the difference between your local copy and the latest
+
Daca doriti sa vedeti diferenta dintre copia dumneavoastra si ultima revizie disponibila pe server puteti folosi comanda:
available on the server, you will run:
+
  
 
  svn diff -r HEAD
 
  svn diff -r HEAD
  
If you want to see what has changed in the repository since you've last updated, you can use:
+
Daca doriti sa vedeti ce s-a schimbat in depozit de la ultima actualizare pe care ati facut-o copiei dumneavoastra puteti folosi comanda:
 +
 
 
  svn diff -r BASE:HEAD
 
  svn diff -r BASE:HEAD
  
If you want to see the last change to a file before BASE, you can use:
+
Daca doriti sa vedeti ultima modificare inglobata inainte de revizia BASE puteti folosi comanda:
 +
 
 
  svn diff -r PREV:BASE
 
  svn diff -r PREV:BASE
  # or
+
  # sau
 
  svn diff -r PREV:COMMITTED
 
  svn diff -r PREV:COMMITTED
  
That is also valid for the <tt>svn log</tt> command.
+
alcarei format este valabil si pentru comanda <tt>svn log</tt>.
  
 
== Linking in subdirectories from other places ==
 
== Linking in subdirectories from other places ==
  
It can happen you would like to include a copy of a subdirectory from another place, but just for convenience, not for developing the code in there. Of course it should be updated automatically whenever the original changes. Subversion can help you. You need to edit the property <tt>svn:external</tt> of the directory the subdirectory should be added to. So for the current directory you use
+
Poate doriti sa includeti o copie a unui catalog aflat la o alta locatie, doar pentru a il accesa mai usor, nu pentru a modifica codul continut. Bineinteles, aceasta copie ar trebui sa se actualizeze automat de fiecare daca cand catalogul original este modificat. Subversion ofera suport pentru acest scenariu. Va trebui sa editati proprietatea <tt>svn:externals</tt> a catalogului local in care doriti sa plasati copia catalogului extern. Folositi comanda:
 
  svn propedit svn:externals .
 
  svn propedit svn:externals .
and then enter lines of the form
+
si introduceti cate o linie pentru fiecare catalog extern ca in exemplul urmator:
 
  libkhalkhi svn://anonsvn.kde.org/home/kde/trunk/playground/pim/khalkhi
 
  libkhalkhi svn://anonsvn.kde.org/home/kde/trunk/playground/pim/khalkhi
Updating will now fetch <tt>/trunk/playground/pim/khalkhi</tt> into the subdirectoy <tt>libkhalkhi</tt>.
+
La fiecare operatie de actualizare catalogul local <tt>libkhalkhi</tt> va fi actualizat cu continutul catalogului extern <tt>/trunk/playground/pim/khalkhi</tt>.
  
{{warning|Beware that you cannot commit changes you did to the local copy of the external subdirectory, it is just a readonly copy.}}
+
{{warning|De retinut ca nu puteti ingloba in depozit modificarile pe care le faceti in copia locala a catalogului extern, aceasta neavand drept de inglobare pe server.}}
  
You use <tt>svn://anonsvn.kde.org</tt> and not another protocol, because <tt>anonsvn.kde.org</tt> is accessible to everyone. Using <tt>https:</tt> or <tt>svn+ssh:</tt> would only work for users of that protocol. There are still some small disadvantage with <tt>anonsvn.kde.org</tt>: It is not always in synchronization with <tt>svn.kde.org</tt>, so updates in the original branch may take a while to appear on <tt>anonsvn.kde.org</tt>. And some strict firewalls are blocking the <tt>svn:</tt> protocol.
+
In exemplele de mai sus am folosit protocolul <tt>svn://anonsvn.kde.org</tt> deoarece serverul anonsvn.kde.org poate fi accesat fara a avea nevoie de cont de utilizator. Protocoalele <tt>https:</tt> sau <tt>svn+ssh:</tt> vor putea fi folosite doar daca aveti cont de utilizator pe server. Serverul <tt>anonsvn.kde.org</tt> are totusi unele mici dezavantaje: nu este tot timpul sincronizat cu serverul <tt>svn.kde.org</tt>, deci inglobarile efectuate pe <tt>svn.kde.org</tt> vor aparea putin mai tarziu pe <tt>anonsvn.kde.org</tt>. De asemenea unele utilitare firewall blocheaza protocolul <tt>svn:</tt>.
  
A special case in KDE 3 is the subdirectory <tt>admin</tt>, containing the KDE 3 build utilities. It is linked in to the top directory in all modules, and maintained in <tt>/branches/KDE/3.5/kde-common</tt>. For <tt>admin</tt> the KDE subversion server is configured to allow readonly access for everyone, so if you see
+
Un caz special al KDE 3 este catalogul <tt>admin</tt>, care contine utilitarele de compilare specifice KDE 3. Acesta este dezvoltat in <tt>/branches/KDE/3.5/kde-common</tt> si are cate o copie in fiecare dintre cataloagele principale. Depozitul SVN al KDE este configurat sa permita doar operatii de descarcare din catalogul <tt>admin</tt>, asadar nu este indicat sa modificati linia
 
  admin https://svn.kde.org/home/kde/branches/KDE/3.5/kde-common/admin
 
  admin https://svn.kde.org/home/kde/branches/KDE/3.5/kde-common/admin
there is no need to change this.
+
din proprietatea <tt>svn:externals</tt> a cataloagelor principale.
  
== More information on the kde wiki ==
+
== Informatii suplimentare puteti gasi pe situl wiki al KDE ==
  
See [http://wiki.kde.org/tiki-index.php?page=KDE%20Subversion%20HOWTO the KDE wiki] for more
+
Consultati [http://wiki.kde.org/tiki-index.php?page=KDE%20Subversion%20HOWTO aceasta pagina wiki a KDE] pentru a afla mai multe informatii despre folosirea utilitarului Subversion cu depozitul SVN al KDE.
information about subversion in KDE
+

Revision as of 15:58, 10 March 2008


Contents

Getting Started/Sources/Using Subversion with KDE


Ghid de folosire a utilitarului Subversion
Tutorial Series   Getting Started
Previous   None
What's Next   n/a
Further Reading   n/a

Introducere

Aceasta este o scurta introducere in folosirea utilitarului Subversion pentru a accesa fisierele din depozitul SVN al KDE. Daca aveti nevoie de un manual complet al utilitarului Subversion, va recomandam "Version Control with Subversion".

Primii pasi

Pentru a accesa depozitul SVN al KDE aveti nevoie de doua lucruri:

  1. Un program client Subversion
  2. Un cont de utilizator al depozitului SVN

Nota: Daca doar doriti sa descarcati fisiere, fara a avea nevoie de drepturi de scriere, nu aveti nevoie de cont de utilizator; folositi "svn" ca si "<protocol>", fara "<utilizator>@", si serverul "anonsvn.kde.org" in loc de "svn.kde.org".

Instalarea clientului Subversion: aceasta pagina nu contine instructiuni privind instalarea clientului Subversion. Pentru a afla cum puteti instala Subversion consultati documentatia de instalare a programelor pentru sistemul de operare pe care il folositi. Veti avea nevoie de cel putin versiunea 1.1 a Subversion. Daca compilati Subversion din codul sursa si doriti sa accesati depozitul SVN al KDE cu protocolul Internet "https" (si nu svn+ssh), aveti nevoie de suport pentru SSL si ZLIB, deci va trebui sa folositi optiunile de compilare --with-ssl --with-zlib.

De asemenea puteti instala una dintre multele interfete grafice disponibile pentru Subversion. Acest tutorial a fost scris pentru a-i ajuta pe cei care folosesc doar clientul svn si se refera la actiunile care pot fi realizate cu cunoscutul utilitar cvs.

Obtinerea unui cont de utilizator: daca ati avut un cont de acces la depozitul CVS, acesta a fost adaptat pentru folosirea cu Subversion. Daca nu ati avut un asemenea cont, consultati acest ghid pentru a afla cum puteti obtine unul.

noframe
 
Note
Daca nu va mai amintiti parola contului CVS, exista doua modalitati simple de a o recupera: folositi cvspwd (C) sau cvs-unscramble (Perl).

Structura depozitului SVN al KDE

svn.kde.org/home/kde

Aceasta este adresa depozitului SVN a KDE. Poate fi accesata folosind oricare dintre protocoalele Internet HTTPS sau SVN+SSH, ceea ce inseamna ca parola dumneavoastra nu va putea fi interceptata de catre persoane nedorite.

Semnatura SSL in format MD5 recunoscuta de catre depozitul SVN este:

F6BF EDE2 D016 D1B2   4F18 742E 2C8F B7EF

iar semnatura SSL in format SHA1 este:

e1:e6:41:96:3c:eb:ae:78:e2:73:0d:a2:32:2f:6b:21:13:bf:3d:0f

Daca folositi protocolul svn+ssh, semnatura cheii RSA a serverului este:

86:f3:66:06:20:74:81:d0:1b:b4:2f:25:03:f7:8e:fb

Depozitul este impartit in urmatoarele cataloage principale:

  1. /branches
  2. /tags
  3. /trunk

Interfata online a depozitului o veti gasi la adresa http://websvn.kde.org/


Catalogul principal /trunk

In catalogul principal /trunk veti gasi ultima versiune a surselor KDE. Acestea vor deveni urmatoarea distributie a KDE si a aplicatiilor sale. Tot aici veti gasi si modulul www, care contine paginile sitului principal KDE si ale siturilor afiliate.

/trunk este impartit mai departe in:

  • KDE/
    Versiunea de dezvoltare a KDE (ceea ce va deveni urmatoarea distributie publica). contine urmatoarele module:
    • kdelibs - Librariile KDE esentiale, folosite de catre toate aplicatiile KDE
    • kdebase - Aplicatii KDE esentiale, cum ar fi Centrul de Control KDE, panoul Kicker si navigatorul Konqueror
    • kdeaccessibility - Librariile KDE pentru accesibilitate
    • kdeadmin - Aplicatii de administrare a KDE
    • kdeartwork - Imagini, teme desktop, sunete si alte fisiere multimedia
    • kdebindings - Interfete pentru limbaje de programare altele decat C++
    • kdeedu - Aplicatii educationale
    • kdegames - Jocuri
    • kdegraphics - Aplicatii pentru grafica
    • kdemultimedia - Aplicatii pentru multimedia
    • kdenetwork - Aplicatii pentru retea
    • kdepim - Aplicatii pentru Gestionarea Informatilor Personale
    • kdepimlibs - Librarii folosite de aplicatiile pentru Gestionarea Informatilor Personale
    • kdesdk - SDK pentru KDE
    • kdetoys - Aplicatii de amuzament (nu se incadreaza in categoria jocurilor)
    • kdeutils - Aplicatii de uz general
    • kdevelop - Mediul integrat de dezvoltare a aplicatiilor KDevelop
    • kdevplatform - Platforma de baza a KDevelop
    • kdewebdev - Utilitare KDE pentru dezvoltarea aplicatiilor Web
  • kde-common
Common admin/ directory
  • bugs/
Fisierele Bugzilla
  • developer.kde.org/
Paginile sitului developer.kde.org
  • extragear/
Aplicatii KDE in afara distributiei principale.
  • kdereview/
Locatia temporara a aplicatiilor KDE care sunt considerate a avea calitatea necesara pentru distributie. De aici, odata ce problemele principale au fost rezolvate, aceste aplicatii vor fi mutate fie in /trunk/KDE/ sau in /trunk/extragear/
  • kdesupport/
Aplicatii si librarii auxiliare
  • koffice/
    Grupul de aplicatii pentru birou al KDE, continand:
    • karbon
    • kchart
    • kexi
    • kformula
    • kivio
    • koshell
    • kplato
    • kpresenter
    • krita
    • kspread
    • kugar
    • kword
  • konstruct/
Konstruct, aplicatie de compilare automata
  • l10n-kde3/
Traduceri pentru modulele KDE 3 marcate "unstable" (extragear, playground)
  • l10n-kde4/
Traduceri pentru KDE 4
  • playground/
Applicatii aflate in dezvoltare, dar care nu au calitatea necesara pentru a fi distribuite publicului larg.
  • qt-copy/
Copia librariei Qt de la Trolltech, librarie care sta la baza KDE.
  • tests/
teste pentru khtml, KOffice si ksvg
  • valgrind/
Aplicatia Valgrind, gazduita in depozitul KDE, dar care nu face parte din KDE. Ultimele versiuni ale aplicatiei Valgrind le puteti gasi in propriul lor depozit. Modulele Valgrind aflate in depozitul KDE ajung doar pana la versiunea 2.4.
  • www/
Paginile sitului principal KDE si ale siturilor afiliate. Drepturile de scriere in acest catalog sunt limitate.

Catalogul principal /tags

Acest catalog contine versiunile oficiale ale programelor dezvoltate in depozitul KDE. Fiecare aplicatie are aici un subcatalog continand versiunile numerotate.

Spre exemplu, codul sursa al KDE 3.4.0 se afla in /tags/KDE/3.4.0/.

Catalogul principal /branches

Acest catalog contine ramificatiile create dupa fiecare versiune oficiala.

Cele mai multe aplicatii KDE urmeaza principiul de a adauga noi abilitati (si chiar si texte vizibile) doar in versiunea aflata in dezvoltare — cea pastrata in /trunk/. Totusi, modificarile care repara probleme se aplica tuturor programelor, chiar si dupa publicarea versiunii oficiale.

Pentru a putea realiza acest lucru, in momentul publicarii unei versiuni oficiale este creata o ramificatie a versiunii de dezvoltare din acel moment. Modificarile care repara probleme sunt apoi adaugate la aceasta ramificatie. Aceste ramificatii se afla in /branches/.

Spre exemplu, ramificatia KDE 3.4.x se afla in /branches/KDE/3.4/

Cataloagele din /branches apartin fiecarei aplicatii in parte, cum ar fi akregator/, amarok/, arts/, k3b/, etc. Tot aici veti gasi catalogul KDE/, continand toate versiunile oficiale ale KDE.

Un catalog mai special aflat in /branches este work/. Acest catalog contine asa-numitele "ramificatii de test", adica ramificatii continand cod sursa aflat in teste, uneori chiar experimental. Ramificatiile de test care afecteaza mai multe aplicatii sunt pastrate in /branches/work/, dar ramificatiile care afecteaza doar o singura aplicatie pot fi pastrate in catalogul aplicatiei respective. Dezvoltatorii aplicatiei respective sunt cei care iau decizia folosirii uneia dintre aceste locatii.


Descarcarea modulelor si actualizarea copiei locale

Descarcarea modulelor

Comanda Subversion checkout poate fi folosita pentru a descarca orice modul din depozitul SVN al KDE.

Atentie! Daca descarcati trunk/KDE/ sau branches/KDE/foo/ veti constata ca ati descarcat intreg modulul kde-i18n!

Spre exemplu, daca doriti sa descarcati doar modulul KDevelop din depozit, folositi 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 acceseaza depozitul prin intermediul SSH ar trebui sa foloseasca protocolul svn+ssh, iar utilizatorii CVS care acceseaza depozitul folosind o parola ar trebui sa foloseasca protocolul https in comenzile urmatoare.

svn checkout <protocol>://<utilizator>@svn.kde.org/home/kde/trunk/KDE/kdevelop

Actualizarea copiei locale

Pentru a actualiza copia dumneavoastra, folositi comanda update.

Aceasta comanda functioneaza la fel ca in CVS: schimbati catalogul curent cu cel al copiei locale (pentru cei neexperimentati in folosirea Subversion, copia locala ar trebui sa se afle in catalogul personal) si tastati comanda svn update (sau, mai scurt, svn up).

Cum puteti afla daca un fisier a fost modificat in depozit

Pentru a afla care dintre fisierele locale au fost modificate in depozit, majoritatea utilizatorilor CVS foloseau comanda:

cvs up

si cautau marcajul M; in Subversion puteti afla starea fisierelor locale cu comanda:

svn status

.

Inglobarea modificarilor facute de dumneavoastra in depozit

La fel ca in CVS, inglobarea modificarilor in depozitul SVN se realizeaza 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 in variabila de mediu $SVN_EDITOR pentru a va permite sa introduceti un mesaj asociat cu modificarile dumneavoastra. Alternativ, puteti folosi optiunea -m alaturi de textul mesajului:

svn ci -m "Actualizarea protocolului de comunicatie conform cu standardul HTTP/1.1"

Fisiere ignorate

Subversion pastreaza lista fisierelor ignorate in fiecare catalog. Pentru a edita lista fisierelor ignorate din catalogul curent, folositi comanda:

 svn propedit svn:ignore .

svn va deschide lista in editorul de texte; scrieti numele fisierelor care doriti sa fie ignorate, cate unul pe linie. Cand ati terminat de modificat lista, tastati o comanda de inglobare pentru a trimite modificarea facuta la depozitul SVN.

In CVS, dar nu si in Subversion inca, fisierele ignorate puteau fi specificate intr-o lista globala. Subversion 1.3 va adauga suport pentru aceasta lista globala, dar pana atunci puteti adauga lista de fisiere ignorate la grupul [miscellany] din fisierul ~/.subversion/config (totul pe o singura 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

Lucrul cu mai multe revizii si ramificatii

Spre deosebire de CVS, Subversion nu genereaza un numar de revizie pentru fiecare fisier modificat, ci pentru intreg depozitul. Astfel, un numar de revizie va reprezenta continutul depozitului in momentul in care a fost creata revizia. Cu alte cuvinte, un numar de revizie seamana foarte mult cu o amprenta temporala (de fapt, serverul Subversion foloseste acest fapt pentru a cauta dupa data mai repede).

Spre exemplu, cand acualizati din depozitul KDE, Subversion va va comunica urmatoarele:

Updated to revision 403821.

Aceasta inseamna ca ultima revizie disponibila in depozit la momentul actualizarii a fost 403821. Daca modificati un fisier si il inglobati in depozit, Subversion va actualiza numarul reviziei pe server si va va informa de aceasta actualizare; ca si in CVS, doar fisierele inglobate vor fi actualizate: va trebui sa rulati comanda cvs up petru a actualiza si restul fisierelor.

Daca doriti sa accesati o anumita revizie a unui fisier, puteti folosi optiunea -r alaturi de una din urmatoarele:

  • Numarul reviziei: spre exemplu, folositi -r 403819 pentru a accesa revizia cu numarul 403819
  • BASE: revizia la care ati efectuat ultima actualizare a copiei locale
  • COMMITTED: revizia la care ati facut ultima inglobare a modificarilor dumneavoastra, inainte de BASE
  • PREV: revizia la care ati facut penultima inglobare, inainte de COMMITTED
  • HEAD: ultima revizie disponibila pe server
  • { date }: puteti specifica o data intre acolade, pentru a cauta revizia cea mai apropiata de aceasta data.

Iata un posibil scenariu:

  1. Rulati comanda svn up pentru a actualiza copia locala la ultima revizie disponibila. Sa presupunem ca Subversion v-a anuntat ca a actualizat copia locala la revizia 403821. Aceasta inseamna ca HEAD si BASE au valoarea 403821.
  2. Modificati fisierul README si inglobati modificarea in depozit. Sa presupunem ca Subversion va anunta ca ati creat revizia 403822. Aceasta inseamna ca HEAD, BASE si COMMITTED au valoarea 403822.
  3. Modificati acelasi fisier din nou si inglobati modificarea in depozit. Acum PREV are valoarea 403822, dar HEAD, BASE si COMMITTED au o noua valoare (sa presupunem ca aceasta este 403823).
  4. In continuare, o alta persoana inglobeaza modificarile sale in depozit, iar dumneavoastra va actualizati copia cu aceste modificari. Daca Subversion va anunta ca ati actualizat copia locala la revizia 403824, aceasta inseamna ca HEAD si BASE vor avea noua valoare 403824 dar PREV si COMMITTED raman la vechile valori)
  5. Daca o alta persoana modifica acum fisierul README, HEAD va avea o noua valoare. Pana la urmatoarea actualizare, valorile celorlalte cuvinte cheie raman aceleasi pentru dumneavoastra. In acest moment vom avea HEAD = 403825 (ultima revizie disponibila pe server), BASE = 403824 (ultima revizie la care ati efectuat o actualizare), COMMITTED = 403823 (revizia ultimelor modificari pe care le-ati inglobat in depozit) si PREV = 403822 (revizia penultimelor modificari pe care le-ati inglobat in depozit).

Aceste cuvinte cheie sunt utile atunci cand doriti sa obtineti inregistrari sau diferente intre inglobari in depozit.

Daca doriti sa vedeti diferenta dintre copia dumneavoastra si revizia BASE puteti folosi comanda:

svn diff

Aceasta operatie este rapida deoarece Subversion poate obtine ambele versiuni din copia locala. Evident, nu este nevoie de conexiune la server pentru a efectua aceasta operatie.

Daca doriti sa vedeti diferenta dintre copia dumneavoastra si ultima revizie disponibila pe server puteti folosi comanda:

svn diff -r HEAD

Daca doriti sa vedeti ce s-a schimbat in depozit de la ultima actualizare pe care ati facut-o copiei dumneavoastra puteti folosi comanda:

svn diff -r BASE:HEAD

Daca doriti sa vedeti ultima modificare inglobata inainte de revizia BASE puteti folosi comanda:

svn diff -r PREV:BASE
# sau
svn diff -r PREV:COMMITTED

alcarei format este valabil si pentru comanda svn log.

Linking in subdirectories from other places

Poate doriti sa includeti o copie a unui catalog aflat la o alta locatie, doar pentru a il accesa mai usor, nu pentru a modifica codul continut. Bineinteles, aceasta copie ar trebui sa se actualizeze automat de fiecare daca cand catalogul original este modificat. Subversion ofera suport pentru acest scenariu. Va trebui sa editati proprietatea svn:externals a catalogului local in care doriti sa plasati copia catalogului extern. Folositi comanda:

svn propedit svn:externals .

si introduceti cate o linie pentru fiecare catalog extern ca in exemplul urmator:

libkhalkhi svn://anonsvn.kde.org/home/kde/trunk/playground/pim/khalkhi

La fiecare operatie de actualizare catalogul local libkhalkhi va fi actualizat cu continutul catalogului extern /trunk/playground/pim/khalkhi.

noframe
 
Warning
De retinut ca nu puteti ingloba in depozit modificarile pe care le faceti in copia locala a catalogului extern, aceasta neavand drept de inglobare pe server.


In exemplele de mai sus am folosit protocolul svn://anonsvn.kde.org deoarece serverul anonsvn.kde.org poate fi accesat fara a avea nevoie de cont de utilizator. Protocoalele https: sau svn+ssh: vor putea fi folosite doar daca aveti cont de utilizator pe server. Serverul anonsvn.kde.org are totusi unele mici dezavantaje: nu este tot timpul sincronizat cu serverul svn.kde.org, deci inglobarile efectuate pe svn.kde.org vor aparea putin mai tarziu pe anonsvn.kde.org. De asemenea unele utilitare firewall blocheaza protocolul svn:.

Un caz special al KDE 3 este catalogul admin, care contine utilitarele de compilare specifice KDE 3. Acesta este dezvoltat in /branches/KDE/3.5/kde-common si are cate o copie in fiecare dintre cataloagele principale. Depozitul SVN al KDE este configurat sa permita doar operatii de descarcare din catalogul admin, asadar nu este indicat sa modificati linia

admin https://svn.kde.org/home/kde/branches/KDE/3.5/kde-common/admin

din proprietatea svn:externals a cataloagelor principale.

Informatii suplimentare puteti gasi pe situl wiki al KDE

Consultati aceasta pagina wiki a KDE pentru a afla mai multe informatii despre folosirea utilitarului Subversion cu depozitul SVN al KDE.


KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V.Legal