W robocie zaczynami z mercuriala korzystać (chcemy zakończyć współpracę z svn). Postanowiłem, że spiszę niektóre rzeczy z których korzystamy 
Teraz będziemy się bawić http://mercurial.selenic.com/wiki/MqExtension (łączenie commitów), więc nie przerażajcie się, że są tutaj totalne podstawy.
A więc zaczynamy od początku:
W katalog domowym tworzymy sobie plik .hgrc (można go także stworzyć w katalogu .hg w projekcie)
Moja aktualna zawartość:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| [ui]
ignore = /home/pkobylak/.hgignore # plik z warunkami dla ignore
username = Paweł Kobylak <noose@noose.pl> # moja nazwa użytkownika
style = compact # styl na liście - tylko podstawowe informacje
[extensions]
hgext.graphlog = # pozwala pokazywać graficzny log commitów
# potrzebne do mergy - otworzy się vimdiff
[merge-patterns]
** = filemerge
[merge-tools]
filemerge.executable = vim
filemerge.args = -d $local $other |
Kilka komend (poniżej jeszcze stawianie serwera):
W miejscu w którym odpalamy – zakłada się repozytorium
Dodaje plik1 i plik2 do repozytorium
1
| hg commit -m 'Komentarz' plik1 |
Commituje (lokalnie) plik1. Można podać samo hg commit – wtedy spyta się o komentarz oraz zrobić commit wszystkich zmian
Klonuje repozytorium (taki svn checkout). Przy czym można zrobić clone chociażby z katalogu obok
Pobiera zmiany ze zdalnego repozytorium (z tego z którego clone robiliśmy)
Pobiera zmiany z podanego repozytorium (w robocie robimy hg pull ~user/projekt)
Pobiera zmiany z repo z danego brancha
Wysyła zmiany do zdalnego repo
Tworzy nowy branch o nazwie NAZWA i wciąga wszystkie zmodyfikowane pliki do niego
Robi switch z jednego brancha do drugiego (jeśli istnieje)
Rozwiązuje konflikty (odpala przy okazji hg merge)
Pokazuje graficznie commity
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| @ 6[tip]:3 afa542a627b0 (branch1) 2010-05-20 15:44 +0200 Paweł Kobylak
| Commit6
|
| o 5 11f79fb03f4b (branch2) 2010-05-20 15:43 +0200 Paweł Kobylak
| | commit 5
| |
| o 4:1 eb05044a9a79 (branch2) 2010-05-20 15:41 +0200 Paweł Kobylak
| | commit 4
| |
o | 3 8c6c0b277b88 (branch2) 2010-05-20 15:37 +0200 Paweł Kobylak
| | commit 3
| |
o | 2 8a7bc16edebf (branch1) 2010-05-20 15:16 +0200 Paweł Kobylak
| | commit2
| |
| o 1 069476d6234e (branch2) 2010-05-18 14:28 +0200 Paweł Kobylak
|/ commit1
|
o 0 e0f21d6412e7 2010-05-18 10:28 +0200 Paweł Kobylak
Inicjalizacja |
Fajne
Stawianie serwera (podstawowego). Nie jest to zalecane bo nie ma autoryzacji itp… Ale jak ma się serwerek w domu czy w małej firmie to w sam raz będzie.
Robimy sobie nowy katalog np ~/repos, zassysamy do niego wszystkie repozytoria do których chcemy mieć dostęp. Następnie tworzymy plik hgweb.config o następującej zawartości:
1 2 3 4 5 6
| [collections]
/home/noose/repos/ = /home/noose/repos/ # sciezka do kolekcji repozytoriów
[web]
push_ssl = false # push będzie bez ssl'a
allow_push = * # zezwalamy na push - standardowo jest tylko odczyt |
następnie:
1
| hg serve --webdir-conf ~/repos/hgweb.config -p 8001 -A /sciezka/do/access_logu -E /sciezka/do/error_logu -d |
i wchodzimy na http://localhost:8001
następnie się cieszymy, że wszystko chodzi ;]
Każdy developer klonuje z tego miejsca repozytorium:
1
| hg clone http://host:8001/projekt |
i jest centralne repo
niedługo więcej tekstów