Lucian Maran

home

TortoiseHg - mici automatizari personale

13 Sep 2012

Ca si sistem DVCS pentru proiectele software folosesc Mercurial, cu Bitbucket pe post de repository online. TortoiseHg este doar o interfata grafica pentru Mercurial (acesta din urma opereaza in linie de comanda). In plus, ca sa lucrez direct din Visual Studio, folosesc VisualHg. Dupa 2 ani de lucru intr-un astfel de "environment", am ajuns sa identific cateva cerinte care sa-mi usureze (automatizeze) munca. Aceste cerinte dar si solutiile aferente le prezint mai jos:

Cerinte:

Rezolvare:

Presupunand ca e vorba de prima instalare, pasii ar fi urmatorii:

1. Instalez TortoiseHg

Instalarea se face cu "Next, Next". Se instaleaza automat si Mercurial.

2. Aplic setarile globale (automatizari pt. push, pull si autentificare)

Creez in directorul utilizatorului current (Ex: C:Users\lmaran) un fisier de tip text, il numesc mercurial.ini (obligatoriu asa) si adaug urmatorul continut:

# Generated by TortoiseHg setting dialog

[ui]
username = Lucian Maran
ignore = %USERPROFILE%/myhgignore.txt

[tortoisehg]
# automatic update after pull
postpull = update
# automatic push after commit
cipushafter = default

# detalii despre autentificare automata - http://stackoverflow.com/questions/2584407/how-to-save-username-and-password-with-mercurial
[auth]
bitbucket.prefix = https://bitbucket.org
bitbucket.username = lmaran
bitbucket.password = mypsw

Obs:

3. Aplic setarile globale (pt .hgignore)

Creez in acelasi director (Ex: C:Users\lmaran) un fisier de tip text, il numesc myhgignore.txt (calea si numele fisierului pot sa difere, dar trebuie sa corespunda cu valoarea declarata in mercurial.ini) si adaug urmatorul continut:

syntax: glob

*.suo
*.csproj.user
obj
bin

Obs:

In acest moment am facut toate setarile globale. Mai ramane sa cream primul repository local si sa definim pentru acesta calea pentru pull/push de la, respectiv catre, repository-ul extern cu care urmeaza sa se faca sincronizarea (Bitbucket).

4. Creez repository-ul local

Aceasta o pot face in 2 moduri:

A. Prin clonare, daca proiectul exista deja pe Bitbucket:

In folder-ul in care doresti sa fie clonat proiectul lansezi optiunea "Clone" si modifici adresa sursei (vezi si paragraful "Update" putin mai jos):

Dupa ce toate fisierele au fost copiate, la destinatie va apare noul folder si fisierele aferente:

Obs: formatul adresei introdusa putin mai sus are un url standard, in care ultimul segment (in cazul de fata “eta2uapi“) reprezinta numele repository-ului asa cum a fost el introdus pe Bitbucket. Daca e greu de retinut, atunci poti copia acest URL chiar de pe Bitbucket:

Update: Prefixul "lmaran@" (adica numele user-ului cu care se face conectarea la Bitbucket ) inclus in URL-ul prezentat mai sus putea fi omis. Acesta ar fi avut rolul ca, in fereastra de autentificare, numele user-ului sa fie completat automat (sa trebuiasca introdusa doar parola). Cum eu am definit atat user-ul cat si parola in sectiunea de setari globale, prezenta acestei informatii in cadrul URL-ului de conectare nu se mai justifica (fereastra de autentificare nici nu mai apare).

B. Prin "transformarea" unui folder obisnuit (uzual folder-ul care contine proiectul VisualStudio) intr-un repository local.

Pe folder-ul dorit (sau in radacina acestuia) se apeleaza meniul "Create Repository Here"):

Fata de setarile propuse, se debifeaza optiunea care propune crearea unui fisier .hgignore (locul in care sunt specificate fisierele care urmeaza a fi excluse de la versionare). De ce? Pentru ca aceste setari le-am definit odata la nivel global si se aplica pt. toate proiectele. Asta daca nu ai proiecte cu fisiere speciale pe care doresti sa le excluzi.

In acest moment, repository-ul este creat, dar este gol. Dupa un "Commit" (si eventual un "Update Icons") obtinem un repository asemanator cu cel obtinut prin metoda clonarii:

Obs: Folder-ul ".hg" se gaseste in radacina fiecarui repository si contine toate informatiile care fac dintr-un folder obisnuit un folder cu versionare. Simpla stergere a acestuia readuce folder-ul la starea initiala si face sa dispara icoanele care sugereaza versionarea.

5. Aplic setarile locale (Bitbucket path)

Setarile locale se gasesc in fisierul "hgrc" din folderul ".hg" al fiecarui proiect. Acest fisier poate fi editat manual (Notepad) sau din interfata grafica.

La mine, fisierul hgrc contine o singura setare, si anume calea catre repository-ul extern cu care repository-ul local se sincronizeaza:

[paths]
default = https://bitbucket.org/lmaran/eta2uapi

Aceeasi setare poate fi facuta si din interfata grafica (TortoiseHg -> Synchronize):

Obs:

Am documentat aceste lucruri pentru mine, dar poate ajuta si altora!

comments powered by Disqus