Wstęp do Mercuriala

Cytat z wikipedii

Mercurial jest rozproszonym, międzyplatformowym systemem kontroli wersji napisanym głównie w języku programowania Python, jakkolwiek udostępnia funkcję diff (porównanie dwóch wersji) w języku C. Głównymi założeniami Mercuriala były: duża wydajność oraz skalowalność oraz zaawansowane możliwości operacji na gałęziach. Twórcą oraz głównym programistą jest Matt Mackall. Kod źródłowy wydany jest na licencji GNU General Public License.

Konfiguracja

W pliku ~/.hgrc należy ustawić nasz podpis. Jeśli plik nie istnieje, utwórz go.

[ui]
username = John Doe <john@example.com>

gdzie John Doe zamieniamy na własne imię i nazwisko, a <john@example.com> na nasz adres mailowy

Pomoc

Głównym poleceniem mercuriala jest hg. Jako pierwszy parametr podaje się akcję jaką mercurial ma wykonać. Np hg pull lub hg push. Jeśli chcemy uzyskać pomoc dla tych komend, poprzedzamy je poleceniem help : hg help pull, hg help push.

Pierwsze pobranie repozytorium

Aby móc pracować na istniejącym już repozytorium, należy je sklonować poleceniem clone

$ hg clone <adres repozytorium z kodem> [<nazwa katalogu docelowego>]

Tworzenie własnej gałęzi

Po co tworzyć nową gałąź? Jeśli chcemy potestować nie brudząc w głównym kodzie, możemy utworzyć kopię źródeł, które w razie potrzeby wcielimy do dowolnej innej gałęzi.

Klonowanie repozytorium realizowane jest za pomocą komendy clone. Ponieważ klonuje się HEAD musimy przejść do głównego katalogu projektu. Aby sprawdzić gdzie znajduje się ten katalog, należy wykonać polecenie:

$ hg root
/home/user/myproject
$ cd `hg root`
$ hg clone myproject myproject-test
updating working directory
x files updated, x files merged, x files removed, x files unresolved

Pojawił się nowy katalog o nazwie myproject-test. Wszystkie zmiany w nim wprowadzone sa oczywiście niewidoczne dla gałęzi myproject.

Zapisywanie zmian

Zapisywanie zmian odbywa sie w mercurialu za pomocą polecenia commit. Po wydaniu polecenia

$ hg commit

uruchomiony zostanie edytor gdzie podać należy opis zmian. Ponieważ złą praktyką jest nieopisywanie zmian, hg domyślnie nie pozwala na puste opisy.

Jeśli opis jest krótki, można użyć flagi -m i podać go jako parametr:

$ hg commit -m "Jakiś krótki opis zmian"

Wysyłanie zmian na serwer

Jeśli uznamy że chcemy wysłać swój kod na serwer, wystarczy wydać polecenie

$ hg push <adres serwera>

W zależności od ustawień serwera i mercuriala, możemy zostać poproszeni o podanie loginu i/lub hasła.

Łączenie gałęzi // nie do końca to rozumiem.. dość dziwne podejście ma hg

TODO

Może się okazać, że zmiany wprowadzone w gałęzi roboczej są na tyle dobre, że warto je dodać do głównej gałęzi projektu. Aby połączyć dwie gałęzi należy użyć polecenia merge.

Należy pamiętać żeby przed wydaniem polecenia merge należy pobrać projekt do gałęzi do której ma być dołączony

$ cd myproject-test

# wprowadzam jakieś zmiany, zapisuje

$ cd ../myproject
$ hg pull ../myproject-test

$ hg merge

czasami może się okazać ze merge nie jest potrzebne, bo wystarczy sam pull. To chyba zależy od rodzaju zmian i tego czy kolidują ze sobą, ale nie jestem pewien

Linki