kumouksellinen | |
---|---|
Tyyppi | keskitetty versionhallintajärjestelmä [d] , Apache Foundation -projekti [d] jaavoimen lähdekoodin ohjelmistot |
Tekijä | CollabNet [d] |
Kehittäjä | Apache Software Foundation |
Sisään kirjoitettu | C [4] [5] , Python [4] , C++ [6] [7] ja Java [6] [7] |
Käyttöjärjestelmä | GNU/Linux [8] , Microsoft Windows [8] , macOS [8] ja BSD [8] |
Ensimmäinen painos | 20. lokakuuta 2000 [1] |
uusin versio |
|
Luettavat tiedostomuodot | SVN vedosmuoto (v1) [d] , SVN vedosmuoto (v2) [d] , SVN vedosmuoto (v3) [d] ja SVN vedosmuoto (yleinen) [d] |
Luodut tiedostomuodot | SVN vedosmuoto (v1) [d] , SVN vedosmuoto (v2) [d] , SVN vedosmuoto (v3) [d] ja SVN vedosmuoto (yleinen) [d] |
Lisenssi | Apache License 2.0 [9] |
Verkkosivusto | subversion.apache.org _ |
Mediatiedostot Wikimedia Commonsissa |
Subversion [10] (tunnetaan myös nimellä " SVN " [11] ) on ilmainen keskitetty versionhallintajärjestelmä , jonka CollabNet julkaisi virallisesti vuonna 2004 . Vuodesta 2010 lähtien Subversion on ollut Apache Software Foundationin projekti, ja sen virallinen nimi on Apache Subversion (rekisteröity tavaramerkki [12] ).
Projektin tavoitteena kehitystyön alussa oli korvata [13] [14] tuolloin laajalle levinnyt CVS ( Concurrent Versions System ), jota pidetään nykyään vanhentuneena [15] [16] [17] . Subversion toteuttaa kaikki CVS:n pääominaisuudet ja on vapaa joistakin CVS:n puutteista.
Subversionia käyttävät edelleen jotkut avoimen lähdekoodin yhteisöt (mukaan lukien ne, jotka käyttivät CVS :ää ennen ), mutta melkein kaikki suuret projektit ovat siirtyneet DVCS :ään . Subversionin viimeisten käyttäjien joukossa avoimien projektien joukossa on edelleen FreeBSD , mutta he ilmoittivat myös siirtyvänsä Gitiin [18] ja esimerkiksi Free Pascaliin . Subversionia ovat käyttäneet melko pitkään tunnetut projektit, kuten Apache , GCC , FFmpeg , LLVM . Subversionia käytetään myös yksityisissä projekteissa ja yritysmaailmassa, mutta on vaikea arvioida kuinka laajasti. Subversion- isännöintiä , myös avoimen lähdekoodin projekteille, tarjoavat myös suositut isännöintiprojektit SourceForge.net , Tigris.org , Google Code ja BountySource .
Vuonna 2007 Forrester , analytiikkayritys , arvioi Subversionin "yksittäiseksi johtajaksi itsenäisen ohjelmiston konfiguroinnin hallinnan (SCM) -kategoriassa ja vahvaksi tekijäksi Software Configuration and Change Management (SCCM) -kategoriassa" vertaillessaan erilaisten ohjelmistojen etuja ja haittoja. järjestelmät . [19]
Linux -pakettien - Debian [20] ja Ubuntu [21] -jakelutilastojen mukaan Subversionin aktiivisten käyttäjien määrä saavutti huippunsa vuoden 2010 paikkeilla ja on alkanut laskea vuodesta 2016 lähtien. Subversionia käyttäviä projekteja on kuitenkin edelleen enemmän kuin CVS :ää , Mercurialia ja Bazaaria (elokuussa 2019 ).
Virallinen dokumentaatio on sijoitettu [22] O'Reilly Median julkaisemaan kirjaan , joka on vapaasti saatavilla [23] ja jonka kirjoittajat ovat lisänneet uusien SVN-versioiden ilmestyessä. Se julkaisee myös käännöksensä useille kielille, mukaan lukien venäjäksi, mutta huolimatta siitä, että kirjan englanninkieliset versiot kuvaavat nyt versiot 1.8 ja 1.7, on olemassa vain venäjänkielisiä kirjoja, jotka kuvaavat versioita 1.4 asti [24] .
Subversionin kehittäminen aloitettiin vuonna 2000 CollabNetin aloitteesta ja taloudellisella tuella. Projektin alullepanijat halusivat luoda ilmaisen versionhallintajärjestelmän, joka on periaatteessa samanlainen kuin CVS, mutta vailla sen bugeja ja haittoja . Tuolloin ei ollut tämän luokan parhaita ohjelmia ilmaisilla lisenssillä, CVS oli de facto standardi vapaiden ohjelmistojen kehittäjien keskuudessa. Valitessaan sen perustaksi Subversionin kehittäjät toivoivat yksinkertaistavansa kehitystä hyödyntämällä jo hyväksi havaittuja konsepteja ja samalla helpottaen monien CVS-käyttäjien siirtymistä uuteen järjestelmään. [25]
Tärkeimmät tapahtumat Subversionin kehityshistoriassa.
Subversion on keskitetty järjestelmä (toisin kuin hajautetut järjestelmät, kuten Git tai Mercurial ), mikä tarkoittaa, että tiedot tallennetaan yhteen arkistoon. Tietovarasto voi sijaita paikallisella levyllä tai verkkopalvelimella .
Työskentely Subversionissa ei juurikaan eroa työskentelystä muissa keskitetyissä versionhallintajärjestelmissä. Asiakkaat kopioivat tiedostoja varastosta luodakseen paikallisia työkopioita, tekevät sitten muutoksia työkopioihin ja sitovat muutokset varastoon. Useat asiakkaat voivat käyttää tallennustilaa samanaikaisesti. Subversion käyttää ensisijaisesti kopioi-muokkaa-yhdistä- mallia tiedostojen yhteistyöhön . Voit myös käyttää ei-yhdistettäville tiedostoille (eri binääritiedostomuodoille) lukitus-muokkaa-avaa -mallia .
Uusia versioita tallennettaessa käytetään deltapakkausta : järjestelmä löytää erot uuden ja edellisen version välillä ja kirjoittaa vain ne välttäen tietojen päällekkäisyyttä.
WebDAV-käyttöä käytettäessä tuetaan myös läpinäkyvää versiointia - jos jokin WebDAV-asiakasohjelma avautuu kirjoittamista varten ja tallentaa sitten verkkojaettuun tiedostoon tallennetun tiedoston, uusi versio luodaan automaattisesti.
Subversion tarjoaa kaksi vaihtoehtoa arkiston järjestämiseen [40] . Ensimmäisen tyypin arkistoja käytetään Berkeley DB -pohjaisen tietokannan tallentamiseen , toisen tyypin arkistot ovat tavallisia erityismuotoisia tiedostoja (tietojen käyttö järjestetään käyttämällä omia kirjastojaan ilman kolmannen osapuolen tietokantoja). Subversionin kehittäjät kutsuvat tallennustilaa usein "tiedostojärjestelmäksi", minkä vuoksi toista tyyppiä kutsutaan FSFS:ksi, mikä tarkoittaa (versioitua) tiedostojärjestelmää ( englanniksi tiedostojärjestelmä ) (tavallisen) tiedostojärjestelmän päällä.
Molemmat arkistot tarjoavat riittävän luotettavuuden oikein organisoituna [41] (Berkeley DB käyttää tiedostolukkoa, joten sitä ei voi käyttää joissakin verkon tiedostojärjestelmissä, jotka eivät tue lukkoja), jokaisella niistä on omat etunsa ja haittansa. Uskotaan, että FSFS on helpompi määrittää oikein, se vaatii vähemmän huomiota järjestelmänvalvojalta. Lisäksi ennen julkaisua 1.4 Berkeley DB:tä käyttävät arkistot saattoivat tietyissä olosuhteissa päätyä niin kutsuttuun kiilatilaan ; Järjestelmänvalvojan toimenpiteitä vaadittiin sen toiminnan palauttamiseksi.
Julkaisusta 1.2 alkaen FSFS:ää käytetään oletusarvoisesti uusille tallennusvälineille. Version 1.8 myötä Berkeley DB:n käyttö vanhentui [37] . Uudet ominaisuudet, jotka lisätään tuleviin julkaisuihin, eivät välttämättä toimi Berkeley DB:tä käyttävillä palvelimilla. Berkeley DB:n tuki voidaan lopettaa tulevaisuudessa.
Subversion tarjoaa seuraavat tavat päästä käsiksi tietovarastoon:
Kaikkia näitä menetelmiä voidaan käyttää molempien arkistointityyppien (FSFS ja Berkeley DB) kanssa työskentelemiseen. Eri menetelmiä voidaan käyttää samaan aikaan pääsyyn samaan arkistoon.
Käyttäjän näkökulmasta Subversion-arkisto on "kaksiulotteinen" tiedostojärjestelmä . Arkiston objektit ( tiedostot ja hakemistot ) tunnistetaan kahdella " koordinaatilla ": nimellä ja versionumerolla . Toisin sanoen arkisto on joukko tilannekuvia (versioita) tiedostojen ja hakemistojen puusta, joka on indeksoitu versionumerolla. Jokainen tällainen tilannekuva on tavallinen (yksiulotteinen) tiedostojärjestelmä.
Jos on tarpeen ilmoittaa objektin tietty versio, käytetään muotoa: имя@ревизия, esimerkiksi /main.c@29 /main.c-tiedosto versiossa 29. Tällaista nimen selventämiseen käytettyä versiota kutsutaan pegiksi . tarkistus .
Kuvassa Kuvassa 1 on graafinen esitys tiedostojärjestelmästä: pystyakseli vastaa nimijoukkoa, vaaka-akseli vastaa versioiden joukkoa.
TiedostonimetSubversionissa tiedostojärjestelmäobjektin nimi muodostetaan samojen sääntöjen mukaan kuin UNIX-tyyppisissä käyttöjärjestelmissä: juurihakemistoa on vain yksi, polkuelementit erotetaan vinoviivalla ("/"). Tiedostojärjestelmäobjektit ovat tiedostoja ja hakemistoja (sekä symbolisia linkkejä , jotka emuloidaan tavallisista tiedostoista määritteen avulla svn:special).
VersionumerotSubversionin versionumero on luonnollinen luku (tai 0 ensimmäiselle versiolle), joka osoittaa arkiston tilanumeron sen sisältämien tietojen muuttuessa. Jokainen onnistunut toimitus luo täsmälleen yhden uuden version arkistoon, joten N :s versio on arkiston tila N: nnen toimituksen jälkeen .
Subversionissa versio ei kuvaa yksittäisen tiedoston tilaa, vaan koko arkiston tilaa kokonaisuutena. Esimerkiksi versio 32 (katkoviiva kuvassa) on neljän tiedoston ja kahden hakemiston tila, jotka olivat arkistossa tuolloin.
Revisionumero on analoginen ajan kanssa siinä mielessä, että pienemmät versionumerot vastaavat arkiston aikaisempia tiloja ja korkeammat versionumerot vastaavat myöhempiä.
Versionumeroa voidaan pitää eräänlaisena aikaleimana arkiston historiassa. Lisäksi jokaisella versionumerolla on absoluuttinen arvo, joka liittyy korjauksen tekoaikaan ( ominaisuus svn:date ). Versionumeron määrittäminen on kuitenkin kätevämpää kuin ajan määrittäminen, koska aikavyöhykkeiden kanssa ei ole sekaannusta, numeron syöttö on lyhyempi eikä versionumeroa voi muuttaa.
Toiminnalliset ja ydinversiotVersionumeroa käytetään kahdessa eri yhteydessä :
Versiota kutsutaan operatiiviseksi, jos se määrittelee version tai versioiden alueen, johon toimintoa sovelletaan , esimerkiksi:
svn log -r 199:230 http://some.pathTässä esimerkissä komento suoritetaan svn loguseille versioille 199:230, joka on online- versioiden alue.
Kuitenkin vain tiedoston nimen ja online-version määrittäminen voi joskus osoittaa epäselvästi arkistoobjekteja. Esimerkiksi kuvan 2 mukaisessa tilanteessa. 2, seuraavan komennon suorittamisessa on epäselvyyttä:
svn log -r 29:33 http://some.path/bar.txtKomento määrittää joukon online-versioita ( 29:33), mutta kuvassa sinisellä ja vihreällä korostettuja alueita voidaan pitää myös versioalueen tiedoston /bar.txthistoriana 29:33. Tällaisissa tapauksissa on myös tarpeen määrittää pivot -versio epäselvyyden ratkaisemiseksi. Ydinversio on tiedostojärjestelmäobjektin URL -osoitteen lisäksi määritetty versionumero (käyttäen " URL@ревизия" -merkintää). Nimi tulee englanninkielisestä sanasta peg , joka voidaan kääntää sanaksi "tanko" tai "tappi". Pivot-versio merkitsee tilojen ketjun, johon määritetty pari kuuluu, URL@ревизияja identifioi siten yksiselitteisesti arkistoobjektin, johon komentoa tulee soveltaa. Alla olevassa esimerkissä ensimmäinen komento tulostaa kuvassa sinisellä korostetun tarinan ja toinen komento vihreällä korostetun tarinan:
svn log -r 29:33 http://some.path/file.txt@32 svn log -r 29:33 http://some.path/bar.txt@34Kiinnostavan kohteen viimeisin tila tulee määrittää ydinversioksi. Syynä tähän on, että tilaketjua seurataan yksilöllisesti "taaksepäin", mutta ei "eteenpäin". Esimerkiksi URL-osoite, jonka pivot-versio on http://some.path/foo.txt@31 , kuuluu kahteen tilaketjuun (korostettu vihreällä ja harmaalla). Näistä kahdesta ketjusta määritetty URL-osoite osoittaa harmaalle ketjulle, eli kun siirrytään "eteenpäin" ydinversiosta, kopiointitoiminnot ohitetaan.
Toiminnot tiedostojärjestelmässäSubversion-arkistossa [42] oleville tiedostojärjestelmäobjekteille voidaan suorittaa seuraavat toiminnot (katso kuva 1). Hakasulkeet osoittavat toiminnon lyhyen nimeämisen komennon merkinnöissä svn status.
Työkopio on Subversion-asiakasohjelman luoman arkiston paikallinen kopio tiedoista, joka sisältää itse tietojen lisäksi joitain palvelutietoja (piilotettuja hakemistoja nimeltä .svn). Palvelutiedot ovat välttämättömiä työkopion oikean toiminnan kannalta; huoltotiedoissa ei voi muuttaa mitään. Pienin tietoyksikkö, joka voidaan hakea arkistosta työkopiona, on hakemisto. Hakemiston sisältöä ei välttämättä pureta kokonaan: esimerkiksi yksittäiset tiedostot tai alihakemistot voidaan sulkea pois. Yhtä tiedostoa ei kuitenkaan voi kuitata ulos varastosta työkopiona.
Subversion 1.6:n ja aiemman työkopion alihakemistot ovat myös täystyökopiot, koska jokainen hakemisto sisältää sen taloustietonsa (hakemistot .svn). Versiosta 1.7 lähtien jokaisella työkopiolla on vain yksi hakemisto .svnsen juuressa.
Työkopio on itsenäinen siinä mielessä, että Subversion ei tallenna työkopioon liittyviä tietoja sen ulkopuolelle. Siksi yhdellä työkopiolla voit tehdä useita kopioita yksinkertaisella kopioimalla kuluttamatta verkkoliikennettä.
Työkopion palveluhakemistoihin tallennetaan mm. niin sanottu puhdas kopio ( eng. pristine copy ) - työkopion tiedostot muuttamattomassa muodossa sellaisina kuin ne on purettu arkistosta (svn:lle tämä on versio nimeltä BASE). Puhdas kopio mahdollistaa paikallisten muutosten nopean tarkastelun ja palauttamisen ilman arkiston käyttöä. Levyllä olevan työkopion koko on kuitenkin noin kaksi kertaa suurempi (data + puhdas kopio tiedosta) kuin itse tiedon koko. Tämä lähestymistapa johtuu siitä, että levyresurssit ovat halvempia ja helpommin saatavilla kuin tietoverkkoresurssit .
Tyypillisesti työkopion luominen on ensimmäinen ja välttämätön vaihe paikallisten muutosten tekemisessä, koska vain työkopiossa tehdyt muutokset voidaan sitoa arkistoon. Poikkeuksen muodostavat toiminnot, jotka voidaan suorittaa suoraan varastossa ilman työkopion luomista.
TapahtumatTallennus Subversionissa on järjestetty tapahtumien muodossa , joissa on atomiteetti- ja eristysominaisuuksia ACID - ominaisuusjoukosta . Siten versionhallintajärjestelmä takaa arkiston eheyden, johdonmukaisuuden ja saatavuuden milloin tahansa.
Näitä ominaisuuksia ei taata Subversion- työkopiolle - toisin kuin arkisto, se voi olla väli- tai lukitussa tilassa, jos se kaatuu tai keskeytyy (eli se on palautettava komennolla svn cleanuptai luotava uudelleen ennen jatkamista).
Paikalliset ja etäkäskylomakkeetKaikki Subversion-asiakaskomennot voidaan jakaa seuraaviin ryhmiin:
Muodollisesti Subversion ei aseta mitään rajoituksia projektin tiedostorakenteelle - se voi olla mikä tahansa tiedostojärjestelmän objektien nimeämissääntöjen puitteissa. Haarojen ja tunnisteiden kanssa työskentelyn helpottamiseksi on kuitenkin ohjeita. Yksinkertaisimmassa tapauksessa on suositeltavaa luoda vähintään kolme alihakemistoa arkiston juurihakemistoon:
/. trunk branches tagsProjektin koko tiedostorakenne (pääkehitysrivi) tulee olla alihakemistossa trunk, alihakemistossa branchestulee olla projektin haarat ja tagit . Esimerkiksi seuraava arkiston hakemistorakenne: tags
/. trunk branches branch_1 tags tag_1 tag_2
olettaa, että projektilla ( trunk) on yksi haara " branch_1" ja kaksi otsikkoa " tag_1" ja " tag_2". Jokainen näistä hakemistoista ( trunk, branch_1, tag_1ja tag_2) sisältää kopion vastaavasta projektin versiosta.
Jos arkistossa on useita (ali)projekteja, jokaiselle (ali)projektille luodaan seuraava alihakemistorakenne:
/. project1 trunk branches tags project2 trunk branches tagsEli juurihakemisto sisältää projektihakemistoja, ja jokaisella niistä on oma trunk, branches, tags, joka liittyy vain tähän projektiin. Kuvatut tallennushakemistorakenteet ovat vain esimerkkejä, käytännössä tallennus voidaan järjestää kulloiseenkin tapaukseen parhaiten sopivalla tavalla. [43] [44]
Toinen tapa tallentaa useita projekteja on luoda useita arkistoja. Projektit, jotka eivät liity millään tavalla, tulisi sijoittaa eri arkistoihin, koska kopiointi-, siirto- ja yhdistämistoimintoja ei voi suorittaa arkistojen välillä. Useita arkistoja voidaan tarvittaessa yhdistää yhdeksi, jolloin versiohistoria säilyy (tuomalla komennolla svnadmin loadparametrilla --parent-dir).
HaaratSubversion käyttää "tiedosto"-mallia (sama kuin Perforce [45] ) haarojen ja tunnisteiden toteuttamiseen, eli haara on vain hakemisto (voit myös tehdä haaran yhdestä tiedostosta hakemiston sijaan). Uusi haara luodaan komennolla svn copy. Haara voidaan luoda mihin tahansa arkistohakemistoon, mutta on järkevää noudattaa yllä kuvattuja käytäntöjä uusien haarojen luomisessa. Lisätietoja haaroista on kohdassa Haaroittaminen ja yhdistäminen .
TunnisteetNimikkeen luominen tapahtuu myös komennolla svn copy, eli se on teknisesti sama kuin haaran luominen. Ainoa ero on käyttötavassa: oletetaan, että kukaan ei muuta tarran tietoja (sitoudu siihen). Esimerkiksi kuvassa fig. 1 tunniste luotu versiossa 29: hakemisto /trunkversiosta 27 kopioitu nimellä /tags/R1. Jos et nyt muuta hakemiston tietoja /tags/R1, se pysyy ikuisesti tarkana kopiona hakemistosta /trunk@27, eli se on etiketti .
Subversionissa käytetty tunnisteiden käsite eroaa muiden versionhallintajärjestelmien tagien käsitteestä. Tyypillisesti tarra on symbolinen nimi, joka osoittaa tiedostojoukon ja niiden tilan. Subversionissa tarra kopioi joukon tiedostoja ja niiden tilan. Subversionin tarrojen kopioinnilla on etunsa ja haittansa.
Edut:
Virheet:
Yksi Subversionin tärkeistä ominaisuuksista on tuki ominaisuuksille, eli nimi = arvo tekstipareille , jotka voidaan asettaa kaupassa oleviin objekteihin. Ominaisuuksia käytetään kahdessa eri yhteydessä: tiedostojärjestelmäobjekteille ja versioille.
Tiedostojärjestelmäobjektien ominaisuudetJokaiselle varaston tiedostolle tai hakemistolle voidaan määrittää joukko ominaisuuksia. Ominaisuuden muutokset tallennetaan historiaan samalla tavalla kuin muutokset tiedostojärjestelmään. Käyttäjät voivat asettaa ominaisuuksia millä tahansa nimellä; on myös ennalta määritetty joukko apuominaisuuksia, joita Subversion-asiakasohjelma käyttää (apuominaisuuksien nimien eteen on lisätty "svn:").
Tiedoston ominaisuudet svn:executable Tekee tiedostosta suoritettavan (työkopioita varten UNIX -perheen käyttöjärjestelmissä ). svn:mime-type Tallentaa tiedoston MIME - tyypin. Vaikuttaa tapaan, jolla komennot osoittavat tiedostojen eroja ja yhdistävät muutokset (yhdistäminen). svn:keywords Avainsanojen luettelo ( eng. avainsanat ), jotka korvataan tiedostossa vastaavilla arvoilla. Jotta korvaus tapahtuisi, avainsanan on oltava tiedostossa muodossa $keyword$. Käytetään päivittämään automaattisesti tiedoston arvot, jotka muuttuvat versiosta toiseen (esimerkiksi versionumero). svn:eol-style Määrittää säännön rivinlopun ( EOL ) merkkien muuntamiseen tekstitiedostossa . Käytetään tapauksissa, joissa tiedostolla on oltava tietty EOL-merkkityyppi. Yleensä käytetään "alkuperäistä" - tässä tapauksessa rivin lopun merkkien tyyppi vastaa sitä käyttöjärjestelmää, jossa työkopio luodaan. svn:needs-lock Osoittaa, että tiedosto on vain luku -tilassa, kun se haetaan tallennustilasta. Tämä ominaisuus on tarkoitettu käytettäväksi yhdessä estomekanismin kanssa . Tiedostoon kirjoittamisen kieltäminen on muistutus lukon hankkimisesta tiedostoon ennen sen muokkaamista: kun lukko hankitaan, Subversion-asiakasohjelma tekee tiedostosta automaattisesti kirjoitettavan (lukon vapauttaminen uudelleen tekee tiedostosta muuttamattoman). Lukkoja voidaan käyttää asettamatta tätä ominaisuutta. Tätä ei kuitenkaan suositella, koska on olemassa vaara, että toinen käyttäjä voi alkaa muokata lukittua tiedostoa, ja tämä havaitaan vasta, kun muutokset on tehty. svn:special Käyttäjien ei ole tarkoitus määrittää tai muokata ominaisuutta. Tällä hetkellä käytetään symbolisten linkkien tallentamiseen arkistoon. Kun symbolinen linkki lisätään arkistoon, arkistoon luodaan tiedosto, jossa on svn:special. Kun tämä tiedosto kirjataan ulos UNIX -tyyppisessä järjestelmässä, Subversion-asiakasohjelma muuntaa sen takaisin linkiksi. svn:mergeinfo Tallentaa tiedot siitä, mitkä polut on yhdistetty tähän tiedostoon. Ominaisuus esiteltiin versiossa 1.5, sitä käytetään yhdistämisen seurantaan . Se on joukko merkkijonoja muotoa tiedoston_nimi: versioalue . Tässä tiedostonimi on sen tiedoston tai hakemiston koko (polkulla arkiston tiedostojärjestelmän juuresta) nimi, josta määritetty versioalue yhdistettiin. Rivit päivitetään automaattisesti yhdistämistoimintojen aikana; myöhemmissä yhdistämisissä Subversion ottaa huomioon aiemmin lisätyt rivit välttäen näin samojen muutosten toistuvan yhdistämisen. Ei ole suositeltavaa muuttaa ominaisuutta manuaalisesti - tämä voi rikkoa yhdistämisen seurantamekanismin.svn:mergeinfo Hakemiston ominaisuudet svn:ignore Luettelo tiedosto- ja hakemistonimimalleista, jotka Subversion-asiakasohjelma jättää huomiotta tässä hakemistossa. Tämä ominaisuus on samanlainen kuin tiedosto CVS.cvsignore :ssä . Ominaisuus on pääsääntöisesti määritetty siten, että asiakasohjelma "ei näe" eri ohjelmien automaattisesti luomia tiedostoja ja hakemistoja, joita ei pidä versioida (esimerkiksi objektitiedostot , väliaikaiset tiedostot jne.). Tämä ominaisuus ei koske alihakemistoja. svn:externals Voit purkaa automaattisesti joukon hakemistoja työkopioksi määrittämällä niiden URL -osoitteen (voit jopa toisesta arkistosta). svn:mergeinfo Sama kuin tiedostoille . Version ominaisuudetToinen objektityyppi, jolle on olemassa ominaisuuksia, ovat itse versiot. Tässä tapauksessa ominaisuuden nimet voivat myös olla mitä tahansa; joillakin ominaisuuksilla, joiden etuliite on "svn:", on erityinen merkitys. Ero versioiden ominaisuuksien ja tiedostojärjestelmäobjektien ominaisuuksien välillä on se, että edelliseen versiohistorian käsite ei sovellu (koska yhdelle versiolle on määritetty tietty ominaisuuden arvo). Toisin sanoen version ominaisuuksia voidaan muuttaa, mutta vanha arvo menetetään. Oletusarvon mukaan muutokset versioiden ominaisuuksiin on poistettu käytöstä. antaa järjestelmänvalvojan luoda tapahtumaa käsittelevän skriptin ( eng. hook ) pre-revprop-change.
svn:date Version luomispäivämäärä ja -aika. svn:author Sen käyttäjän nimi, joka teki tähän versioon sisältyvät muutokset. svn:log Kuvaus tässä versiossa tehdyistä muutoksista (teksti, jonka käyttäjä on kirjoittanut tehdessään muutoksia).Pääsääntöisesti vain arkiston ylläpitäjä muuttaa versioiden ominaisuuksia virheellisten tietojen korjaamiseksi. Jos käyttäjä esimerkiksi unohti antaa tekstikuvauksen tehdessään muutoksiaan, järjestelmänvalvoja voi luoda tämän kuvauksen muokkaamalla svn:log.
Tyypillinen työnkulun iteraatio Subversionin kanssa sisältää seuraavat vaiheet.
Haaroittuminen on tärkeä näkökohta versionhallintajärjestelmien toiminnassa, koska tyypillisiin versiointitekniikoihin [47] (ainakin ohjelmistokehityksessä ) käytetään haaroja. Subversionilla on melko edistyneet haarautumis- ja yhdistämisominaisuudet ( se ei kuitenkaan tue uudelleennimettyjen tiedostojen ja hakemistojen yhdistämistä).
Kuvassa Kuva 3 esittää perinteisesti esimerkkiä arkiston haarojen kehityksestä. Vihreä väri osoittaa hankkeen kehittämisen päälinjan ( eng. mainline, runko ), keltainen - oksat, sininen - tagit, magenta - haara, jonka kehitys on keskeytetty. Punaiset nuolet osoittavat yhdistäviä muutoksia.
Haarojen luominenUusi haara (sekä tagi ) luodaan komennolla svn copy, joka luo arkistoon kopion, joka perii lähteen versiohistorian ( A+ -toiminto ). Sinun tulee aina käyttää komennon "etä" muotoa haarojen luomiseen svn copy, esimerkiksi:
svn-kopio http://.../trunk/dir http://.../branches/branch_name -m "Dir-haaran luominen"Tuloksena oleva kopio on haara (tai tunniste, riippuen siitä, kuinka käytät sitä). Jatkossa haaraan tehdyt muutokset voidaan tehdä lähteeseen, josta tämä haara on luotu, tällaista muutosten etenemistä kutsutaan yhdistämiseksi .
Kopiointitoiminnot Subversionissa ovat halpoja ( eng. cheap kopio ), eli ne vaativat pienen kiinteän määrän aikaa ja levytilaa. Tallennus on suunniteltu siten [48] , että kopioinnin aikana tietoja ei kopioida, vaan luodaan linkki lähteeseen (samanlainen kuin kova linkki ), mutta tämä mekanismi on puhtaasti sisäinen - käyttäjän näkökulmasta. näkemyksen mukaan tapahtuu kopion luominen. Haaroittamisen korkean tehokkuuden ansiosta haaroja voidaan luoda niin usein kuin tarvitaan (kuitenkin yhdistäminen - välttämätön lisä haarautumiseen - on Subversionissa hitaampaa kuin muissa nykyaikaisissa versionhallintajärjestelmissä).
Haarojen kanssa työskentelyYleensä haaran parissa työskenteleminen ei eroa pääkehityslinjalla ( runko ) työskentelemisestä. Tiettyjä komentoja tarvitaan vain toimissa, joihin liittyy useampi kuin yksi haara. Nämä komennot sisältävät (luo haaran komennon lisäksi svn copy):
Pääsääntöisesti sivukonttoreiden kanssa työskentelyn koko sykli sisältää seuraavat vaiheet:
Subversionin yhdistäminen on sovellus toiseen (tai samaan) haaraan tehtyjen muutosten joukon haaraan. Yhdistämisen toteuttamiseksi sinun on käytettävä komentoa svn merge - se tekee joukon muutoksia työkopioon; sitten sinun on vahvistettava muutokset ( svn commit).
Terminologian yhdistäminen on hieman hämmentävää. Termi yhdistäminen ei ole täysin tarkka, koska haarojen yhdistämistä sellaisenaan ei ole . Lisäksi sinun ei pidä rinnastaa yhdistämistä ja komentoa : ensinnäkin yhdistämistä varten sinun on suoritettava (lisäksi ) ristiriitojen ratkaisu ja sitoutuminen, ja toiseksi sovellus ei rajoitu yhdistämiseen. svn mergesvn mergesvn merge
Muita svn merge -komennon käyttötapojaKomentoa svn mergevoidaan käyttää muuhunkin kuin vain yhdistämiseen. Itse asiassa komento tekee työkopioon muutoksia arkiston kahden hakemiston tai tiedoston välisen eron verran , joten se svn mergeon universaali työkalu muutosten siirtämiseen. Tässä on joitain esimerkkejä komennon käytöstä svn merge:
Komentoa käytetään holvin luomiseen svnadmin create. Tämä toiminto luo tyhjän varaston määritettyyn hakemistoon.
Alla on vertailu Subversion- ja CVS-järjestelmien parametreista, koska Subversion on sijoitettu juuri CVS:n parannukseksi. Vertailu tehdään vain niille parametreille, joissa nämä järjestelmät eroavat toisistaan. Kaiken kaikkiaan Subversion ylittää CVS:n kaikin tavoin paitsi perinteisessä mielessä (eli tiedostojärjestelmäobjekteja osoittavissa nimikkeissä) .
Parametri | kumouksellinen | CVS |
---|---|---|
Ominaisuudet | ||
Luettelot | Seuraa paitsi tiedostojen, myös hakemistojen versioita. | Hakemistoversioita ei seurata, eli hakemistorakenne on sama (se, joka on arkistossa tällä hetkellä) kaikille versioille ja kaikille haaroille. Jos muutat hakemistorakennetta, niin vanhoja tiloja purettaessa saamme tiedostoista oikeat (vanhat) versiot, mutta väärässä (purkamishetkellä olemassa olevassa) hakemistorakenteessa. |
Tapahtumat | Monen tiedoston toimitusten atomiteetti. | Atomicity on vain yhden tiedoston toimitusten tasolla. Käytännössä useisiin tiedostoihin tehtyjen muutosten tekeminen jaetaan yksittäisten tiedostojen toimitusten sarjaksi. Jos tällainen toimitusten sarja keskeytyy, osa tiedostoista pysyy sitoutuneina, kun taas toiset pysyvät sitomattomina. |
Muutokset | Muutossarjat ovat tuettuja . | Muutossarjoja ei tueta. |
Tiedostonimen muutokset | Tukee tiedostojen ja hakemistojen kopioimista, siirtämistä ja uudelleennimeämistä menettämättä muutoshistoriaa. | Tiedostoja kopioitaessa, siirrettäessä ja nimettäessä uudella nimellä ei ole historiaa, eli yhteys vanhaan nimeen ja sen versiohistoriaan katkeaa kokonaan. Sama koskee hakemiston sisällä olevia tiedostoja, kun sen nimeä muutetaan [49] . |
ominaisuuksia | Jokaiseen tiedostoon ja hakemistoon voi liittyä mielivaltainen joukko ominaisuuksia, jotka koostuvat nimestä ja arvosta. Ominaisuudet ovat myös versionhallinnassa. | Ominaisuuksia ei tueta. |
Lukot | Valinnainen tiedostojen lukitus on tuettu (versiosta 1.2 lähtien). | Lukkoja ei tueta, mutta on olemassa samanlainen mekanismi nimeltä seuranta . |
oksat | Haarat ( haara , katso sanasto ) on toteutettu polkutilassa. Tämä tarkoittaa, että haaran luomiseksi hakemisto kopioidaan (kopiosta tulee haara). Tällaisten kopioiden luominen on nopeaa eikä resursseja vievää toimintaa, koska dataa ei kopioida , vaan korjataan uusi versio, joka eroaa edellisestä vain tiedostojen sijainnin osalta. | Haarat toteutetaan "kolmannessa ulottuvuudessa". Tämä tarkoittaa, että haarassa olevaa tiedostoa osoitetaan kolmella parametrilla: polku tiedostojärjestelmässä, versio (tai jokin muu tapa ilmaista versio, kuten aika), haaran nimi . |
Tunnisteet | Tunnisteita ( tag , katso sanakirja ) sinänsä ei ole. Sen sijaan käytetään hakemistohierarkiaa - tunnisteelle (sekä haaralle) luodaan erillinen hakemisto. Tunniste on haara, johon ei tavallisesti tehdä muita muutoksia. Tarra on kopio tiedostojen ja hakemistojen nimetystä tilasta. | Tunnisteet ovat tuettuja. Tunniste osoittaa tiedostojen nimetyn tilan. |
Tehokkuus | ||
Asiakas-palvelin vaihto | Kaikki asiakkaan ja palvelimen väliset versiopäivitykset siirtävät vain tiedostoerot, mikä voi vähentää merkittävästi verkkoliikennettä. | Erot siirretään palvelimelta asiakkaalle ja koko objekti siirretään asiakkaalta palvelimelle. |
Binaarit | Toimii yhtä tehokkaasti sekä teksti - että binääritiedostojen kanssa . | Työskentely binääritiedostojen kanssa on vähemmän tehokasta: jokainen uusi versio tallennetaan arkistoon kokonaisuudessaan. |
Haarojen ja tarrojen luominen | Vaatii pienen kiinteän määrän aikaa ja levytilaa. | Aikakustannukset ovat korkeat (riippuen mukana olevien tiedostojen määrästä). Haarojen ja tunnisteiden nimet tallennetaan redundantti (kaikkiin mukana oleviin tiedostoihin). |
Työkopion yläpuolella | Työkopion palveluhakemistot tallentavat puhtaan kopion. Siksi paikallisten muutosten selaaminen ja palauttaminen on nopeaa (ilman tallennustilaa), mutta työkopion koko levyllä on noin kaksi kertaa suurempi kuin itse tiedon koko. | Puhdasta kopiota ei tallenneta, työkopion koko on suunnilleen sama kuin datan koko. Tämän seurauksena paikallisten muutosten katselu- ja palautustoiminnot vaativat pääsyn tietovarastoon ja ovat hitaita. |
Muistin kulutus palvelimella | Vähemmän [50] . | Lisää. |
On olemassa cvs2svn-ohjelma, joka on suunniteltu muuttamaan CVS-tietovarasto valmiiksi Subversion-arkistoksi (tai git -arkistoksi ) tai tekstivedostekstiksi, joka voidaan sitten tuoda arkistoon käyttämällä svnadmin. Samalla cvs2svn tallentaa kaikki CVS-arkistossa olevat tiedot: haarat, tagit, muutoskuvaukset, tekijöiden nimet, toimituspäivämäärät. Lisäksi eri tiedostoissa tehdyt muutokset yhdessä muunnetaan yhdeksi versioksi.
Erot käytössä Tiedostojen käsittelyerotCVS:ssä tiedostojen ja hakemistojen siirtäminen (uudelleennimeäminen) ja kopioiminen tehdään lisäämällä objekti uudelleen uudella nimellä ja (siirrettäessä ja nimettäessä) poistamalla vanha objekti. Tämän työn myötä arkiston tiedostot ja hakemistot luodaan uudelleen ja menettävät muutoshistoriansa. Subversionin on käytettävä siirto- ( movetai mv) ja kopiointikomentoja ( copy) näiden toimintojen suorittamiseen. Niiden käyttö säilyttää muutoshistorian ja auttaa välttämään tarpeettomat toiminnot (etenkin käsiteltäessä hakemistoja tai jopa tiedostojärjestelmän haaroja).
Toisin kuin CVS, Subversion hoitaa jotkin toimivat kopiointitoiminnot (kuten tiedoston poistaminen ja siirtäminen). Kuvatut ja muut erot työkopiotiedostojen kanssa työskenneltäessä on koottu seuraavaan taulukkoon (operaatio commit, jossa sitä tarvitaan molemmissa tapauksissa, jätetään pois):
Operaatio | CVS | kumouksellinen | Huomautuksia |
---|---|---|---|
Tiedoston poistaminen | rm-tiedosto cvs rm-tiedosto |
svn rm file | tiedostoa ei tarvitse ensin poistaa manuaalisesti |
Tiedostojen poistaminen maskilla | rm * cvs rm tiedosto1 tiedosto2 ... |
svn rm * | tiedostoja ei tarvitse poistaa manuaalisesti etukäteen , eikä kaikkia tiedostoja tarvitse luetella |
Nimeä uudelleen/Siirrä | mv tiedosto1 tiedosto2 cvs rm tiedosto1 cvs lisää tiedosto2 |
svn mv file1 file2 | tiedostoa ei tarvitse siirtää manuaalisesti , tiedostohistoria säilyy |
kopioiminen | cp tiedosto1 tiedosto2 cvs add tiedosto2 |
svn copy file1 file2 | tiedostoa ei tarvitse kopioida manuaalisesti tiedostohistoria säilyy (haarukka) |
Hakemiston lisääminen (luominen). | mkdir dir cvs add dir |
svn mkdir dir svn commit |
hakemistoa ei voi luoda manuaalisesti , kun hakemiston lisääminen on tarpeencommit |
Tiedostojen hakemiston lisääminen | cvs add dir cd dir cvs add file1 file2 |
svn add dir | hakemistoon lisätään sen sisältämät tiedostot |
Hakemiston nimeäminen uudelleen tiedostoineen (ei alihakemistoja) |
mkdir hakemisto2 cvs add hakemisto2 mv hakemisto1/* hakemisto2 cvs rm hakemisto1/tiedosto1 hakemisto1/tiedosto2 ... cvs lisää hakemisto2/* |
svn mv dir1 dir2 | ei tarvitse luoda ja lisätä hakemistoja ei tarvitse manuaalisesti siirtää tiedostoja ei tarvitse luetella kaikkia tiedostoja tiedostohistoria tallennetaan |
Tiedostojärjestelmän haaran uudelleennimeäminen (hakemistot tiedostoineen ja alihakemistoja) |
toista yllä olevat komennot jokaiselle sisäkkäistasolle tai jokaiselle alihakemistolle [51] |
svn mv dir1 dir2 | katso yllä ei riipu tasojen ja hakemistojen lukumäärästä |
Subversionissa ei tarvitse luoda tunnisteita tai käyttää päivämäärää/aikaa arkiston tilan käsittelemiseen, yksinkertaisissa tapauksissa (esimerkiksi saadaksesi versio tietyn vahvistuksen jälkeen) on helpompi määrittää vaadittu versionumero .
Subversion on suunniteltu sarjaksi kirjastoja, jotka on jaettu useisiin tasoihin. Jokainen niistä suorittaa tietyn tehtävän ja antaa kehittäjille mahdollisuuden luoda omia työkalujaan monimutkaisuudesta ja tehtävästä riippuen.
fs Alin taso; toteuttaa versioidun tiedostojärjestelmän, joka tallentaa tietoja. Repos Tiedostojärjestelmään toteutetun tallennustilan taso. Tällä tasolla on toteutettu monia aputoimintoja, ja se tukee myös käsittelijöiden ( englanniksi koukkujen ) käynnistämistä, eli skriptien käynnistämistä, kun tapahtuma tapahtuu. Yhdessä Fs- ja Repos-tasot muodostavat tiedostojärjestelmän käyttöliittymän . mod_dav_svn Tarjoaa WebDAV / Delta-V- yhteyden Apache 2:n kautta. Ra Toteuttaa tallennustilan (sekä paikallisen että etäkäytön). Tältä tasolta alkaen arkistoon voidaan viitata URL-osoitteella, ts.Subversionin vakioasiakasapuohjelma, SVN, konfiguroidaan ympäristömuuttujilla ja INI-tiedostoilla , jotka on luotu käyttäjän kotihakemistoon alihakemistoon .subversion(kokoonpanon sijainti Windows-järjestelmissä, tiedostoissa tai rekisterissä riippuu järjestelmän asetuksista). Kokoonpanossa SVN tallentaa välimuistiin myös SSL-varmenteita, kirjautumistunnuksia, salasanoja jne. (ellei sitä ole poistettu käytöstä kokoonpanossa) Subversion-palvelimien käyttöä varten.
Hakemiston sisältö .subversion:
Subversion ei välttämättä aina käsittele tiedostojen uudelleennimeämistä oikein, jos tiedoston sisältöä muutetaan samanaikaisesti uudelleennimeämisen kanssa. Ongelmia voi syntyä myös, jos joku muu arkistossa muokkaa paikallisessa kopiossa uudelleen nimettyä tiedostoa. Jotkut näistä ongelmista on korjattu versiossa 1.5, mutta tämä ratkaisu ei ole vielä valmis. [53]
Myös sivukonttoreiden yhdistämistä pidetään Subversionin heikkona kohdanna. Ennen versiota 1.5 käyttäjien oli seurattava kaikkia tällaisia toimintoja manuaalisesti yksityiskohtaisten muutoslokimerkintöjen avulla. Versiosta 1.5 lähtien on otettu käyttöön perustuki automaattiselle yhdistämisen seurannalle, jota kehittäjät aikovat parantaa seuraavissa julkaisuissa [54] . Subversion tukee tällä hetkellä melko hyvin yleisiä yhdistämisskenaarioita; monimutkaisemmissa tapauksissa ongelmat ovat mahdollisia. On suositeltavaa [55] järjestää työnkulku siten, että vältetään ongelmalliset skenaariot. Uudelleennimettyjen tiedostojen ja hakemistojen yhdistämistä ei tueta.
Subversion-arkistoon sijoitetut tiedot pysyvät siellä ikuisesti: tiedosto voidaan poistaa nykyisessä versiossa, mutta arkistosta on aina mahdollista hakea jokin aikaisemmista versioista, joissa tiedosto oli olemassa. Vaikka aiempien versioiden säilyttäminen onkin itse asiassa versionhallintajärjestelmien käyttötarkoitus, joskus on tarpeen poistaa tiedot kokonaan arkistosta, joka on vahingossa sijoitettu sinne. Subversion ei tarjoa mitään alkuperäistä tapaa tehdä tämä [56] ; Ainoa mahdollisuus on luoda tallennusvedos, käsitellä se tavallisella svndumpfilter-apuohjelmalla ja palauttaa sitten tallennus kaavasta. On myös kolmansien osapuolien ohjelmia tämän prosessin automatisoimiseksi, mutta joka tapauksessa tämä toiminto edellyttää tallennustilan käyttöoikeuden väliaikaista keskeyttämistä ja järjestelmänvalvojan väliintuloa, jolla on riittävän korkeat oikeudet tyhjentääkseen vanhan tallennustilan kokonaan ja korvatakseen sen uudella. yksi.
Nimi |
Kuvaus |
Kieli |
DB |
Lisenssi |
Verkkosivusto |
Päivittää |
Versio |
Wiki-tekniikkaan perustuva työkalu |
Python |
SQLite, PostgreSQL, MySQL ja MariaDB |
trac.edgewall.org Arkistoitu 8. huhtikuuta 2013 Wayback Machinessa |
21.6.2017 |
1.2.2 | ||
ylimääräinen virheseuranta |
rubiini |
MySQL, PostgreSQL, SQLite, Oracle. |
redmine.org Arkistoitu 27. huhtikuuta 2011 Wayback Machinessa |
09.12.2018 |
4.0.0 | ||
apuohjelma arkistojen luomiseen ja hallintaan, erikoistunut SVN:ään |
PHP |
MySQL, SQLite |
CeCill (GPL-yhteensopiva lisenssi). |
www.usvn.info Arkistoitu 12. toukokuuta 2011 Wayback Machinessa |
13.1.2012 |
1.0.6 | |
ViewVC |
ilman käyttäjien hallintaa, ei vaadi web-palvelimen DAV-tukea. |
Python |
MySQL |
Kahden lausekkeen Berkeley-tyyliin |
www.viewvc.org Arkistoitu 4. toukokuuta 2011 Wayback Machinessa |
02.12.2010 |
1.1.8 |
WebSVN |
selausliittymä SVN:ään |
PHP |
XML |
websvn.tigris.org Arkistoitu 12. kesäkuuta 2006 Wayback Machinessa |
12.10.2010 |
2.3.2 | |
apuohjelma arkistojen hallintaan (luominen, poistaminen, lataaminen ja purkaminen; käyttäjien ja ryhmien hallinta) |
PHP |
MySQL tai SQLite |
svnmanager.sourceforge.net Arkistoitu 30. huhtikuuta 2011 Wayback Machinessa |
28.01.2012 |
1.09 | ||
Submin (MIT) |
apuohjelma arkiston ja käyttäjien hallintaan, mukaan lukien arkiston yksittäisten hakemistojen käyttöoikeuksien hallinta |
Python |
MIT/X Arkistoitu 6. kesäkuuta 2011 Wayback Machinessa |
24.12.2012 |
2.1 | ||
cSvn |
web-käyttöliittymä Subversion-tietovarastojen katseluun |
C |
csvn.radix.pro Arkistoitu 16. maaliskuuta 2022 Wayback Machinessa |
17.11.2020 |
0.1.3 |
Versionhallintajärjestelmät ( luokka ) | |
---|---|
Vain paikallinen | |
Asiakas-palvelin | |
Hajautettu | |
URI- järjestelmät | |
---|---|
Virallinen | |
epävirallinen |