Deprecated: Function split() is deprecated in /home/www/static/linuxsoft.ro/www.linuxsoft.ro/public_html/wiki/inc/auth.php on line 146 Warning: Cannot modify header information - headers already sent by (output started at /home/www/static/linuxsoft.ro/www.linuxsoft.ro/public_html/wiki/inc/auth.php:146) in /home/www/static/linuxsoft.ro/www.linuxsoft.ro/public_html/wiki/inc/auth.php on line 236 Warning: Cannot modify header information - headers already sent by (output started at /home/www/static/linuxsoft.ro/www.linuxsoft.ro/public_html/wiki/inc/auth.php:146) in /home/www/static/linuxsoft.ro/www.linuxsoft.ro/public_html/wiki/inc/actions.php on line 128 programare:utilizare-scm-mercurial [Linux Soft Wiki]
 

Ce este mercurial ?

HG Mercurial este un SCM “Source Control Management system” cross-platform a carui obiectiv principal este crearea suportului necesar managementului surselor pentru dezvoltatorii de software.

Mercurial este scris in mare parte in Python, doar o mica parte este scrisa in C, exemplu diff-ul din mercurial.

Platforme:

  • Unix-uri
  • Windows
  • Mac OS X

Licenta:GPL

Scopurile sale principale includ:

  • performanta si scalabilitatea
  • lipsa unui server, dezvoltarea complet distribuita
  • manuirea industry solid atata fisierelor text cat si a celor binare
  • facilitati avansate de branching si merge-uire
  • includerea unei interfete integrate web

La ce se poate folosi mercurial ?

  1. Development, Pentru toti cei ce scriu cod stiu exact ca este foarte greu sa mentii codul scris fara un sistem de management al codului. De acea in decursul anilor au fost dezvoltate mai multe solutii bazate pe un sistem centralizat de mentinere a codului (de exmplu CVS, SVN etc) si cu sistem descentralizat (gen mercurial, Git etc) care ajuta la managementul surselor. In acest How-to ne vom concentra exclusiv pe SCM-ul mercurial.
  2. Pentru controlul modificarilor in fisierele de configurare ex. (/etc) o solutie foarte convenabila pentru administratori este sa mentii un sistem curat si sa stii exact cine si ce a modificat acum doua luni la fisierele de configurare, de exemplu setarile retelei, si problema este cu atat mai acuta cand ai o echipa care are de configurat 10-50 servere si trebuie sa se stie exact ce sa configurat, cand, de cine, si de ce.
  3. Pentru controlul versiunilor in scrierea documentatie in ASCII “text”, XML etc.

Ne vom referi in acest tutorial la ultima versiune disponibila mercurial-0.9.4

Instalarea

In Ubuntu

sudo apt-get update && sudo apt-get install mercurial

In Gentoo

emerge sync && emerge mercurial
PS: In cazul de mai sus se va instala versiunea stabila mercurial-0.9.3

Bazele utilizarii mercurial

In exemplu de mai jos va fi prezent managementul fisierelor de configurare in Gentoo din directorul “/etc/conf.d/”

Configurarea intiala a lui mercurial

Implicit mercurial va utiliza numele utilizatorului logat ‘user@localhost’. Este indicat sa personalizam accesul mercurial. Vom vrea fisierul ~/.hgrc unde vom adauga informatiile utilizatorului pentru o mai mare transparenta:

#touch ~/.hgrc
# vi ~/.hgrc
[ui]
utilizator = Author Name <email@address>

Crearea repository-ului initial

Ne mutam in directorul in care vrem sa cream repository-ul si in cazul de mai jos este directorul fisierelor de configurare din Gentoo Linux /etc/conf.d/

#cd /etc/conf.d

Cream un repository pentru directorul /etc/conf.d Numele proiectului va fi preluat din numele directorului si se va numi conf.d.

#sudo hg init

Pentnu a exclude anumite fisiere sa nu fie importate in repository putem utiliza fisierul .hgignore ce se va afla in directorul unde se va crea repository-ul in care adaugam diferite fisiere sau extensii de fisiere pe care le vom exclude din repository. Ex.

cat > /etc/conf.d/.hgignore <<EOF
syntax: glob
*.orig
*.rej
*~
*.o
tests/*.err
syntax: regexp
.*\#.*\#$nu le vrem in repositoriu.
EOF

Acum putem incepe modificarea fisierelor de configurare fara teama de a gresi ceva ireversibil.

Verificarea statutului modificarilor

Dupa ce ati adus modificari in fisierile din /etc/conf.d putem trece la verificarea statutului modificarilor

#hg status

Dupa executarea comenzii ne va fi prezentata o lista de fisiere ce au suferit modificari de la ultima comitere in repository.

Comiterea "Salvarea" modificarilor in repository

Pasul urmator este sa salvam modificarile fisierelor in repository. Ex. Am adus modificari in setarile de retea si DNS in “/etc/conf.d/net”

#hg commit -m "comentariul pentru modificarile aduse in /etc/conf.d"

Backup pentru repositoriu

Backup local

Este bine sa avem o copie a repositoriului in caz de ... ?

#hg clone etc etc-curent

Backup Online

Pentru a mai mare siguranta vom si o copie on-line pe alt server in caz ca va puteti confrunta cu o pana hardware. Vom presupune ca avem deja instalat pe un alt server “ServerB” mercurial si avem access la server prin serviciul ssh.

ServerA#hg clone ssh://user@serverB/home/buckup_serv1/etc
  • Syncronizarea Online

Dupa o perioada de de modificari este bine sa resincronizam repository-urile Vom executa sincronizarea de pe serverulB de backup

ServerB#hg pull --update ssh://user@serverA/
#hg status
#hg commit -m "am sincronizat /etc/conf.d de pe serverul primar pe cel backup"
  • Se poate face sincronizarea si de pe serverul sursa
#hg push ssh://user@serverB/home/backup_serv1/etc

Verificarea modificarilor aduse

In caz ca vrem sa vedem modificarile aduse in timp la /etc/conf.d

#hg log -v

Ne va afisa o lista cu informatii despre modificarile aduse in repository Sau doar sa vedem modificarile versiunii curente

#hg tip

Exemplu de mai sus este pentru fisierele de configurare gentoo dar se poate aplica oricarea alte distributii ex. pentru /etc/init.d

comenzi mercurial

verificarea diferentelor

$hg diff

A reveni la starea initiala inainte de modificare

$hg revert file_name_changed

Adaugarea de noi fisiere in repository

$hg add fisier_nou
etc.

Mercurial este unul din cele mai simple si eficiente SCM dar are si un grad de complexitate pentru cei ce vor mai mult control. Asta a fost o succinta prezentare a lui mercurial SCM de aici puteti incepe sa experimentati si sa cunoasteti adevarata putere a lui mercurial.

Pentru mai multe detalii consultati manualul oficial, sau consultati HOWTO-ul Oficial. Pe site aveti si un Quick Reference Cards

PS: incepeti prin creearea repositoriilor in ~/test si numai dupa ce sunteti obisnuit cu comanda hg puteti trece la lucru mai serioase.

 
programare/utilizare-scm-mercurial.txt · Last modified: 2008/03/02 17:38 by mudrii
 
Publicaţi pe acest Wiki doar conţinut original, nu se acceptă copierea articolelor de pe alte site-uri. Se recomandă folosirea link-urilor in acest caz.
Recent changes RSS feed