Systemy Kontroli Wersji: Hg (Mercurial) - Podstawy
29.03.2010 04:01
Zawsze gdy rozpoczynam pracę nad projektem zaczynam od utworzenia serwera z obsługą kontroli wersji (ułatwia pracę w grupie) i od tworzenia dokumentacji.
Dzisiaj przedstawię podstawy użytkowania jednego z systemów wersji - Hg - został napisany przez pana Mackalla (o ile dobrze pamiętam) w 2005 roku, jego głównym konkurentem jest Git (Linus Torvalds). Jego głównymi zaletami jest skalowalność i międzyplatformowość - świadczą o tym projekty które korzystają z dostarczanych przez to narzędzie rozwiązań:
+ Symbian (system dla urządzeń przenośnych) + OpenOffice.org (otwarty pakiet biurowy) + CodeIgniter (framework dla PHP4) + TrinityCore (framework dla serwerów World of Warcraft)
Wśród najpopularniejszych i największych darmowych hostingów repozytoriów można wymienić code.google.com(!), a także BitBucket.org - osobiście preferuję drugi z nich.
Z procesem tworzenia konta na wybranym serwerze i repozytorium powinno poradzić sobie 90% osób, których zajęcia wymagają posiadania takiego fjuczera.
Konfiguracja środowiska
Pracę polecam zacząć od modyfikacji pliku notepad.exe %USERPROFILE%\Mercurial.ini (Windows) lub nano ~/.hgrc (Linux) i wpisanie do jego zawartości:
[ui] username = [login z BitBucket]
Pobieranie repozytorium do lokalnej kopii
Gdy już stworzyliśmy własne repozytorium wypada pobrać jego kopię na swój dysk twardy, aby móc dodawać, usuwać, aktualizować jego zawartość. Pobieranie 'pierwszego' zrzutu danego repozytorium wykonujemy za pomocą polecenia
hg clone https://[login]@bitbucket.org/[właściciel]/[repozytorium]/ [katalog docelowy]
Zaznaczam tylko, że katalog docelowy musi być pustym folderem.
Przygotowanie zestawu zmian
Zestaw zmian czyli potocznie aktualizacja ;) Gdy dodamy jakiś plik do naszego lokalnego repozytorium nie jest on automatycznie tworzony na serwerze (a może z jakiegoś powodu go zaraz skasujemy). Oficjalnie do głównego repozytorium jest on dodawany dopiero po wpisaniu do changesetu i aktualizacji repozytorium. Zacznijmy od stworzenia pliku test.txt w swoim katalogu roboczym. Teraz należy dodać w/w plik do pliku zmian więc wydajemy polecenie:
hg add
W momencie gdy nasz pliczek spoczywa już spokojnie w zestawie zmian wypadało by w jakiś prosty do zrozumienia sposób opisać (w kilku słowach) co zostało zmienione. Wykonujemy polecenie:
hg commit
Wpisujemy opis zmian i zapisujemy plik, mogłoby się wydawać, że to już wszystko, ale nie ;) W tym momencie to co zostało zmienione dalej spoczywa tylko w naszym katalogu roboczym - z mojego punktu widzenia jest to plus (pełna kontrola) - jeśli wszystko jest ok, wpisujemy polecenie:
hg push
W końcu nasz changeset znalazł się w repozytorium.
Pobieranie zmian z repozytorium
Pracując w grupie często możemy spotkać się z sytuacją, że w trakcie gdy niema nas przy komputerze zostanie wgrany update do repozytorium. Aktualizacja lokalnej wersji jest jednak znacznie prostsza niż wgrywanie poprawki, ogranicza się do 1 lub 2 komend. #1 (krótka) [code]hg pull -u[/code]
#2 ('długa') [code]hg pull hg update[/code]
To już koniec w części pierwszej, w następnym odcinku Git. PS. Droga administracjo zjada mi zamknięcia nawiasów kwadratorych w znaczniku code.