Joskus on hyödyllistä muodostaa työkopio, joka on tehty usealla hakuoperaatiolla. Voit esimerkiksi haluta alihakemistojen tulevan eri paikoista arkistossa tai jopa kokonaan eri arkistoista. Jos haluat, että kaikilla käyttäjillä olevan sama hakemistorakenne käytössä, voit määrittää svn:externals
-ominaisuuksia noutamaan määritellyt resurssit tarvittaviin paikkoihin.
Oletetaan, että haet työkopion projkektista /project1
kansioon D:\dev\project1
. Valitse kansio D:\dev\project1
ja valitse hiiren oikealla näppäimellä komento → . Ominaisuusikkuna aukeaa. Siirry Subversion-välilehteen, jossa voit asettaa ominausuudet. Napsauta . Esiin aukeavassa ikkunassa voit kaksoisnapsauttaa svn:externals
-valintaa, jios sellainen on, tai lisätä uuden valitsemalla valikosta ja externals
.
Paikantimien erikoismerkit on määriteltävä oikein, jotta ne toimisivat. Esimerkiksi välilyönti on korvattava lausekkeella %20
.
Jos haluat sisällyttää paikalliseen polkuun välilyöntejä tai muita erikoismerkkejä, voit joko ympäröidä sen lainausmerkein tai käyttää kenoviivamerkkiä \
erikoismerkkien edellä. Jälkimmäinen tarkoittaa tietysti myös sitä, että polkuerottimena on käytettävä jakoviivamerkkiä /
. Huomaa, että tämä toiminnallisuus on käytössä versiosta 1.6 alkaen.
Sinun kannattaa harkita versionumeroiden käyttöä kaikissa ulkoisissa viittauksissa edellä kuvatulla tavalla. Näin tekemällä pääset itse päättämään, milloin otat käyttöön uuden ulkoisen komponentin version. Tästä on se hyöty, etteivät ulkoisten komponenttien arkistomuutokset - joihin et ehkä voi vaikuttaa - aiheuta yllätyksiä. Lisäksi versionumeroiden käyttö ulkoisissa viittauksissa auttaa myös silloin, kun haluat palauttaa projektisi vanhan version - tällöin ulkoiset viittaukset palautuvat oikeisiin arvoihin, ja ulkoiset työkopiot päivittyvät tilaan, jossa ne olivat arkistosi aiemmassa versiossa. Ohjelmistoprojekteille tämä voi merkitä eroa onnistuneen tai epäonnistuneen käännöksen välillä.
svn:externals
-ominaisuuksien muokkausikkunan avulla on mahdollista valita ulkoiset viitteet ja asettaa ne automaattisesti eksplisiittiseen HEAD-versioon.
Jos ulkoinen projekti on samassa arkistossa, kaikki siihen tehdyt muutokset sisältyvät toimituslistaan toimittaessasi pääprojektin muutoksia arkistoon.
Jos ulkoinen projekti on eri arkistossa, siihen tekemistäsi muutoksista näytetään tai ilmoitetaan toimittaessasi pääprojektin muutoksia arkistoon. Joudut kuitenkin toimittamaan ulkoiset muutokset erikseen.
Jos käytät absoluuttisia paikantimia svn:externals
-määrityksissä ja joudut sijoittamaan työkopiosi uudelleen (ts. jos arkistosi paikannin muuttuu), niin ulkoiset viitteet eivät päivity eivätkä siis ehkä enää toimi oikein.
Tällaisten ongelmien välttämiseksi Subversion (ja siis myös TortoiseSVN) tukee versiosta 1.5 alkaen suhteellisia paikantimia ulkoisissa viitteissä. Suhteellisen paikantimen voi antaa neljällä eri tavalla. Seuraavissa esimerkeissä oletetaan, että käytössä on kaksi arkistoa, http://example.com/svn/repos-1
ja http://example.com/svn/repos-2
. Paikantimesta http://example.com/svn/repos-1/project/trunk
on noudettu työkopio kansioon C:\Working
ja ominaisuus svn:externals
on asetettu kansiolle trunk
.
Nämä paikantimet alkavat aina merkkijonolla ../
:
../../widgets/foo common/foo-widget
Tämä noutaa kansion http://example.com/svn/repos-1/widgets/foo
työkopion kansioon C:\Working\common\foo-widget
.
Huomaa, että paikannin on suhteellinen siihen kansioon nähden, joka sisältää svn:externals
-ominaisuuden, ei työkopion kansioon, johon paikantimen sisältö kirjoitetaan.
Nämä paikantimet alkavat aina merkkijonolla ^/
:
^/widgets/foo common/foo-widget
Tämä noutaa kansion http://example.com/svn/repos-1/widgets/foo
työkopion kansioon C:\Working\common\foo-widget
.
Voit helposti viitata muihin arkistoihin, joilla on sama SVNParentPath
(yhteinen hakemisto, jossa on useita arkistoja). Esimerkki:
^/../repos-2/hammers/claw common/claw-hammer
Tämä noutaa kansion http://example.com/svn/repos-2/hammers/claw
työkopion kansioon C:\Working\common\claw-hammer
.
Merkkijonolla //
alkavat paikantimet jättävät yhteyskäytännön avoimeksi. Tämä on hyödyllistä, jos samaan palvelimeen on kytkeydyttävä eri yhteyskäytännöillä; esim. intranet-asiakkaat käyttävät http://
-yhteyskäytäntöä, kun taas internet-asiakkaat käyttävät svn+ssh://
-yhteyskäytäntöä. Esimerkki:
//example.com/svn/repos-1/widgets/foo common/foo-widget
Tämä noutaa kansion http://example.com/svn/repos-1/widgets/foo
tai kansion svn+ssh://example.com/svn/repos-1/widgets/foo
työkopion C:\Working
yhteyskäytännöstä riippuen.
Merkkijonolla /
alkavat paikantimet jättävät yhteyskäytännön ja palvelimen nimen avoimiksi. Esimerkki:
/svn/repos-1/widgets/foo common/foo-widget
Tämä noutaa kansion http://example.com/svn/repos-1/widgets/foo
työkopion kansioon C:\Working\common\foo-widget
. Jos kuitenkin hat työkopiosi toiselta palvelimelta svn+ssh://another.mirror.net/svn/repos-1/project1/trunk
, niin ulkoinen viite noutaa kansion svn+ssh://another.mirror.net/svn/repos-1/widgets/foo
.
Voit myös tarvittaessa määrittää ankkuri- ja operatiivisen version paikantimelle. Lue lisää näistä tavoista Subversion-kirjasta.
Mikäli määrität ulkoisen viitteen kohdehakemiston alikansioksi kuten yllä olevissa esimerkeissä, varmista, että kaikki välillä olevat kansiot on myös versioitu. Edellä siis kansion common
tulee olla versioitu!
Joskin ulkoinen viite toimii useimmiten oikein, vaikka kaikki yläkansiot eivat olisi versioituja, jotkut komennot eivät toimi odotetusti. Resurssienhallinnan kuvakepäällykset eivät myöskään näytä oikeata tilaa.
Lisätietoa TortoiseSVN:n ominaisuuksien käsittelystä löytyy luvusta ”Projektiasetukset”.
Eri tavoista viitata yhteisiin aliprojekteihin löytyy tietoa luvusta ”Sisällytä projektiin yhteinen aliprojekti”.
Versiosta 1.6 alkaen voit lisätä ulkoisia viittauksia yksittäisiin tiedostoihin työkopiossasi samaan tapaan kuin ulkoisten kansioiden yhteydessä. Tähän liittyy kuitenkin muutamia rajoituksia.
Polun ulkoiseen tiedostoon tulee sijaita suoraan siinä hakemistossa, jolle svn:externals
-ominaisuus asetetaan.
Ulkoisen tiedoston paikantimen on viitattava samaan arkistoon, missä se sijaitsee; arkistojen väliset ulkoiset tiedostot eivät ole tuettuja.
Ulkoinen tiedosto käyttäytyy useimmiten normaalin versioidun tiedoston tavoin, mutta niitä ei voi siirtää tai poistaa tavanomaisilla komennoilla vaan muokkaamalla svn:externals
-ominaisuutta.
Jos sinulla on jo työkopio tiedostoista tai kansioista, jotka haluat lisätä toiseen työkopioon ulkoisena viitteenä, voit yksinkertaisesti raahata ne kohdetyökopioon Resurssienhallinnan avulla.
Oikea-raahaa tiedosto tai kansio työkopiosta siihen työkopioon, johon haluat lisätä sen ulkoisena viitteenä. Vapauttaessasi hiiren näppäimen esiin aukeaa kontekstivalikko . Jos valitset komennon, tarvittava svn:externals
-ominaisuus lisätään automaattisesti. Tämän jälkeen riittää toimittaa ominaisuusmuutokset arkistoon ja päivittää työkopio.