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

Podobne dokumenty