Spis treści
Abstrakt
Celem ćwiczenie jest zapoznanie się z system kontroli wersji Mercurial. Ćwiczenie zostało opracowane na potrzebę projektu zespołowego
Najnowsza wersja tego dokumentu dostępna jest pod adresem
http://wmii.uwm.edu.pl/~denisjuk/uwm
Dodaj swoje nazwisko do projektu początkowego, połącz swoje repozytorium z kolegą oraz z moim repozytorium
Ćwiczenie 1: Ustawienie danych identyfikacyjnych użytkownika
Utwórz plik ~/.hgrc
(dla Windows %HOME%\.hgrc
) ze swoimi danymi, korzystając ze wzorca:
[ui] username = John Doe <john@example.com>
W plikju hgrc
nie powiino być odstępów na początku linii. Jeden ze sposobów na utworzenie i edycję nowego pliku"
nano ~/.ghrc
Czy już wiesz, co oznacza tylda?
Ćwiczenie 2: Pobranie wersji początkowej projektu
Pobierz wersję początkową projektu, zwierającą plik Dokumentacja.xml
:
hg clone http://IP.ADRES:8000/hg/projekt my-projekt
project
to jest nazwa twojego projektu na moim komputerze, dopilnuj, żeby wiżą swój projekt. my-project
to jest nazwa (nowego) katalogu z projektem na twoim komputerze. Można podać ścieżkę. Zaleca się wybrać nazwę według swojego gustu.
Ćwiczenie 3: Wprowadzenie zmian
Dokumentacja.xml
dane o swojej osobie
xsltproc
))
Ćwiczenie 4: Synchronizacja repozytoriów
Żeby nie tworzyć wiele gałęzi przed synchronizacją zrób commit. (Polecenie status pozwala zobaczyć bieżący status plików.)
Zsynchronizuj zwoje repozytorium z repozytorium kolegi (pull). W twoim repozytorium zostanie utworzono dwie wersje.
http
).
Ćwiczenie 5: Rozwiązanie kolizji
Przy połączeniu wersji czasami nie ma możliwości połączyć wersje automatycznie. Na przykład, gdy w nich jednocześnie zostały zmienione te same linijki kodu. Taka sytuacja nazywa się kolizją. Przykładowa kolizja (po poleceniu merge) pokazana na poniższym rysunku:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE article [ <!ENTITY nazwa "Nazwa projektu"> ]> <article lang="pl"> <articleinfo> <title>Dokumentacja Projektu <citetitle>&nazwa;</citetitle></title> <author> <<<<<<< local <firstname>Aleksandra</firstname> <surname>Kowalska</surname> ======= <firstname>Aleksander</firstname> <surname>Kowalski</surname> >>>>>>> other </author> </articleinfo> </article>
Żeby rozwiązać kolizję, należy z dwóch wersji utworzyć jedną. Przykład połączenia wersji podany jet niżej:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE article [ <!ENTITY nazwa "Nazwa projektu"> ]> <article lang="pl"> <articleinfo> <title>Dokumentacja Projektu <citetitle>&nazwa;</citetitle></title> <author> <firstname>Aleksandra</firstname> <surname>Kowalska</surname> </author> <author> <firstname>Aleksander</firstname> <surname>Kowalski</surname> </author> </articleinfo> </article>
Po połączeniu i weryfikacji połączonej wersji, należy zaznaczyć kolizję jako rozwiązaną:
hg resolve -m Dokumentacja.xml
Po rozwiązaniu kolizji należy zrobić commit do repozytorium. Powstały plik Dokumentacja.xml.orig
może być usunięty ręcznie.
Istnieją narzędzia (w tym graficzne) do połączenia wersji na etapie merge. Przykładowo, użytkownik może pojąć decyzję którą z trzech wersji (starą, lokalną lub obcą należy zastosować w każdej kolizji. Przy użyciu takich narzędzi w połączonym pliku nie będzie znaczników wersji, jak w naszym przykładzie. Po połączeniu wersji z użyciem takich narzędzi pomocniczych także należy zweryfikować połączoną wersję i zrobić commit
Ćwiczenie 6: Dalsze zmiany
Ćwiczenie 7: Synchronizacja z moim repozytorium
Żeby zsynchronizować swoje repozytorium z głównym (na moim komputerze), należy wysłać do niego zmiany. Jednak w moim repozytorium nie wolno robić nowych gałęzi. Więc synchronizacja powinna się odbywać w dwa etapy:
Zwróć uwagę, że przy synchronizacji z moim repozytorium można w wierszu poleceń nie podawać jego adresu. Czemu? (Podpowiedź: zajrzyj do pliku .hg/hgrc
)
Ćwiczenie 9: Mercurial Hostings
Zobacz listę serwerów, które hostingują projekty w Mercurial. Może wasz zespół zechce założyć konto na jednym z takich hostingów?
Ćwiczenie 10: Inne podobne systemy
Znajdź informację o co najmniej dwóch innych podobnych systemach. Jakie to systemy?
Ćwiczenie 11: Graficzny interfejs