Strona używa cookies (ciasteczek). Dowiedz się więcej o celu ich używania i zmianach ustawień. Korzystając ze strony wyrażasz zgodę na używanie cookies, zgodnie z aktualnymi ustawieniami przeglądarki.    X

Systemy Kontroli Wersji: Hg (Mercurial) - Podstawy

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ą poleceniahg 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 addW 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 commitWpisujemy 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 pushW 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)hg pull -u#2 ('długa')hg pull hg update

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. 

Komentarze

0 nowych
borzole   4 #1 29.03.2010 12:16

"To już koniec w części pierwszej, w następnym odcinku Git. "
ej come on! daj ze 3 o hg, potem 3 o git, a potem po 3 trochę zaawansowanych o hg/git itd.

GioWDS   13 #2 29.03.2010 12:20

Wedle życzenia, wątek jest na tyle szeroki, że można go opisywać w 6 takich wpisach ;)

M@ster   16 #3 29.03.2010 18:15

Może się nie znam, ale korzystam z repo CodeIgnitera i to jest SVN (SubVersion) a nie Mercurial :)

beevvy   3 #4 29.03.2010 18:27

M@ster napisał:
"Może się nie znam, ale korzystam z repo CodeIgnitera i to jest SVN (SubVersion) a nie Mercurial :)"

To zapodaj linka. Ja widzę Mercuriala:
http://codeigniter.com/downloads/
http://bitbucket.org/ellislab/codeigniter/

GioWDS napisał:
"Zawsze gdy rozpoczynam pracę nad projektem zaczynam od utworzenia serwera z obsługą kontroli wersji [...]"

Nie napisałeś, czy korzystasz raczej z Mercuriala, czy może jednak z Gita, o którym, z tego co widzę, zamierzasz pisać. ;-)

GioWDS   13 #5 29.03.2010 20:01

Zależy od ustaleń ;)
Osobiście preferuje Hg, ale np. projekt taki jak MaNGOS używa Git i szybciej wychodzi forkować do Gita ;)

  #6 29.03.2010 22:11

Proszę bardzo:
http://svn.ellislab.com/CodeIgniter/trunk

Korzystam z TortoiseSVN więc raczej chyba nie jest możliwe by obsługiwał inne ;)

M@ster   16 #7 29.03.2010 22:13

Chociaż faktycznie, w dziale download nie ma SVN tylko Mercurial. Sam nie wiem skąd mam linka do tego repo ale na pewno z tej strony, zresztą niedawno go uaktualniali bo coś tam zmieniali także jest aktualny.

beevvy   3 #8 29.03.2010 23:30

@M@ster:
Z tego, co widzę, to CodeIgniter jest na Mercurialu dopiero od miesiąca i tam jest robiona praca nad nową wersją 2.0, natomiast na SVN-ie są poprawki do gałęzi 1.7.x (dziwna konfiguracja, chociaż np. Kadu ma podobnie).

  #9 30.03.2010 00:27

Hmm 2.0 mówisz :) No mogli by zrobić coś z tym frameworkiem, używam go od dawna ale tempo jego rozwoju czy nawet łatanie dziur jest okropne :\ Praktycznie już jestem na skraju zmiany na coś innego, chociaż nie powiem, CI jest dość łatwo przyswajalny w stosunku do innych.

GioWDS   13 #10 30.03.2010 01:06

@M@ster:
A próbowałeś może KohanaPHP?
Taki fork CI tylko, że dla PHP5 ;)

fenixproductions   6 #11 30.03.2010 09:19

Całkiem niezły opis, jednak niewtajemniczonym łatwiej połapać się pobierając po prostu Mercurial zintegrowany z Tortoise (TortoiseHg?). Dostęp do wielu ustawień i poleceń jest dzięki niemu o niebo przyjemniejszy - ot zwykły prawoklik.

Osobiście pracowałem na wielu systemach kontroli i Hg jako jedyny dobrze wspomina. Ba! nawet używam na domowym PC.

GioWDS   13 #12 30.03.2010 15:32

@fenixproductions
Następna część będzie częściowo o TortoiseHg - z tego względu zainstalowałem właśnie Win7 - niestety trial wersja ;)

beevvy   3 #13 30.03.2010 17:30

GioWDS napisał:
"@M@ster:
A próbowałeś może KohanaPHP?
Taki fork CI tylko, że dla PHP5 ;)"

Też polecam Kohanę. Co prawda w CI nigdy nie pisałem, ale w Kohanie owszem i jest nawet całkiem fajna.

M@ster   16 #14 30.03.2010 18:52

Kohana od czasu kiedy po raz pierwszy ja odkryłem (ok. 1 rok temu) ciągle jest w fazie beta (tzn. wersja 3.x). Dokumentacja jest tylko do 2.x a te odsłony się od siebie jednak różnią. Jakoś zniechęciło mnie to, wiem że bazuje na CI, ale nie lubię takich wiecznie beto-podobnych projektów :\

GioWDS   13 #15 30.03.2010 22:22

@M@aster
zawsze możesz pracować na wersji stabilnej, tj. 2.3.4

Airborn   8 #16 31.03.2010 11:07

trochę offtopowo, ale Kohana tylko w pierwotnej wersji bazowała na CI, od 2.x została już całkowicie przepisana. Co do wersji Ko, 2.3.4 faktycznie ma najlepszą dokumentację, chociaż 2.4 jest już w zasadzie skończona i dopracowywana jest niby tylko dokumentacja przed wypuszczeniem. 3.x to już zupełnie inna bajka, zmiana MVC na HMVC jest moim zdaniem genialna, nieoficjalna wiki + dużo tematów na oficjalnym forum pozwalają na swobodne korzystanie z 3.x (przy okazji, nie nazwał bym jej betą)

attopic: Hg, ma dla mnie tę zaletę, że klient jest wbudowany w netbeans ;)

  #17 31.03.2010 20:18

Hg jest dobry :) mam porównanie z gitem (też całkiem sobie), że nie mam specjalnych wymagań (dopóki jest to DVCS) to Hg wybrałem bo jest oparty na Pythonie (którego również lubię).

Może jakieś info co można tym robić? (ok ja to wiem ale średni odbiorca artykułu już nie koniecznie) Oraz jakie są VCS'y.