Katalogversjoner

I tillegg til å arkivere innholdet av filene, holder Subversion også orden på trestrukturer. Dette er en av hovedgrunnene til at Subversion ble skrevet for å erstatte CVS.

Her er hva dette har å si for deg, som en tidligere CVS-bruker:

La oss snakke mer om det siste punktet. Versjonskontroll av kataloger er et vanskelig problem. Fordi vi ønsker å tillate kopier som inneholder blandede revisjoner, er det lagt inn begrensninger i hvor langt vi kan gå når det gjelder å misbruke denne modellen.

Fra et teoretisk synspunkt definerer vi revisjon 5 av katalogen foo til å bety en spesifikk samling av katalogposter og egenskaper. Tenk deg så at vi begynner å legge til og fjerne filer fra foo, og deretter legger det inn. Det ville være løgn å si at vi fortsatt har revisjon 5 av foo. Imidlertid, hvis vi øker revisjonsnummeret for foo etter innleggingen, ville det også være en løgn; det kan være andre forandringer i foo som vi foreløpig ikke har mottatt, fordi vi ikke har oppdatert enda.

Subversion tar seg av dette problemet ved å i all stillhet undersøke innlagte tillegginger og slettinger i .svn, det sjekkes at alt er i orden i henhold til depotet, og det nye revisjonsnummeret blir korrekt satt for katalogen. Derfor, det er kun etter en oppdatering det er helt sikkert å si at du har en perfekt revisjon av en katalog. Mesteparten av tiden vil arbeidskopien din inneholde uperfekte katalogrevisjoner.

På samme måte vil et problem oppstå hvis du forsøker å legge inn forandringer i egenskapene for en katalog. Normalt ville innleggingen øke det lokale revisjonsnummeret for arbeidskatalogen. Men også her ville det være en løgn, fordi det kan være tillegg og slettinger som katalogen fortsatt ikke har, fordi ingen oppdatering er gjort. Derfor får du ikke lov til å legge inn egenskapsforandringer på en katalog hvis den ikke er oppdatert.

For videre diskusjon om begrensningene på versjonskontroll for kataloger, se “Arbeidskopier med blandede revisjonsnumre”.