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