System zarządzania wersjami II – Mercurial

Transkrypt

System zarządzania wersjami II – Mercurial
Inżynieria Oprogramowania 1
System zarządzania wersjami II
System zarządzania wersjami II – Mercurial
WERSJA DLA STUDENTA B
Na tych zajęciach poznamy zasady pracy z rozproszonym systemem zarządzania wersjami jakim jest
Mercurial (hg). Przećwiczymy podstawowe operacje takie jak klonowanie repozytorium, dodawanie pliku
do repozytorium lokalnego, zatwierdzanie zmian, wypychanie zmian do repozytorium zdalnego,
pobieranie zmian do repozytorium lokalnego oraz uaktualnianie kopii roboczej plików. Aby nasze
ćwiczenia bardziej przypominały rzeczywiste warunki pracy, podzielimy się na dwuosobowe grupy.
Każda para będzie posiadała wspólne zdalne repozytorium do którego będzie można wypychać zmiany
jak i je pobierać. W dalszej części ćwiczeń zajmiemy się tworzeniem rozgałęzień w kodzie (branche) oraz
tworzeniem tagów.
Ćwiczenia wykonywać będziemy za pomocą komend wydawanych z linii poleceń. Takie podejście
pozwoli nam dokładniej prześledzić wynik działania poszczególnych operacji oraz dokładniej zrozumieć
filozofię i zasadę działania systemu Mercurial. Analogicznie jak w przypadku systemu SVNa dostępne są
również inne programy np.: TortoiseHg (nakładka graficzna) oraz plugin do eclipse.
Ćwiczenie 1 Podział na grupy
1. Podzielcie się na dwuosobowe grupy.
2. Każda grupa otrzyma url ze ścieżką do wspólnego repozytorium.
3. Przypiszcie sobie role:
1. Student A – wykonuje zadania z dokumentu dla Studenta A.
2. Student B – wykonuje zadania z dokumentu dla Studenta B.
4. Zadania możecie wykonywać jednocześnie, chyba że w danym kroku ćwiczenia pojawi się
informacja aby poczekać aż drugi student wykona określony krok. W tym momencie należy
spojrzeć na ekran kolegi aby dowiedzieć się jakie polecenia wykonał i jakie miało to
konsekwencje.
Ćwiczenie 2 Klonowanie repozytorium
Polecenie:
hg clone <url> repo
skopiuje zdalne repozytorium.
Następnie należy wylistować zawartość katalogu repo i sprawdzić czy znajduje się w nim katalog .hg
Do pliku .hg/hgrc należy dopisać:
[ui]
username = Imię Nazwisko
Ćwiczenie 3 Dodawanie pliku do repozytorium
1. Pobrać plik HelloWorld.java z systemu Moodle i zapisać go w katalogu z repozytorium.
2. Wykonać polecenie hg status. Wynik komendy wypisze nazwę pliku dodanego do
strona 1 / 4
Inżynieria Oprogramowania 1
System zarządzania wersjami II
katalogu z repozytorium ze znakiem '?' co oznacza że nie jest on znany dla Mercuriala.
3. Wykonać polecenie hg add.
4. Wykonać ponownie polecenie hg status. Tym razem przy nazwie pliku pojawi się litera
'A'. Co oznacza że plik został oznaczony do dodania do systemu zarządzania
wersjami.
5. Poczekaj aż student A wykona krok 7.
6. Wykonaj poleceni hg pull.
7. Wykonaj polecenie hg log. Wynik komendy pokazuje że Student A wprowadził zmiany
zmiany do repozytorium i zostały dodał plik.
8. Wylistuj zawartość repozytorium. Okazuje się że w katalogu nie znajduje się dodany plik.
Dzieje się tak dlatego że polecenie hg pull ściągnęło zawartość zdalnego
repozytorium. Nie uaktualniło jednak kopii roboczej plików.
9. Wykonaj polecenie hg update
10. Wylistuj zawartość repozytorium. Teraz w katalogu powinien znajdować się plik
Fibonacci.java.
11. Zatwierdzić swoje zmianę komendą hg commit -m "Plik <nazwa pliku>".
12. Wyślij zmiany do zdalnego repozytorium hg push
W tym momencie udało Wam się dodać plik do repozytorium oraz zsynchronizować zmiany.
Obie osoby posiadają taką samą kopię plików jaka znajduje się w repozytorium zdalnym.
WAŻNA UWAGA: Przed rozpoczęciem każdego kolejnego ćwiczenia należy zaczekać aż
drugi student ukończy bieżące ćwiczenie. A następnie wykonać polecenia hg pull i hg
update.
Ćwiczenie 4 Jednoczesna modyfikacja pliku
1. Zmodyfikuj plik Fibonacci.java zmieniając imię i nazwisko autora na swoje.
2. Wykonaj poleceni hg commit -m "Zmiana autora"
3. Wykonaj poleceni hg push. W tym momencie zmiany zostały wysłane do repozytorium
zdalnego.
4. Poczekaj aż Student A wykona kroki 5 do 11.
5. Wykonaj polecenie hg pull.
6. Wykonaj polecenie hg up
7. Wykonaj polecenie hg log. Zwróć uwagę w jaki sposób zostały połączone zmiany
wprowadzone przez Ciebie jak i Studenta A.
W tym momencie obie osoby posiadają taką samą kopię plików jaka znajduje się w
repozytorium zdalnym.
Ćwiczenie 5 Wyłączanie plików z zarządzania wersjami
W niektórych sytuacja użytkownik chce trzymać w katalogu zarządzanym przez Mercuriala pliki których
nie chce wersjonować i współdzielić z innymi. Mogą to być np. pliki binarne będące wynikiem
kompilacji.
strona 2 / 4
Inżynieria Oprogramowania 1
System zarządzania wersjami II
1. Utwórz katalog dist.
2. Utwórz plik prywatny.txt
3. Uruchom polecenie hg st. Przy przy pliku dist/prywatyny.txt znajduje się symbol '?'.
4. W edytorze tekstowym otwórz plik .hgignore lub jeśli taki plik nie istnieje utwórz go.
5. Do pliku dopisz linię dist/*
6. Wykonaj polecenie hg st. Tym razem poleceni zignorowało katalog dist, ale pojawiła się
informacja, o pliku .hgignore.
7. Wykonaj polecenie hg add.
8. Zatwierdź zmianę poleceniem hg commit.
9. Wykonaj poleceni hg push.
10. Wykonaj polecenie hg pull.
W tym momencie obie osoby posiadają taką samą kopię plików jaka znajduje się w
repozytorium zdalnym.
Ćwiczenie 6 Komendy rollback i revert
1. Zmodyfikuj plik Fibonacci.java.
2. Wykonaj polecenie hg st. Wynik polecania pokazuje że został zmodyfikowany plik
Fibonacci.java , wskazuje na to litera 'M'.
3. Wykona polecenie hg commit -m "Modyfikacja pliku Fibonacci".
4. Wykonaj polecenie hg st. Polecenie zwróci pustą linię co oznacz że kopia roboczej nie różni się
od lokalnego repozytorium.
5. Wykonaj polecenie hg rollback. Polecenie to wycofuje ostatnio zatwierdzoną zmianę. Zwróć
uwagę że polecenie rollback możne cofnąć tylko ostatnią komendę commit.
6. Wykonaj polecenie hg st. Ponieważ ostatni commit został cofnięty plik znów jest oznaczony
jako zmodyfikowany.
7. Wykonaj polecenie hg revert –all. Polecenie to wycofuje wszystkie zmiany wprowadzone
w plikach i uaktualnia stan kopii roboczej do najnowszej wersji znajdującej się w lokalnym
repozytorium. Zauważ również pojawienie się nowego pliku Fibonacci.java.orig. Mercurial nie
kasuje wycofanego pliku. Plik można skasować.
8. Wykonaj polecenie hg pull i hg up aby pobrać najnowszą wersję ze zdalnego repozytorium.
W tym momencie obie osoby posiadają taką samą kopię plików jaka znajduje się w
repozytorium zdalnym.
Ćwiczenie 7 Tworzenie rozgałęzień – branche
1. Wykonaj polecenie hg branch Branch_B. Polecenie to spowoduje utworzenie nowego
rozgałęzienia o nazwie Branch_B.
2. Wykonaj polecenie hg branch. Poleceni to zwraca nazwę brancha w którym się aktualnie
znajdujemy.
3. Zmodyfikuj plik HelloWorld.java.
strona 3 / 4
Inżynieria Oprogramowania 1
System zarządzania wersjami II
4. Wykonaj polecenie hg commit.
5. Wykonaj poleceni hg push. Polecenie zwróci błąd zapobiegając utworzeniu w zdalnym
repozytorium nowego rozgałęzienia. Tym razem jednak dokładnie o to nam chodzi.
6. Wykonaj polecenie hg push –-new-branch. Informując za pomocą przełącznika iż
utworzenie nowego odgałęzienia jest świadomym posunięciem.
7. Wykonaj polecenie hg up default. Spowoduje to przełączenie się z powrotem do głównego
brancha. Możesz wyświetlić plik aby przekonać się że zmiany które wprowadziłeś w punkcie 4
nie są zawarte w pliku.
8. Wykonaj polecenie hg merge
Branch_B do głównej
Branch_B. Polecenie to spowoduje włączenie zmian z gałęzi
9. Wykonaj polecenie hg commit.
Zauważ po zatwierdzeniu zmian w ostatnim kroku, nie przesyłamy zmian zdalnego
repozytorium. Ponieważ jedna i druga osoba zmodyfikowała gałąź główną, powstała sytuacja
jak w ćw. 3 gdzie należało połączyć „rozdwojoną” gałąź główną. Aby nie powtarzać tego
samego ćwiczenia pominiemy krok przesyłania zmian.
Ćwiczenie 8 Tworzenie tagów
1. Wykonaj polecenie hg tag tag_studenta_B.
2. Zmodyfikuj plik HelloWorld.java.
3. Wykonaj poleceni hg commit
4. Wykonaj polecenie hg up
tag_studenta_B. Zauważ że w kopii roboczej znajduje się
wersja kodu z momentu w którym został utworzony tag.
strona 4 / 4

Podobne dokumenty