Upload
vardo
View
2.476
Download
2
Embed Size (px)
DESCRIPTION
Prezentacja Michała Bugno i Krzysztofa Goja. Trzecie spotkanie Pykonika (http://pykonik.org) [10.04.2008].
Citation preview
StartPodstawowe komendy
BazaarMercurialLinki
Systemy kontroli wersji Bazaar i Mercurial
Michał Bugno Krzysztof Goj
18 kwietnia 2008, Akademia Górniczo-Hutnicza
Michał Bugno, Krzysztof Goj Systemy kontroli wersji Bazaar i Mercurial
StartPodstawowe komendy
BazaarMercurialLinki
VCSTrochę historiiCo to jest DVCS?ZaletyWadyInstalacja
VCS
VCS czyli Version Control System pozwala na
przetrzymywanie historii zmian w plikach
powrót do ewentualnych poprzednich wersji pliku
równoczesną pracę kilku osób przy projekcie
późniejsze rozwiązywanie ewentualnych konfliktów (jeśli tensam plik edytowała więcej niż jedna osoba)
tworzenie gałęzi, czyli odłączanie się w pewnym momencie odgłównego projektu
Michał Bugno, Krzysztof Goj Systemy kontroli wersji Bazaar i Mercurial
StartPodstawowe komendy
BazaarMercurialLinki
VCSTrochę historiiCo to jest DVCS?ZaletyWadyInstalacja
Narzędzia
VCS wyposażony jest w zestaw przydatnych narzędzi, któreułatwiają pracę:
log – wyświetla listę rewizji wraz z ewentualnymikomentarzami do rewizji
diff – pozwala na wyświetlenie różnic między ostatniąrewizją a naszymi aktualnymi zmianami
revert – cofa aktualne zmiany
blame – najciekawsze :) pozwala na podgląd, kto zmieniłktórą linię w pliku
praise – j.w. ale w tym pozytywnym kontekście :)
Michał Bugno, Krzysztof Goj Systemy kontroli wersji Bazaar i Mercurial
StartPodstawowe komendy
BazaarMercurialLinki
VCSTrochę historiiCo to jest DVCS?ZaletyWadyInstalacja
CVS – Concurrent Versions System
stworzony w latach .80
brak atomowych commitów!
brak suportu dla przenoszenia plików/katalogów
obsługiwał już branching
Michał Bugno, Krzysztof Goj Systemy kontroli wersji Bazaar i Mercurial
StartPodstawowe komendy
BazaarMercurialLinki
VCSTrochę historiiCo to jest DVCS?ZaletyWadyInstalacja
SVN - Subversion
stosunkowo młody – 2000 rok
tworzony na CVS potem przeszedł na siebie
cel – kompatybilność z CVS
atomowość
przesyłane różnice a nie całe pliki
properties: executable, ignore, mime-type
popularny
Michał Bugno, Krzysztof Goj Systemy kontroli wersji Bazaar i Mercurial
StartPodstawowe komendy
BazaarMercurialLinki
VCSTrochę historiiCo to jest DVCS?ZaletyWadyInstalacja
D czyli Distributed
bardzo młode projekty – Bazaar, Mercurial, Git 2005 r.
inna ideologia – nie ma centralnego repozytorium
wprowadzają dużo usprawnień względem SVN
troszkę bardziej skomplikowane
Michał Bugno, Krzysztof Goj Systemy kontroli wersji Bazaar i Mercurial
StartPodstawowe komendy
BazaarMercurialLinki
VCSTrochę historiiCo to jest DVCS?ZaletyWadyInstalacja
Co to jest rozproszony system kontroli wersji?
brak centralnego serwera
popularne akcje jak commit, log są lokalne
Michał Bugno, Krzysztof Goj Systemy kontroli wersji Bazaar i Mercurial
StartPodstawowe komendy
BazaarMercurialLinki
VCSTrochę historiiCo to jest DVCS?ZaletyWadyInstalacja
Zalety
niezależność od dostępności serwera(brak internetu != FAIL)
bezpieczeństwo - każda gałąź to osobny projekt wraz zlogami, historią, itp itd.
łatwiejsze dodawanie dużej funkcjonalności do projektuwymagającej dłuższej pracy bez aktualizacji
lepsza współpraca ludzi poza projektem, którzy chcielibydodać coś do projektu
Michał Bugno, Krzysztof Goj Systemy kontroli wersji Bazaar i Mercurial
StartPodstawowe komendy
BazaarMercurialLinki
VCSTrochę historiiCo to jest DVCS?ZaletyWadyInstalacja
Wady
dojrzałość – SVN jest już dobrze otestowany przezużytkowników
przetrzymywanie całej historii zmian – zajętość miejsca
stopień skomplikowania – trochę więcej komend, inna idea
Michał Bugno, Krzysztof Goj Systemy kontroli wersji Bazaar i Mercurial
StartPodstawowe komendy
BazaarMercurialLinki
VCSTrochę historiiCo to jest DVCS?ZaletyWadyInstalacja
Instalacja
Instalacja jest na wszystkich systemach prosta, szybkai bezbolesna.
wszędzie: źródła
GNU/Linux: paczki
Windows: instalator
MacOS X: MacPorts, paczki (Mercurial)
Michał Bugno, Krzysztof Goj Systemy kontroli wersji Bazaar i Mercurial
StartPodstawowe komendy
BazaarMercurialLinki
initaddignorelog i statusdiffrevertbranch/cloneserve
init – rozpoczęcie wersjonowania katalogu
dwa sposoby
Bazaarpykonik bzr init repopykonik ls
repo
pykonik cd reporepo ls -A
.bzr
Mercurialrepo hg initrepo ls -A
.hg
można zamienić bzr ↔ hg
Michał Bugno, Krzysztof Goj Systemy kontroli wersji Bazaar i Mercurial
StartPodstawowe komendy
BazaarMercurialLinki
initaddignorelog i statusdiffrevertbranch/cloneserve
add – dodanie plików
repo mkdir test otherrepo touch a1 a2 test/a{3,4} other/a5
Bazaarrepo bzr add
added a1added a2added otheradded testadded other/a5added test/a3added test/a4
Mercurialrepo hg add
adding a1adding a2adding otheradding testadding other/a5adding test/a3adding test/a4
Michał Bugno, Krzysztof Goj Systemy kontroli wersji Bazaar i Mercurial
StartPodstawowe komendy
BazaarMercurialLinki
initaddignorelog i statusdiffrevertbranch/cloneserve
add – dodanie plików
repo mkdir -p dir/subdirrepo touch file dir/subdir/file
Bazaarrepo bzr add file dir
added fileadded diradded dir/subdiradded dir/subdir/file
Mercurialrepo hg add file dir
adding dir/subdir/file
Michał Bugno, Krzysztof Goj Systemy kontroli wersji Bazaar i Mercurial
StartPodstawowe komendy
BazaarMercurialLinki
initaddignorelog i statusdiffrevertbranch/cloneserve
ignore – ignoruj pliki
Bazaarrepo bzr ignore “*.o”repo bzr ignore “RE:d.pa”repo cat .bzrignore
*.oRE:d.pa
˜/.bazaar/ignore
Mercurialrepo vim .hgignorerepo cat .hgignore
syntax: glob*.osyntax: regexpd.pa
per-user, per-user*project (hgrc)
[ui]ignore = ścieżka do pliku
Michał Bugno, Krzysztof Goj Systemy kontroli wersji Bazaar i Mercurial
StartPodstawowe komendy
BazaarMercurialLinki
initaddignorelog i statusdiffrevertbranch/cloneserve
status – stan kopii roboczej
repo echo “new content” >> a1repo touch a3
Bazaarrepo bzr rm a2
deleted a2
repo bzr statusremoved:a2modified:a1unknown:a3
Mercurialrepo hg rm –after
removing a2
repo hg statusM a1R a2? a3
Michał Bugno, Krzysztof Goj Systemy kontroli wersji Bazaar i Mercurial
StartPodstawowe komendy
BazaarMercurialLinki
initaddignorelog i statusdiffrevertbranch/cloneserve
diff
Bazaarrepo hg diff
diff -r 19ade018a43ea1--- a/a1 Thu Apr 1014:34:08 2008 +0200+++ b/a1 Thu Apr 1014:34:30 2008 +0200@@ -0,0 +1,1 @@+new content
Mercurialrepo bzr diff
=== modified file ’a1’--- a1 2008-04-1012:33:42 +0000+++ a1 2008-04-1012:34:30 +0000@@ -0,0 +1,1 @@+new content
=== removed file ’a2’=== removed file’file’Michał Bugno, Krzysztof Goj Systemy kontroli wersji Bazaar i Mercurial
StartPodstawowe komendy
BazaarMercurialLinki
initaddignorelog i statusdiffrevertbranch/cloneserve
revert – wycofaj zmiany
Bazaarrepo echo stuff >> a1repo bzr rm a2 filerepo bzr revert
+N a2+N fileM a1
repo ls a1*a1 a1.~1~
Mercurialrepo echo stuff >> a1repo hg rm a2 filerepo hg revert
reverting a1undeleting a2reverting file
repo ls a1*a1 a1.orig
Michał Bugno, Krzysztof Goj Systemy kontroli wersji Bazaar i Mercurial
StartPodstawowe komendy
BazaarMercurialLinki
initaddignorelog i statusdiffrevertbranch/cloneserve
commit – stworzenie rewizji
Bazaarrepo bzr ci -m “Init”
Committing to:pykonik/repo/added a1
...added test/a4Commited revision 1.
repo vim a1repo bzr ciOtwiera sesję edytorarepo bzr ci -m “Changes in a1”
Mercurialrepo hg ci -m “Init”repo vim a1repo hg ciOtwiera sesję edytorarepo hg ci -m “Changes in a1”
Michał Bugno, Krzysztof Goj Systemy kontroli wersji Bazaar i Mercurial
StartPodstawowe komendy
BazaarMercurialLinki
initaddignorelog i statusdiffrevertbranch/cloneserve
bzr log – wyświetlenie historii zmian
repo bzr log------------------------------------------------------------
revno: 2
committer: Michal Bugno
branch nick: repo
timestamp: Sun 2008-04-06
22:16:40 +0200
message:
Changes in a1
------------------------------------------------------------
revno: 1
committer: Michal Bugno
branch nick: repo
timestamp: Sun 2008-04-06
21:54:17 +0200
message:
Init Michał Bugno, Krzysztof Goj Systemy kontroli wersji Bazaar i Mercurial
StartPodstawowe komendy
BazaarMercurialLinki
initaddignorelog i statusdiffrevertbranch/cloneserve
hg log – wyświetlenie historii zmian
opcja -v włącza więcej szczegółów
repo hg log -v
changeset: 8:a6ba8f70ce7eba6a73e5715a439b06a9584106eeuser: Krzysiek Goj <[email protected]>date: Thu Apr 10 02:04:19 2008 +0200files: pykonik dvcs.texdescription:Bardzo ciekawe zmiany.
- nowe slajdy- więcej przykładów
Michał Bugno, Krzysztof Goj Systemy kontroli wersji Bazaar i Mercurial
StartPodstawowe komendy
BazaarMercurialLinki
initaddignorelog i statusdiffrevertbranch/cloneserve
branch/clone – stworzenie kopii repozytorium
Bazaarpykonik bzr branch repo other
Branched 2 revision(s).
pykonik cd otherother bzr logother vim a1other bzr mv test dirother bzr st
renamed:test ⇒ dirmodified:a1
other bzr ci -m “. . . ”
Mercurialpykonik hg clone repo other
3 files updated, 0 filesmerged, 0 files removed,0 files unresolved
pykonik cd otherother hg logother vim a1other hg mv dir testother hg st
M a1A test/a3R dir/a3
other hg ci -m “. . . ”
Michał Bugno, Krzysztof Goj Systemy kontroli wersji Bazaar i Mercurial
StartPodstawowe komendy
BazaarMercurialLinki
initaddignorelog i statusdiffrevertbranch/cloneserve
serve
Bazaarpykonik bzr serve –port 2345
listening on port: 2345
Mercurialpykonik hg serve -p 5432pykonik hg serve -v
listening athttp://abulafia:8000/
Michał Bugno, Krzysztof Goj Systemy kontroli wersji Bazaar i Mercurial
StartPodstawowe komendy
BazaarMercurialLinki
Praca zcentralizowaniaPraca zdecentralizowaniaPozostałe
Konflikty
bzr dobrze radzi sobie z rozwiązywaniem (założenia DVCS!)
foo.BASE, foo.THIS, foo.OTHER
znaczniki w plikach – miejsca konfliktu
bzr resolved – oznaczenie konfliktu jako rozwiązany
Michał Bugno, Krzysztof Goj Systemy kontroli wersji Bazaar i Mercurial
StartPodstawowe komendy
BazaarMercurialLinki
Praca zcentralizowaniaPraca zdecentralizowaniaPozostałe
Praca zcentralizowana – czyli bzr jako svn
Bazaar może działać jak svn – istnienie jednego, centralnegorepozytorium, które jest uaktualniane przez użytkowników, każdycommit poprzedzany jest update–em.
branch i checkout – różnice
konwersja branch ⇒ checkout – bzr bindcheckout ⇒ . . .⇒ update ⇒ . . .⇒ commit
Michał Bugno, Krzysztof Goj Systemy kontroli wersji Bazaar i Mercurial
StartPodstawowe komendy
BazaarMercurialLinki
Praca zcentralizowaniaPraca zdecentralizowaniaPozostałe
Gdy brak centralnego serwera. . .
Kiedy jesteśmy odcięci od internetu/sieci nadal jest możliwośćwersjonowania plików w checkout-cie.
bzr ci --local – zapisz zmiany lokalnie
bzr unbind – ckechout ⇒ branchbzr bind ... – branch ⇒ checkout
Michał Bugno, Krzysztof Goj Systemy kontroli wersji Bazaar i Mercurial
StartPodstawowe komendy
BazaarMercurialLinki
Praca zcentralizowaniaPraca zdecentralizowaniaPozostałe
bzr merge – połączenie branch’y
repo bzr ci -m “. . . ”repo bzr branch ../other
M a1R test/ ⇒ dir/All changes appliedsuccessfully.
repo bzr strenamed:test ⇒ dirmodified:a1pending merges:John Doe 2008-04-06renamed and modified
repo bzr ci -m “merged”
Michał Bugno, Krzysztof Goj Systemy kontroli wersji Bazaar i Mercurial
StartPodstawowe komendy
BazaarMercurialLinki
Praca zcentralizowaniaPraca zdecentralizowaniaPozostałe
Praca zdecentralizowana z bzr
main branch – umowny branch główny
własny branch do zmian – w nimedytujemy/naprawiamy/dodajemy
zapisywanie zmian: różne metody (gatekeeper lub zwykłycommit)
Michał Bugno, Krzysztof Goj Systemy kontroli wersji Bazaar i Mercurial
StartPodstawowe komendy
BazaarMercurialLinki
Praca zcentralizowaniaPraca zdecentralizowaniaPozostałe
Ciekawostki
uncommit
/.bazaar/bazaar.conf – email, editor
aliasy do różnych komend, np. bzr commit --strict,status --short
commit --fixes lp:5
pluginy – integracja z innymi VCSamihg – readonlygit – readonlyhgimport – importowanie mercurialasvn – współpraca z bindingami svn
Michał Bugno, Krzysztof Goj Systemy kontroli wersji Bazaar i Mercurial
StartPodstawowe komendy
BazaarMercurialLinki
konfiguracjapush / pullhookiinne
konfiguracja
˜/.hgrc
.hg/hgrc
[ui]username = Krzysiek Goj <[email protected]>ignore = /home/goj/.hgignore-global[extensions]mq =hbisect =
Michał Bugno, Krzysztof Goj Systemy kontroli wersji Bazaar i Mercurial
StartPodstawowe komendy
BazaarMercurialLinki
konfiguracjapush / pullhookiinne
push i pull, czyli współpraca z innymi
repo hg push docelowe reporepo hg pull źródłowe reporepo hg updaterepo hg merge
Michał Bugno, Krzysztof Goj Systemy kontroli wersji Bazaar i Mercurial
StartPodstawowe komendy
BazaarMercurialLinki
konfiguracjapush / pullhookiinne
hooki – jak reagować na wydarzenia i wymuszać niektórerzeczy
pykonik cat .hg/hgrc[hooks]pretxncommit.missing add remove = ! hg status| grep -q ′[?!]′
również moduły pythona
incoming
update
. . . i 10 innych
Michał Bugno, Krzysztof Goj Systemy kontroli wersji Bazaar i Mercurial
StartPodstawowe komendy
BazaarMercurialLinki
konfiguracjapush / pullhookiinne
inne tematy
cgi
bisect
konfiguracja
branch
rozszerzenia
Michał Bugno, Krzysztof Goj Systemy kontroli wersji Bazaar i Mercurial
StartPodstawowe komendy
BazaarMercurialLinki
Linki
Bazaar
http://bazaar-vcs.org
http://launchpad.net
Mercurialhttp://www.selenic.com/mercurial/wiki/
http://hgbook.red-bean.com/http://www.ivy.fr/mercurial/ref/v1.0/Mercurial-Usage-v1.0.pdf
http://sharesource.org/
Michał Bugno, Krzysztof Goj Systemy kontroli wersji Bazaar i Mercurial