Mecruliar to rozproszony system wersjonowania. Każdy użytkownik posiada lokalnie całe repozytorium. Z repozytorium pobiera lokalną kopię roboczą.
Zwykle jest również centralne (główne) repozytorium potrzebne np. do wykonaia release-ów. Proces pobierania zmian z centralnego repozytorium jest zatem 2-etapowy: najpierw zmiany wędrują do repozytorium lokalnego (pull, fpull), a następnie do kopii roboczej (update, fupdate). Podobnie 2-etapowo przebiega umieszcznie zmian w repozytorium centralnym: commit do repozytorium lokalnego (ci), następnie wypchnięcie do centralengo (push, fpush).
Oczywiście zamiast wypychać (push, fpush) do centralnego można z centranego pobrać (pull, fpull). Analogicznie przy pobieraniu zamiast pull (fpull) z lokalnego, można push (fpush) z centranego.
Polecenia rozpoczynjące się literą 'f' oznaczają działania na całym lesie (forest) repozytoriów. Wesja polecenia bez 'f' działa tylko na jednym repozytorium.
Co daje taka lokalna kopia repozytorium poza dodatkową pracą? Przy większym projekcie (większej liczbie programistów) można wymieniać się ze współpracownikiem zmianami, nie utrudniając pracy innnym, tzn. nie umieszczając zmian w repozytorium centralnym (pull od kolegi lub koleżanki programistki:), a nie z repozytorium centralnego). Gdy wasza wspólna praca nad zadaniem jest zakończona wystarczy wysłać wszystkie zmiany do repozytorium centranego.
hg fclone ssh://hg@komputer/udostepnienie katalog
Polecenie "klonuje" las repozytoriów do katalogu 'katalog' z komputera 'komputer' user 'hg'.
hg fclone zrodlo cel
Polecenie "klonuje" las repozytoriów do katalogu 'cel' z katalogu 'zrodlo'.
hg showcofig
Wyświetla ustawienia repozytorium, w którym się znajdujemy.
Można sprawdzić jakie jest ustawione repozytorium źródłowe (globalne).
hg fpull
Pobiera zmiany ze źródła (wszystkie repozytoria) do repozytorium lokalnego. Wersja robocza nie będzie ich jeszcze zawierać (potrzebne update lub fupdate).
hg fpush
Wysyła zmiany do źródła z repozytorium lokalnego. Zmiany trzeba wcześcniej wprowadzić do lokanego repozytorium za pomocą commit (ci).
hg fin
Wyświetla listę zmian obecnych w źródle, a nieobecnych w repozytoriach lokalnych. Można je pobrać za pomocą fpull.
hg fout
Wyświetla listę zmian obecnych lokalnie, a nieobecnych w źródle.
Można je wprowadzić do źródła za pomocą fpush.
hg st
Wyświetla zmiany w lokalnym repozytorium
hg diff plik
Wyświetla zmiany w pliku w stosunku do wersji w repozytorium
hg ci -m 'Krótki opis zmian' plik1 plik2
Wprowadza zmiany (tworzy changeset) w repozytorium lokalnym.
hg merge
lub
hg merge tip
hg ci -m 'Branch merge' pliki
hg add pliki
Dodaje nowe/usuwa skasowane pliki do repozytorium lokalnego.
Można również użyć opcji -A dla ci (hg ci -A ...)
hg rollback
Cofa ostatnią operację na repozytorium (Uwaga - tylko jedną!)
hg revert
Przywraca kopię lokalną plików do stanu w repozytorium.
hg view
Wyświetla zmiany w postaci graficznej (przydatny Xming).
hg ftrees
Wyświetla repozytoria w lesie, w którym się znajdujemy.
serve -p PORT_NUM
Uruchamia usługę dostępu do naszego repozytorium. Przydatne jeżeli inna osoba nie może się z nami połączyć np. przez SSL.
hg ci -A -m 'opis' `hg st | grep -Ev '(tego_nie_chcemy)|(tego_tez)|(i_tego)|tez_nie' | cut -c3- | tr '\n' ' '`
Przyklad commit-u. Lista plików generowana jest też przez polecenie hg przefiltrowane przez grep (część wyników st jest pomijana) oraz przez cut (aby usunąć dwa pierwsze znaki w każdym wierszu) oraz przez polecenie tr (aby zamienić znaki końca linii na spacje).
hg log | grep -B 4 -A 2 Kowalski
Przyklad - wyświetlanie zmian, których dokonał użytkownik Kowalski.
niedziela, 7 lutego 2010
Subskrybuj:
Komentarze do posta (Atom)
Brak komentarzy:
Prześlij komentarz