Mercurial – branche
Transkrypt
Mercurial – branche
Mercurial Inżynieria Oprogramowania 1 Mercurial – rozproszony system zarządzania wersjami Plan zajęć 1. Wprowadzenie 2. Ćwiczenia 1. Linia poleceń + mercurial Architektura SVN – przypomnienie Źródło: http://hginit.com Architektura Mercuriala Źródło: http://hginit.com Mercurial – hg clone Pobieranie kopii repozytorium hg clone ssh://[email protected] repo updating to branch default 2 files updated, 0 files merged, 0 files removed Struktura repozytorium ls -a . .. .hg Mercurial – podstawowe operacje Tworzenie pliku w katalogu z repozytorium $ touch guac Dodawanie pliku do repozytorium $ hg add adding guac Commit ! $ hg commit Mercurial – podstawowe operacje Modyfikacja pliku Sprawdzanie statusu repozytorium $ hg status M guac Commit ! $ hg commit Aktualny obraz repozytorium Źródło: http://hginit.com Synchronizacja z głównym repo Wgrywanie zmian na serwer $ hg push pushing to http://joel.example.com:8000/ searching for changes adding changesets adding manifests adding file changes added 2 changesets with 2 changes to 1 files Obraz repo po operacji push Źródło: http://hginit.com Mercurial – log $hg log changeset: tag: user: date: summary: 6:218044334c4d tip Michal Thu Oct 06 Modyfikacja 5 changeset: user: date: summary: 5:79c9f9277890 Michal Thu Oct 06 Modyfikacja 4 Mercurial – branche Każda zmiana wprowadzona do repozytorium otrzymuje unikalny identyfikator - changeset $ hg log -l1 changeset: 4:a342a39e6ff0 user: Admin ... Każdy changeset ma swojego przodka. Dlatego historię zmian możemy przedstawić jako graf Mercurial – branche Rozgałęzienie tworzy się wtedy gdy dany changeset ma więcej niż jednego potomka. Po operacji łączenia rozgałęzień w repozytorium pojawi się changeset który posiada więcej niż jednego przodka. Rozgałęzienie w systemie Mercurial nie jest tak jak w przypadku systemu SVN kopią plików. Mercurial – branche Tworzenie nowego brancha $ hg branch eksperyment marked working directory as branch eksperyment Praca w nowym branchu $ $ … $ $ <zmiany w repo> hg commit <zmiany w repo> hg commit Mercurial – branche Mercurial – branche Łączenie branchy $ hg merge merging SomeClass.java 0 files updated, 1 files merged, 0 files removed (branch merge, don't forget to commit) Zmiana została zapisana w kopii roboczej, należy jeszcze wykonać operację commit $ hg ci -m "merge" Mercurial – branche Mercurial – tagi Tworzenie tagów $ hg tag "Wersja 0.1" Lista tagów $ hg tags tip Wersja 0.1 13:92e0e5086ff2 12:ae65cfad513d Informacja o tagach zapisywana jest w pliku $ cat .hgtags ae65cfad513da875102983d2aa2b0eac5b63acd6 Wersja 0.1 Mercurial – tagi W przeciwieństwie do systemy SVN w Mercurialu tag nie jest kopią plików Tag w systemie Mercurial jest etykietą przypisaną do danego changeseta Mercurial – sprawdź sam Tutorial: http://hginit.com Książka ”Mercurial: The Definitive Guide” http://hgbook.red-bean.com/ Repozytorium: http://bitbucket.com