Distribuert versjonskontroll med Mercurial

Post on 20-Jan-2015

587 views 4 download

description

Om distribuert versjonskontroll med Mercurial, med erfaringer og eksempler fra utviklingen av Network Administration Visualized

Transcript of Distribuert versjonskontroll med Mercurial

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 <morten.brekkevold@uninett.no>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 <morten.brekkevold@uninett.no>date:        Fri Apr 24 14:30:25 2009 +0200files:       subsystem/lib­python/nav/models/service.pydescription:Fix for LP#366032 (Service availability shown as N/A, should be 100%)

Mostly a copy of changeset afc648a0efb5.

* subsystem/lib­python/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 <morten.brekkevold@uninett.no>date:        Fri Apr 24 14:30:25 2009 +0200files:       subsystem/lib­python/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/lib­python/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