Upload
morten-brekkevold
View
587
Download
4
Embed Size (px)
DESCRIPTION
Om distribuert versjonskontroll med Mercurial, med erfaringer og eksempler fra utviklingen av Network Administration Visualized
Citation preview
Distribuert versjonskontroll med MercurialSystemutviklingskollokvium 2009-06-03
Morten Brekkevold
2
Sentralisert versjonskontroll
sentraltrepository
brukerA
brukerB
brukerC
3
Sentralisert versjonskontroll
Krever online aksess til repo Krever skrivetilgang til sentralt repo for
å lage nye grener Et subsett av distribuert
versjonskontroll
4
Distribuert versjonskontroll
brukerA
brukerB
brukerC
evt.offentlig
repo
5
Distribuert versjonskontroll
Stor grad av fleksibilitet i (sam)arbeidsform
Trenger ikke et sentralt repo Ingen trenger skrivetilgang for å lage
egne grener Kan brukes offline
6
Hvem bruker Mercurial?
Mozilla OpenJDK Xen hypervisor Dovecot NAV ... en haug med andre ... Og snart: Python
7
Et repository
Arbeidskopi og historikk i ett
8
Committe endringer
9
Historikk
Revisions, Changesets, Heads, og Tip
10
Revisjoner
Løpenummer internt i hvert repo Globalt unik 40-tegns ID, et SHA-1
hash av: Foreldrerevisjonenes ID-er Innholdsteksten
Gir en viss sikkerhet mot uønsket tukling med repositories
11
Kloning
12
Endringer
13
Synkronisering
Pull fra Eva
14
Synkronisering
Bob: Merge
Bob: Commit
15
Synkronisering
Alice: Pull
Alice: Update
16
Deling av endringer
Direkte: Pull/push Lokalt filsystem SSH HTTP hg serve
Indirekte Bundles
17
NAV og Mercurial
Et sett med “offisielle” grener publisert på web
UNINETT-interne har push-aksess til flere grener
Eksterne sluses gjennom release manager (f.eks. UiTø)
18
Feilretting
Offisielle repos(HTTP)
default(trunk)
series/3.5.x
features/ipdevpoll
utviklerA
utviklerB
utviklerC
releasemanager
19
Ny funksjonalitet
Offisielle repos(HTTP)
default(trunk)
series/3.5.x
features/ipdevpoll
utviklerA
utviklerB
utviklerC
releasemanager
20
Ny point-release
Offisielle repos(HTTP)
default(trunk)
series/3.5.x
features/ipdevpoll
utviklerA
utviklerB
utviklerC
releasemanager
series/3.6.x
21
Changesettmvold@voldsminde:default$ hg log r d84191af79bechangeset: 5515:d84191af79bebranch: 3.5.xuser: Morten Brekkevold <[email protected]>date: Fri Apr 24 14:30:25 2009 +0200summary: Fix for LP#366032 (Service availability shown as N/A, should be 100%)
mvold@voldsminde:default$ hg log v r d84191af79bechangeset: 5515:d84191af79bebranch: 3.5.xuser: Morten Brekkevold <[email protected]>date: Fri Apr 24 14:30:25 2009 +0200files: subsystem/libpython/nav/models/service.pydescription:Fix for LP#366032 (Service availability shown as N/A, should be 100%)
Mostly a copy of changeset afc648a0efb5.
* subsystem/libpython/nav/models/service.py (Service.get_availability.average): Make sure rrd.average returns None values on failure or NaN results. (Service.get_availability): Don't modify result of average calculations, as 0 is a valid return value.
22
Changesett - detaljermvold@voldsminde:default$ hg log debug r d84191af79bechangeset: 5515:d84191af79be89b6903263fd561ac3bca31ce796branch: 3.5.xparent: 5514:b1c28a8480ac72909c6ca4ffc7bedc5ea6a87377parent: 1:0000000000000000000000000000000000000000manifest: 5515:65a6d1689dbe8a074ab81583b79ea31732f5e08euser: Morten Brekkevold <[email protected]>date: Fri Apr 24 14:30:25 2009 +0200files: subsystem/libpython/nav/models/service.pyextra: branch=3.5.xdescription:Fix for LP#366032 (Service availability shown as N/A, should be 100%)
Mostly a copy of changeset afc648a0efb5.
* subsystem/libpython/nav/models/service.py (Service.get_availability.average): Make sure rrd.average returns None values on failure or NaN results. (Service.get_availability): Don't modify result of average calculations, as 0 is a valid return value.
23
Mercurial Queues (MQ)
Basert på quilt Smelter sammen versjonskontroll og
håndtering av patcher Påførte patcher ser ut som vanlige
changesett Muliggjør lokal manipulering av
historikk
24
Referanser
http://www.selenic.com/mercurial http://hgbook.red-bean.com/ http://metanav.uninett.no/hg