Versjonsadministrasjon

Den forvaltning av versjoner (i engelsk  : versjonskontroll eller revisjonskontroll ) består i å håndtere alle versjonene av en eller flere filer (vanligvis i teksten ). Hovedsakelig brukt innen programvareoppretting , og gjelder hovedsakelig styring av kildekoder .

Siden denne aktiviteten er kjedelig og relativt kompleks, er programvarestøtte nesten viktig. For dette formål er det forskjellig programvare for versjonsadministrasjon som, selv om de har vanlige konsepter, hver gir sitt eget ordforråd og sine egne bruksområder. For eksempel er det en rudimentær versjonsmekanisme i Wikipedia  : for hver artikkel er historikken tilgjengelig ved å klikke på koblingen Vis historikk  ; hver linje er en versjon av artikkelen. Et slikt system er lineært, i motsetning til mer forseggjort innholdsadministrasjon, i henhold til en trestruktur.

Versjoner

Når programvaren utvikler seg, kalles hvert trinn i fremdriften en versjon (eller revisjon ). De forskjellige versjonene er nødvendigvis koblet gjennom modifikasjoner ( diff eller patch ): en modifikasjon er et sett med tillegg, modifikasjoner og sletting av data.

Skjematisk vil vi gå fra versjon N til versjon N + 1 ved å bruke en modifikasjon M. Versjonsadministrasjonsprogramvare bruker eller fjerner disse modifikasjonene en etter en for å gi ønsket versjon av filen.

Begrepet "revisjon" foretrekkes noen ganger for ikke å forvirre versjonen av en fil og versjonen av en programvare , som er et distribusjonstrinn i "ferdig" form, det vil si hovedsakelig binært.

Endringer og sett med endringer

En modifikasjon utgjør derfor utviklingen mellom to versjoner. Vi kan derfor snakke om forskjellen mellom to versjoner så vel som om modifikasjoner som fører til en ny versjon.

Vi bruker vanligvis versjonering til et sett med filer som utgjør et prosjekt. Som et resultat er det vanlig å snakke om endringer for en enkelt fil og om et endringssett når det er et spørsmål om prosjektet (og derfor av flere filer). De to utvikler seg faktisk ikke i samme hastighet.

For å illustrere, la oss ta eksemplet med en programvare som heter "Toto". Den består av filene A, B og C. Versjon 1.0 av "Toto" tilsvarer versjoner 1.0 av hver av filene. La oss innrømme at tillegg av en funksjonalitet til "Toto" krever modifisering av A og C. La oss presentere situasjonen ved hjelp av en tabell

versjoner av "Toto" versjoner av A versjoner av B versjoner av C
1.0 1.0 1.0 1.0
1.1 1.1 1.1

Fra et prosjektperspektiv er endringene til A og C en del av den samme pakken.

Depositum og lokale kopier

Filene som er versjonert på denne måten blir gjort tilgjengelige i et depot , det vil si en lagringsplass som administreres av programvare for versjonsadministrasjon .

For å kunne gjøre endringer, må utvikleren først lage en lokal kopi av filene de vil endre, eller av hele depotet. Avhengig av versjonskontrollsystemer, kan noen filer være låst eller skrivebeskyttet for alle eller for visse personer.

Utvikleren gjør sine modifikasjoner og utfører sine første tester lokalt, uavhengig av endringene som er gjort i depotet på grunn av samtidig arbeid fra andre utviklere. Han må deretter forplikte seg (et "innlevering"), det vil si sende inn endringene, slik at de lagres i depotet. Det er her det kan oppstå konflikter mellom det utvikleren ønsker å sende inn og endringene som ble gjort siden forrige lokale kopi. Disse konfliktene må løses ( flette ) for at lappen skal aksepteres i depotet.

Grener

Når forskjellige modifikasjoner skjer uten konflikt, opprettes grener . Det faktum at vi ønsker å samle to grener er en sammenslåing av grener.

Grenene brukes til å tillate:

Rettelsene til den siste versjonen må gjøres på bagasjerommet .

Konflikt med modifikasjoner

I tilfelle teamutvikling, spesielt hvis de er spredt over hele verden, er det nødvendig å dele en felles arbeidsbase, og dette er hele poenget med versjonsstyringssystemer. Imidlertid er det også nødvendig å sikre at utviklingsteamene blir koordinert ved hjelp av kommunikasjonsverktøy, programvare for problemsporing , en dokumentasjonsgenerator og / eller prosjektledelsesprogramvare .

Det er ikke uvanlig at noen endringer er motstridende (for eksempel når to personer har gjort forskjellige endringer i den samme delen av en fil). Dette kalles en modifikasjonskonflikt fordi programvaren for versjonsadministrasjon ikke kan vite hvilken av de to modifikasjonene som skal brukes.

Den konkurransen kontroll  (i) , for å unngå slike konflikter modifikasjoner er et klassisk problem i informatikk: Det finnes for eksempel i styringssystemer database eller system programmering . Den kan håndteres på to forskjellige måter, som begge er brukt på versjonering:

Sentraliserte og desentraliserte systemer

Sentralisert versjonsadministrasjon

Med sentralisert versjoneringsprogramvare, som CVS og Subversion (SVN), er det bare ett versjonsregister som refererer til.

Dette forenkler versjonsadministrasjon, men er begrensende for visse bruksområder, for eksempel å jobbe uten tilkobling til nettverket, eller ganske enkelt når du arbeider med eksperimentelle eller omstridte grener.

Desentralisert versjonsadministrasjon

Desentralisert versjonsadministrasjon består i å se versjonsadministrasjonsverktøyet som et verktøy som lar alle jobbe i sitt eget tempo, ut av synkronisering med andre, og deretter tilby en måte for disse utviklerne å utveksle sitt respektive arbeid. Det er faktisk flere arkiver for samme programvare. Dette systemet brukes mye av gratis programvare .

For eksempel er GNU Arch , Git og Mercurial desentralisert programvare for versjonsadministrasjon.

Fordeler med desentralisert ledelse:

Ulemper:

Programvareutviklingsforfatter Joel Spolsky beskriver desentralisert versjonsadministrasjon som “muligens det største fremskrittet innen programvareutviklingsteknologi de [siste] ti årene. ".

Spesielle funksjoner

Merking eller merking

Dette består i å knytte et navn til en gitt versjon. For noen versjonsverktøy (som CVS ) som administrerer versjoner med lite granularitet (mange ubetydelige endringer), er dette en måte å enkelt finne en meningsfull versjon.

Låsing og varsler

For teamarbeid gir noen programvare for versjonsadministrasjon verktøy for å kommunisere.

For eksempel brukes låsing for å forhindre endring av en fil, mens varselet gir en advarsel til alle andre medlemmer når en fil blir endret.

Revisjonsforslag

Revisjonsforslaget (PR) er handlingen med å be eieren av henvisningsregisteret ta hensyn til endringene du har gjort i gaffelregisteret eller det lokale depotet du vil dele til henvisningsregisteret.

Eksempler på programvare for versjonskontroll

Programvare for versjonskontroll er rikelig. Under UNIX var det SCCS som ga opphav til en annen gratis programvare  : GNU RCS som ble en de facto standard. CVS , som administrerer filtrær bedre enn RCS, har blitt ekstremt populært i fri programvareverden og i bedrifter på grunn av sin enkelhet.

De ble gradvis erstattet av mer moderne alternativer, som Subversion og deretter Git , som nå er mer brukt enn forgjengerne. Annen programvare, som Bazaar eller Mercurial, er alternativer til Git som har betydelige brukerbaser.

I den proprietære verdenen, ClearCase og Synergy (fra IBM ), er Serena Dimensions den vanligste . Det er også Visual Source Safe og Team Foundation Server (fra Microsoft ) som integreres med Visual Studio . Det er også AlienBrain , ofte brukt i videospillverdenen fordi det er spesielt egnet for styring av grafikk og lydressurser . Den WinDev AGL (fra PCSoft ) bruker sin egen versjonshåndtering gjennomføring.

Se også

Relaterte artikler

Referanser

  1. http://msdn.microsoft.com/fr-fr/library/ms189132.aspx
  2. http://tortoisesvn.net/docs/release/TortoiseSVN_fr/tsvn-basics-versioning.html
  3. (in) Joel Spolsky , "  Distribuert versjonskontroll er her for å bli, baby  "Joel på programvare ,17. mars 2010(åpnet 30. juni 2011 )
  4. “  Eclipse Community Survey 2014 Results  ” , på Ian Skerrett ,23. juni 2014(åpnet 29. august 2016 )