Distribuert versjonskontroll med Mercurial

763 views

Published on

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

Published in: Technology, Business
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
763
On SlideShare
0
From Embeds
0
Number of Embeds
5
Actions
Shares
0
Downloads
3
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Distribuert versjonskontroll med Mercurial

  1. 1. Distribuert versjonskontroll med Mercurial Systemutviklingskollokvium 2009-06-03 Morten Brekkevold
  2. 2. Sentralisert versjonskontroll sentralt repository 2 bruker A bruker B bruker C
  3. 3. Sentralisert versjonskontroll  Krever online aksess til repo  Krever skrivetilgang til sentralt repo for 3 å lage nye grener  Et subsett av distribuert versjonskontroll
  4. 4. Distribuert versjonskontroll evt. offentlig bruker repo 4 A bruker B bruker C
  5. 5. Distribuert versjonskontroll  Stor grad av fleksibilitet i (sam)arbeidsform 5  Trenger ikke et sentralt repo  Ingen trenger skrivetilgang for å lage egne grener  Kan brukes offline
  6. 6. Hvem bruker Mercurial?  Mozilla  OpenJDK 6  Xen hypervisor  Dovecot  NAV  ... en haug med andre ...  Og snart: Python
  7. 7. Et repository  Arbeidskopi og historikk i ett 7
  8. 8. Committe endringer 8
  9. 9. Historikk  Revisions, Changesets, Heads, og Tip 9
  10. 10. Revisjoner  Løpenummer internt i hvert repo  Globalt unik 40-tegns ID, et SHA-1 10 hash av:  Foreldrerevisjonenes ID-er  Innholdsteksten  Gir en viss sikkerhet mot uønsket tukling med repositories
  11. 11. Kloning 11
  12. 12. Endringer 12
  13. 13. Synkronisering  Pull fra Eva 13
  14. 14. Synkronisering  Bob: Merge 14  Bob: Commit
  15. 15. Synkronisering  Alice: Pull 15  Alice: Update
  16. 16. Deling av endringer  Direkte: Pull/push  Lokalt filsystem 16  SSH  HTTP  hg serve  Indirekte  Bundles
  17. 17. NAV og Mercurial  Et sett med “offisielle” grener publisert på web 17  UNINETT-interne har push-aksess til flere grener  Eksterne sluses gjennom release manager (f.eks. UiTø)
  18. 18. Feilretting utvikler A Offisielle repos 18 utvikler (HTTP) B default (trunk) utvikler C features/ipdevpoll series/3.5.x release manager
  19. 19. Ny funksjonalitet utvikler A Offisielle repos 19 utvikler (HTTP) B default (trunk) utvikler C features/ipdevpoll series/3.5.x release manager
  20. 20. Ny point-release utvikler A Offisielle repos 20 utvikler (HTTP) B default (trunk) utvikler C features/ipdevpoll series/3.5.x release manager series/3.6.x
  21. 21. Changesett mvold@voldsminde:default$ hg log ­r d84191af79be changeset:   5515:d84191af79be branch:      3.5.x user:        Morten Brekkevold <morten.brekkevold@uninett.no> date:        Fri Apr 24 14:30:25 2009 +0200 summary:     Fix for LP#366032 (Service availability shown as N/A, should be 100%) 21 mvold@voldsminde:default$ hg log ­v ­r d84191af79be changeset:   5515:d84191af79be branch:      3.5.x user:        Morten Brekkevold <morten.brekkevold@uninett.no> date:        Fri Apr 24 14:30:25 2009 +0200 files:       subsystem/lib­python/nav/models/service.py description: 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. 22. Changesett - detaljer mvold@voldsminde:default$ hg log ­­debug ­r d84191af79be changeset:   5515:d84191af79be89b6903263fd561ac3bca31ce796 branch:      3.5.x parent:      5514:b1c28a8480ac72909c6ca4ffc7bedc5ea6a87377 parent:      ­1:0000000000000000000000000000000000000000 manifest:    5515:65a6d1689dbe8a074ab81583b79ea31732f5e08e user:        Morten Brekkevold <morten.brekkevold@uninett.no> 22 date:        Fri Apr 24 14:30:25 2009 +0200 files:       subsystem/lib­python/nav/models/service.py extra:       branch=3.5.x description: 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. 23. Mercurial Queues (MQ)  Basert på quilt  Smelter sammen versjonskontroll og 23 håndtering av patcher  Påførte patcher ser ut som vanlige changesett  Muliggjør lokal manipulering av historikk
  24. 24. Referanser  http://www.selenic.com/mercurial  http://hgbook.red-bean.com/ 24  http://metanav.uninett.no/hg

×