Getting Started/Sources/Subversion (ro): Difference between revisions

From KDE TechBase
(incomplete; i will finish it in 12 hours tops)
No edit summary
(11 intermediate revisions by 2 users not shown)
Line 1: Line 1:
{{Template:I18n/Language Navigation Bar|Getting Started/Sources/Using Subversion with KDE}}
 


{{TutorialBrowser|
{{TutorialBrowser|
Line 10: Line 10:
== Introducere ==
== 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 "[http://svnbook.red-bean.com/ Version Control with Subversion]".
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 "[http://svnbook.red-bean.com/ Version Control with Subversion]".


== Primii pasi ==
== Primii paşi ==


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


# Un program client Subversion
# Un program client Subversion
# Un cont de utilizator al depozitului SVN
# Un cont de utilizator al depozitului KDE


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".
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:''' aceasta pagina nu contine instructiuni privind instalarea clientului Subversion. Pentru a afla cum puteti instala Subversion consultati documentatia privind instalarea programelor pentru sistemul dumneavoastra de operare. 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"
'''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"
(si nu svn+ssh), aveti nevoie de suport pentru SSL si ZLIB,
(şi nu svn+ssh), aveţi nevoie de suport pentru SSL şi ZLIB,
deci va trebui sa folositi optiunile de compilare <tt>--with-ssl --with-zlib</tt>.
deci va trebui să folosiţi opţiunile de compilare <tt>--with-ssl --with-zlib</tt>.


De asemenea puteti instala una dintre multele interfete grafice disponibile pentru Subversion.
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 <tt>svn</tt> si se refera la actiunile care pot fi realizate cu cunoscutul utilitar <tt>cvs</tt>.
Acest tutorial a fost scris pentru a-i ajuta pe cei care folosesc doar clientul <tt>svn</tt> şi se referă la acţiunile care pot fi realizate cu cunoscutul utilitar <tt>cvs</tt>.


'''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 [[Contribute/Get_a_SVN_Account|acest ghid]] pentru a afla cum puteti obtine unul.
'''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 [[Contribute/Get_a_SVN_Account|acest ghid]] pentru a afla cum puteţi obţine unul.


{{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|Dacă nu mai amintiţi parola contului CVS, există două modalităţi simple de a o recupera: folosiţi [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 KDE ==


  svn.kde.org/home/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.
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.


Semnatura SSL in format MD5 recunoscuta de catre depozitul SVN este:
Semnătura SSL în format MD5 recunoscută de către depozitul KDE este:
  F6BF EDE2 D016 D1B2  4F18 742E 2C8F B7EF
  F6BF EDE2 D016 D1B2  4F18 742E 2C8F B7EF


iar semnatura SSL in format SHA1 este:
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
  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:
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
  86:f3:66:06:20:74:81:d0:1b:b4:2f:25:03:f7:8e:fb


Depozitul este impartit in urmatoarele cataloage principale:
Depozitul este împărţit în următoarele dosare principale:


# /branches
# /branches
Line 53: Line 53:
# /trunk
# /trunk


Interfata depozitului o veti gasi la adresa [http://websvn.kde.org/ http://websvn.kde.org/]
Interfaţa online a depozitului o veţi găsi la adresa [http://websvn.kde.org/ http://websvn.kde.org/]




=== Catalogul principal /trunk ===
=== Dosarul principal /trunk ===


In catalogul principal <tt>/trunk</tt> veti gasi ultima versiune a surselor KDE.
În dosarul principal <tt>/trunk</tt> veţi găsi ultima versiune a surselor KDE.
Acestea vor deveni urmatoarea distributie a KDE si a aplicatiilor sale. Tot aici veti gasi si modulul <tt>www</tt>,
Acestea vor deveni următoarea distribuţie a KDE şi a aplicaţiilor sale. Tot aici veti găsi şi modulul <tt>www</tt>,
care contine paginile sitului principal KDE si ale siturilor afiliate.
care conţine paginile sitului principal KDE şi ale siturilor afiliate.


<tt>/trunk</tt> este impartit mai departe in:
<tt>/trunk</tt> este împărţit mai departe în:


*<tt>KDE/</tt><br/>Versiunea de dezvoltare a KDE (ceea ce va deveni urmatoarea distributie publica). contine urmatoarele module:
*<tt>KDE/</tt><br/>Versiunea de dezvoltare a KDE (ceea ce va deveni următoarea distribuţie publică) conţine următoarele module:
**'''kdelibs''' - Librariile KDE esentiale, folosite de catre toate aplicatiile KDE
**'''kdelibs''' - Librăriile KDE esenţiale, folosite de către toate aplicaţiile KDE
**'''kdebase''' - Aplicatii KDE esentiale, cum ar fi Centrul de Control KDE, panoul Kicker si navigatorul Konqueror
**'''kdebase''' - Aplicaţii KDE esenţiale, cum ar fi Centrul de Control KDE, panoul Kicker şi navigatorul Konqueror
**'''kdeaccessibility''' - Librariile KDE pentru accesibilitate
**'''kdeaccessibility''' - Librăriile KDE pentru accesibilitate
**'''kdeadmin''' - Aplicatii de administrare a KDE
**'''kdeadmin''' - Aplicaţii de administrare a KDE
**'''kdeartwork''' - Imagini, teme desktop, sunete si alte fisiere multimedia
**'''kdeartwork''' - Imagini, teme desktop, sunete şi alte fişiere multimedia
**'''kdebindings''' - Interfete pentru limbaje de programare altele decat C++
**'''kdebindings''' - Interfeţe pentru limbaje de programare altele decât C++
**'''kdeedu''' - Aplicatii educationale
**'''kdeedu''' - Aplicaţii educaţionale
**'''kdegames''' - Jocuri
**'''kdegames''' - Jocuri
**'''kdegraphics''' - Aplicatii pentru grafica
**'''kdegraphics''' - Aplicaţii pentru grafică
**'''kdemultimedia''' - Aplicatii pentru multimedia
**'''kdemultimedia''' - Aplicaţii pentru multimedia
**'''kdenetwork''' - Aplicatii pentru retea
**'''kdenetwork''' - Aplicaţii pentru reţea
**'''kdepim''' - Aplicatii pentru Gestionarea Informatilor Personale
**'''kdepim''' - Aplicaţii pentru Gestionarea Informaţilor Personale
**'''kdepimlibs''' - Librarii folosite de aplicatiile pentru Gestionarea Informatilor Personale
**'''kdepimlibs''' - Librării folosite de catre aplicaţiile pentru Gestionarea Informaţilor Personale
**'''kdesdk''' - SDK pentru KDE
**'''kdesdk''' - SDK pentru KDE
**'''kdetoys''' - Aplicatii de amuzament (nu se incadreaza in categoria jocurilor)
**'''kdetoys''' - Aplicaţii de amuzament (nu se încadrează în categoria jocurilor)
**'''kdeutils''' - Aplicatii de uz general
**'''kdeutils''' - Aplicaţii de uz general
**'''kdevelop''' - Mediul integrat de dezvoltare a aplicatiilor KDevelop
**'''kdevelop''' - Mediul integrat de dezvoltare a aplicaţiilor, KDevelop
**'''kdevplatform''' - Platforma de baza a KDevelop
**'''kdevplatform''' - Platforma de bază a KDevelop
**'''kdewebdev''' - Utilitare KDE pentru dezvoltarea aplicatiilor Web
**'''kdewebdev''' - Utilitare KDE pentru dezvoltarea aplicaţiilor Web
*<tt>kde-common</tt>
*<tt>kde-common</tt>
:Common admin/ directory
:Dosarul admin/ comun celor trei dosare principale
*<tt>bugs/</tt>
*<tt>bugs/</tt>
:[http://bugs.kde.org/ Bugzilla] files
:Fişierele [http://bugs.kde.org/ Bugzilla]
*<tt>developer.kde.org/</tt>
*<tt>developer.kde.org/</tt>
:The content of developer.kde.org
:Paginile sitului developer.kde.org
*<tt>extragear/</tt>
*<tt>extragear/</tt>
:KDE programs outside the main KDE releases.
:Aplicaţii KDE în afara distribuţiei principale.
*<tt>kdereview/</tt>
*<tt>kdereview/</tt>
:Temporary home for KDE applications that are believed to have reached release-quality. From here, once all major issues are resolved, applications are moved either to <tt>/trunk/KDE/</tt> or to <tt>/trunk/extragear/</tt>
:Locaţia temporară a aplicaţiilor KDE care corespund calitativ aplicaţiilor din distribuţia principală. De aici, odată ce problemele principale au fost remediate, aceste aplicaţii vor fi mutate fie în <tt>/trunk/KDE/</tt> sau în <tt>/trunk/extragear/</tt>
*<tt>kdesupport/</tt>
*<tt>kdesupport/</tt>
:Supporting applications and libraries for KDE
:Aplicaţii şi librării auxiliare
*<tt>koffice/</tt><br/>The KDE Office suite, containing the programs:
*<tt>koffice/</tt><br/>Grupul de aplicaţii pentru birou al KDE, conţinând:
**'''karbon'''
**'''karbon'''
**'''kchart'''
**'''kchart'''
Line 110: Line 110:
**'''kword'''
**'''kword'''
*<tt>konstruct/</tt>
*<tt>konstruct/</tt>
:Konstruct, the KDE build program
:Konstruct, aplicaţie de compilare automată
*<tt>l10n-kde3/</tt>
*<tt>l10n-kde3/</tt>
:Translations for the "unstable" modules of KDE 3 (extragear, playground)
:Traduceri pentru modulele KDE 3 marcate "unstable" (extragear, playground)
*<tt>l10n-kde4/</tt>
*<tt>l10n-kde4/</tt>
:Translations for KDE 4
:Traduceri pentru KDE 4
*<tt>playground/</tt>
*<tt>playground/</tt>
:The KDE playground: applications being developed, but not having yet reached release-quality.
:Applicaţii aflate în dezvoltare, dar care nu au calitatea necesară pentru a fi distribuite publicului larg.
*<tt>qt-copy/</tt>
*<tt>qt-copy/</tt>
:The convenience copy of [http://www.trolltech.com/ Trolltech's] Qt library, which KDE is based upon.
:Copie a librăriei Qt de la [http://www.trolltech.com/ Trolltech], librărie care stă la baza KDE.
*<tt>tests/</tt>
*<tt>tests/</tt>
:khtml, KOffice and ksvg testcases
:teste pentru khtml, KOffice şi ksvg
*<tt>valgrind/</tt>
*<tt>valgrind/</tt>
:The Valgrind application, which is hosted on the KDE repository, but that is not part of KDE itselfNote that newer versions of Valgrind are developed on their own repository. The KDE Valgrind modules only holds up to Valgrind 2.4.
:Aplicaţia Valgrind, gazduită în depozitul KDE, dar care nu face parte din KDE.  Ultimele versiuni ale aplicaţiei Valgrind le puteţi găsi în propriul lor depozit. Modulele Valgrind aflate în depozitul KDE ajung doar până la versiunea 2.4.
*<tt>www/</tt>
*<tt>www/</tt>
:Webpages for the KDE site (and related sites). Write access to this directory is restricted.
:Paginile sitului principal KDE şi ale siturilor afiliate. Drepturile de scriere în acest dosar sunt limitate.


=== The top-level directory <tt>/tags</tt> ===
=== Dosarul principal <tt>/tags</tt> ===


This
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.
directory contains the official releases of the programs maintained and
developed in the KDE repository. Each individual application has a
subdirectory here. Inside it, you will find the release numbers.


For instance, the KDE 3.4.0 code can be found under <tt>/tags/KDE/3.4.0/</tt>.
Spre exemplu, codul sursă al KDE 3.4.0 se află în <tt>/tags/KDE/3.4.0/</tt>.


=== The top-level directory <tt>/branches</tt> ===
=== Dosarul principal <tt>/branches</tt> ===


This directory contains the branch versions of the applications after a major release.
În acest dosar se află ramificaţiile create după fiecare versiune oficială.


Most
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 &#8212;
KDE applications adhere to the philosphy that new features (as well as
cea păstrată în <tt>/trunk/</tt>. Totuşi, modificările care rezolvă probleme se aplică tuturor programelor, chiar şi după publicarea versiunii oficiale.
new user-visible strings) are added only to the next release cycle &#8212;
the one that lives in <tt>/trunk/</tt>. However, bugfixes are applied to all
applications, even after release.


In
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 <tt>/branches/</tt>.
order to do that, a branch is created at the moment of the release,
indicating the state of the files at that time. Bugfixes are then
checked in to those files. Those branches are the ones in <tt>/branches/</tt>.


For instance, the KDE 3.4.x branch can be found under <tt>/branches/KDE/3.4/</tt>
Spre exemplu, ramificaţia KDE 3.4.x se află în <tt>/branches/KDE/3.4/</tt>


The subdirectories you will find inside <tt>/branches</tt> are the
Dosarele din <tt>/branches</tt> sunt asociate fiecărei aplicaţii în parte, cum ar fi <tt>akregator/</tt>, <tt>amarok/</tt>,
application subdirs, like <tt>akregator/</tt>, <tt>amarok/</tt>,
<tt>arts/</tt>, <tt>k3b/</tt>, etc. Tot aici veţi găsi dosarul <tt>KDE/</tt>, conţinând toate versiunile oficiale ale KDE.
<tt>arts/</tt>, <tt>k3b/</tt>, etc. You will also find a <tt>KDE/</tt>
subdir, containing the official KDE releases since time immemorial.


One special subdir is found in <tt>/branches</tt>: <tt>work/</tt>. This
Un dosar mai special aflat în <tt>/branches</tt> este <tt>work/</tt>. 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 <tt>/branches/work/</tt>, 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.
subdir contains the so-called "work branches", that is, branches containing
features being worked on, sometimes highly experimental. Multi-application
work branches always are checked in to <tt>/branches/work/</tt>, but
single-application branches may be found in each application's subdir. That
is a decision left to the developers.






== Checking out and updating ==
== Descărcarea modulelor şi actualizarea copiei locale ==


=== Checking out ===
=== Descărcarea modulelor ===
In order to check out something with Subversion, you use the <tt>checkout</tt> subcommand.
Comanda Subversion <tt>checkout</tt> poate fi folosită pentru a descărca orice modul din depozitul KDE.


'''WARNING:''' If you checkout trunk/KDE/ or branches/KDE/foo/ you will download complete kde-i18n!
'''Atenţie!''' Dacă descărcaţi trunk/KDE/ sau branches/KDE/foo/ veţi constata că aţi descărcat întreg modulul kde-i18n!


Suppose you wanted to check out only KDevelop from the KDE repository. You would do:
Spre exemplu, dacă doriţi să descărcaţi doar modulul KDevelop din depozit, folosiţi comenzile:


CVS command:
pentru CVS:
  cvs -d :pserver:[email protected]:/home/kde login
  cvs -d :pserver:[email protected]:/home/kde login
  cvs -d :pserver:[email protected]:/home/kde checkout kdevelop
  cvs -d :pserver:[email protected]:/home/kde checkout kdevelop


Subversion command:
pentru Subversion:


CVS users currently using ssh access, should use protocol svn+ssh,
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.
CVS users currently using password access, should use protocol https
in the following.


  svn checkout &lt;protocol&gt;://&lt;username&gt;@svn.kde.org/home/kde/trunk/KDE/kdevelop
  svn checkout &lt;protocol&gt;://&lt;utilizator&gt;@svn.kde.org/home/kde/trunk/KDE/kdevelop


=== Updating ===
=== Actualizarea copiei locale ===


In order to update, you use the <tt>update</tt> subcommand.
Pentru a actualiza copia dumneavoastră, folosiţi comanda <tt>update</tt>.


This is no different from CVS: you change into your checked out copy (for those new to this whole process, the checked out copy should be in your Home folder) and issue a <tt>svn update</tt> (or, shorter, <tt>svn up</tt>) command.
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 <tt>svn update</tt> (sau, mai scurt, <tt>svn up</tt>).


== Knowing the status of a file ==
== Cum puteţi afla dacă un fişier a fost modificat în depozit ==


To know which local files you had modified, in CVS most people did
Pentru a afla care dintre fişierele locale au fost modificate în depozit, majoritatea utilizatorilor CVS foloseau comanda:
  cvs up
  cvs up
and looked at the files with '''M''', this does not work with svn so you have to do
şi căutau marcajul '''M'''; în Subversion puteţi afla starea fişierelor locale cu comanda:
  svn status
  svn status
to know the status of the files.
.


== Committing to the repository ==
== Înglobarea modificărilor dumneavoastră în depozit ==


Just like in CVS, committing to the Subversion repository is accomplished
La fel ca în CVS, înglobarea modificărilor în depozit se realizează cu una dintre comenzile <tt>commit</tt> sau <tt>checkin</tt> (<tt>ci</tt> pe scurt).
with the <tt>commit</tt> or <tt>checkin</tt> (<tt>ci</tt> for short) subcommands.


CVS command:
comenzile CVS:
  cvs commit
  cvs commit
  # or
  # sau
  cvs ci
  cvs ci
  # or
  # sau
  cvs ci filename.cpp
  cvs ci numefisier.cpp


Subversion command:
comenzile Subversion:
  svn commit
  svn commit
  # or
  # sau
  svn ci
  svn ci
  # or
  # sau
  svn ci filename.cpp
  svn ci numefisier.cpp


This way, <tt>svn</tt> will launch the editor specified in <tt>$SVN_EDITOR</tt> for you
<tt>svn</tt> va porni editorul de text specificat în variabila de mediu <tt>$SVN_EDITOR</tt> pentru a vă permite să introduceţi un mesaj asociat cu modificările dumneavoastră. Alternativ, puteţi folosi opţiunea <tt>-m</tt> alături de textul mesajului:
to compose the commit message. If you prefer, you can give <tt>svn</tt> the -m
option with your full message:


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


== Ignoring files ==
== Fişiere ignorate ==


Subversion stores ignored files per directory. To edit the ignored
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:
files of the directory you are currently in, do
   svn propedit svn:ignore .
   svn propedit svn:ignore .
that will launch your editor, write there the names of the files you want to
<tt>svn</tt> 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.
ignore, one file per line. Once you are done, do a commit so the ignored list
file gets updated on the server.


A lot of files were ignored in CVS with help from global ignore list which
Î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 {{path|~/.subversion/config}} (totul pe o singură 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 248: 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 şi ramificaţii ==


Unlike CVS, Subversion doesn't generate a revision number for each file
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ă).
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, atunci când acualizaţi copia locală din depozitul KDE, Subversion vă va comunica următoarele:
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
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 <tt>cvs up</tt> petru a actualiza şi restul fişierelor.
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>
Dacă doriţi să accesaţi o anumită revizie a unui fişier, puteţi folosi opţiunea <tt>-r</tt> alături de unul dintre următoarele cuvinte cheie:
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
* Numărul reviziei: spre exemplu, folosiţi -r 403819 pentru a accesa revizia cu numarul 403819
* '''BASE''': the revision you updated to
* '''BASE''': revizia la care aţi efectuat ultima actualizare a copiei locale
* '''COMMITTED''': the revision a file was last modified, before BASE
* '''COMMITTED''': revizia la care aţi efectuat ultima înglobare a modificarilor dumneavoastră (este mai mică decât BASE)
* '''PREV''': the revision of the previous commit to the file before COMMITTED
* '''PREV''': revizia la care aţi efectuat penultima înglobare  (este mai mică decât COMMITTED)
* '''HEAD''': the most recent revision available in the server
* '''HEAD''': ultima revizie disponibilă pe server
* '''{ date }''': between curly brackets, you can specify a date for searching the closest revisions
* '''{ date }''': puteţi specifica o dată între acolade, pentru a căuta revizia cea mai apropiată de această dată.


The following illustrates the evolution of the keywords:
Iată 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.
# Executaţi comanda <tt>svn up</tt> pentru a actualiza copia locală la ultima revizie disponibilă. Să presupunem că Subversion v-a anunţat că a actualizat copia locală la revizia 403821. Aceasta înseamnă că HEAD şi 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.
# Modificaţi fişierul README şi înglobaţi modificarea în depozit. Să presupunem că Subversion v-a anunţat că aţi creat revizia 403822. Aceasta înseamnă că HEAD, BASE şi 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).
# Modificaţi acelaşi fişier din nou şi înglobaţi modificarea în depozit. Acum PREV are valoarea 403822, dar HEAD, BASE şi COMMITTED au valoarea noii revizii (să 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)
# În continuare, o altă persoană înglobează modificările sale în depozit, iar dumneavoastră vă veţi actualiza copia locală cu aceste modificări. Dacă Subversion vă anunţă că aţi actualizat copia locală la revizia 403824, aceasta înseamnă că HEAD şi BASE vor avea noua valoare 403824 dar PREV şi COMMITTED rămân 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)
# Dacă o altă persoană modifică acum fisierul README, HEAD va avea o nouă valoare. Până la următoarea actualizare, valorile celorlalte cuvinte cheie rămân aceleaşi pentru dumneavoastră. În acest moment vom avea HEAD = 403825 (ultima revizie disponibilă pe server), BASE = 403824 (ultima revizie la care aţi efectuat o actualizare), COMMITTED = 403823 (revizia ultimelor modificări pe care le-aţi înglobat în depozit) şi PREV = 403822 (revizia penultimelor modificări pe care le-aţi înglobat în depozit).


Those keywords are useful to retrieve logs and diffs for commits to the
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.
repository.


If you want to see the difference between your working copy and BASE, you
Dacă doriţi să vedeţi diferenţa dintre copia dumneavoastră şi revizia BASE puteţi folosi comanda:
can run:


  svn diff
  svn diff


This is a very fast operation, since Subversion keeps a local copy of BASE.
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.
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
Dacă doriţi să vedeţi diferenţa dintre copia dumneavoastră şi ultima revizie disponibilă pe server puteţi 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:
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
  svn diff -r BASE:HEAD


If you want to see the last change to a file before BASE, you can use:
Dacă doriţi să vedeţi ultima modificare înglobată înainte de revizia BASE puteţi 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.
al cărei format este valabil şi pentru comanda <tt>svn log</tt>.


== Linking in subdirectories from other places ==
== Legături către dosare externe ==


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 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 <tt>svn:externals</tt> a dosarului local în care aţi plasat copia dosarului extern. Folosiţi comanda:
  svn propedit svn:externals .
  svn propedit svn:externals .
and then enter lines of the form
şi introduceţi o linie pentru dosarul extern, ca în exemplul următor:
  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 operaţie de actualizare a copiei locale, <tt>libkhalkhi</tt> va fi actualizat cu conţinutul dosarului 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 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.}}


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.
În exemplele de mai sus am folosit protocolul <tt>svn://anonsvn.kde.org</tt> deoarece serverul anonsvn.kde.org poate fi accesat fără a avea nevoie de cont de utilizator. Protocoalele <tt>https:</tt> sau <tt>svn+ssh:</tt> vor putea fi folosite doar dacă aveţi cont de utilizator. Serverul <tt>anonsvn.kde.org</tt> are totusi unele mici dezavantaje: nu este tot timpul sincronizat cu serverul <tt>svn.kde.org</tt>, deci înglobările efectuate pe <tt>svn.kde.org</tt> vor apărea putţn mai tarziu pe <tt>anonsvn.kde.org</tt>. De asemenea, unele utilitare firewall blochează 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 dosarul <tt>admin</tt>, care conţine utilitarele de compilare specifice KDE 3. Acestea sunt dezvoltate în <tt>/branches/KDE/3.5/kde-common</tt> ş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 <tt>admin</tt>, aşadar nu este indicat să modificaţi 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 dosarelor principale.


== More information on the kde wiki ==
== Informaţii suplimentare puteti găsi pe situl wiki al KDE ==


See [http://wiki.kde.org/tiki-index.php?page=KDE%20Subversion%20HOWTO the KDE wiki] for more
Consultaţi [http://wiki.kde.org/tiki-index.php?page=KDE%20Subversion%20HOWTO această pagină wiki] pentru a afla mai multe informaţii despre folosirea utilitarului Subversion cu depozitul KDE.
information about subversion in KDE

Revision as of 10:55, 15 July 2012


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 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".

Primii paşi

Pentru a accesa depozitul KDE aveţi nevoie de:

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

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).


Structura depozitului KDE

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:

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

Interfaţa online a depozitului o veţi găsi la adresa http://websvn.kde.org/


Dosarul principal /trunk

Î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:

  • KDE/
    Versiunea de dezvoltare a KDE (ceea ce va deveni următoarea distribuţie publică) conţine următoarele module:
    • kdelibs - Librăriile KDE esenţiale, folosite de către toate aplicaţiile KDE
    • kdebase - Aplicaţii KDE esenţiale, cum ar fi Centrul de Control KDE, panoul Kicker şi navigatorul Konqueror
    • kdeaccessibility - Librăriile KDE pentru accesibilitate
    • kdeadmin - Aplicaţii de administrare a KDE
    • kdeartwork - Imagini, teme desktop, sunete şi alte fişiere multimedia
    • kdebindings - Interfeţe pentru limbaje de programare altele decât C++
    • kdeedu - Aplicaţii educaţionale
    • kdegames - Jocuri
    • kdegraphics - Aplicaţii pentru grafică
    • kdemultimedia - Aplicaţii pentru multimedia
    • kdenetwork - Aplicaţii pentru reţea
    • kdepim - Aplicaţii pentru Gestionarea Informaţilor Personale
    • kdepimlibs - Librării folosite de catre aplicaţiile pentru Gestionarea Informaţilor Personale
    • kdesdk - SDK pentru KDE
    • kdetoys - Aplicaţii de amuzament (nu se încadrează în categoria jocurilor)
    • kdeutils - Aplicaţii de uz general
    • kdevelop - Mediul integrat de dezvoltare a aplicaţiilor, KDevelop
    • kdevplatform - Platforma de bază a KDevelop
    • kdewebdev - Utilitare KDE pentru dezvoltarea aplicaţiilor Web
  • kde-common
Dosarul admin/ comun celor trei dosare principale
  • bugs/
Fişierele Bugzilla
  • developer.kde.org/
Paginile sitului developer.kde.org
  • extragear/
Aplicaţii KDE în afara distribuţiei principale.
  • kdereview/
Locaţia temporară a aplicaţiilor KDE care corespund calitativ aplicaţiilor din distribuţia principală. De aici, odată ce problemele principale au fost remediate, aceste aplicaţii vor fi mutate fie în /trunk/KDE/ sau în /trunk/extragear/
  • kdesupport/
Aplicaţii şi librării auxiliare
  • koffice/
    Grupul de aplicaţii pentru birou al KDE, conţinând:
    • karbon
    • kchart
    • kexi
    • kformula
    • kivio
    • koshell
    • kplato
    • kpresenter
    • krita
    • kspread
    • kugar
    • kword
  • konstruct/
Konstruct, aplicaţie de compilare automată
  • l10n-kde3/
Traduceri pentru modulele KDE 3 marcate "unstable" (extragear, playground)
  • l10n-kde4/
Traduceri pentru KDE 4
  • playground/
Applicaţii aflate în dezvoltare, dar care nu au calitatea necesară pentru a fi distribuite publicului larg.
  • qt-copy/
Copie a librăriei Qt de la Trolltech, librărie care stă la baza KDE.
  • tests/
teste pentru khtml, KOffice şi ksvg
  • valgrind/
Aplicaţia Valgrind, gazduită în depozitul KDE, dar care nu face parte din KDE. Ultimele versiuni ale aplicaţiei Valgrind le puteţi găsi în propriul lor depozit. Modulele Valgrind aflate în depozitul KDE ajung doar până la versiunea 2.4.
  • www/
Paginile sitului principal KDE şi ale siturilor afiliate. Drepturile de scriere în acest dosar sunt limitate.

Dosarul principal /tags

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/.

Dosarul principal /branches

Î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.


Descărcarea modulelor şi actualizarea copiei locale

Descărcarea modulelor

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:[email protected]:/home/kde login
cvs -d :pserver:[email protected]:/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

Actualizarea copiei locale

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).

Cum puteţi afla dacă un fişier a fost modificat în depozit

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

.

Înglobarea modificărilor dumneavoastră în depozit

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"

Fişiere ignorate

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

Lucrul cu mai multe revizii şi ramificaţii

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:

  • Numărul reviziei: spre exemplu, folosiţi -r 403819 pentru a accesa revizia cu numarul 403819
  • BASE: revizia la care aţi efectuat ultima actualizare a copiei locale
  • COMMITTED: revizia la care aţi efectuat ultima înglobare a modificarilor dumneavoastră (este mai mică decât BASE)
  • PREV: revizia la care aţi efectuat penultima înglobare (este mai mică decât COMMITTED)
  • HEAD: ultima revizie disponibilă pe server
  • { date }: puteţi specifica o dată între acolade, pentru a căuta revizia cea mai apropiată de această dată.

Iată un posibil scenariu:

  1. Executaţi comanda svn up pentru a actualiza copia locală la ultima revizie disponibilă. Să presupunem că Subversion v-a anunţat că a actualizat copia locală la revizia 403821. Aceasta înseamnă că HEAD şi BASE au valoarea 403821.
  2. Modificaţi fişierul README şi înglobaţi modificarea în depozit. Să presupunem că Subversion v-a anunţat că aţi creat revizia 403822. Aceasta înseamnă că HEAD, BASE şi COMMITTED au valoarea 403822.
  3. Modificaţi acelaşi fişier din nou şi înglobaţi modificarea în depozit. Acum PREV are valoarea 403822, dar HEAD, BASE şi COMMITTED au valoarea noii revizii (să presupunem ca aceasta este 403823).
  4. În continuare, o altă persoană înglobează modificările sale în depozit, iar dumneavoastră vă veţi actualiza copia locală cu aceste modificări. Dacă Subversion vă anunţă că aţi actualizat copia locală la revizia 403824, aceasta înseamnă că HEAD şi BASE vor avea noua valoare 403824 dar PREV şi COMMITTED rămân la vechile valori)
  5. Dacă o altă persoană modifică acum fisierul README, HEAD va avea o nouă valoare. Până la următoarea actualizare, valorile celorlalte cuvinte cheie rămân aceleaşi pentru dumneavoastră. În acest moment vom avea HEAD = 403825 (ultima revizie disponibilă pe server), BASE = 403824 (ultima revizie la care aţi efectuat o actualizare), COMMITTED = 403823 (revizia ultimelor modificări pe care le-aţi înglobat în depozit) şi PREV = 403822 (revizia penultimelor modificări pe care le-aţi înglobat în depozit).

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.

Legături către dosare externe

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.

Informaţii suplimentare puteti găsi pe situl wiki al KDE

Consultaţi această pagină wiki pentru a afla mai multe informaţii despre folosirea utilitarului Subversion cu depozitul KDE.