Niekedy je užitočné zostaviť pracovnú kópiu, ktorá je vytvorená z množstva rôznych overení. Môžete napríklad chcieť, aby rôzne súbory alebo podpriečinky pochádzali z rôznych umiestnení v úložisku alebo spolu z rôznych úložísk. Ak chcete, aby mal každý užívateľ rovnaké rozloženie, môžete definovať vlastnosti svn:externals
pre stiahnutie zadaného zdroja na miesta, kde sú potrebné.
Povedzme, že ste si overili pracovnú kópiu /project1
do D:\dev\project1
. Vyberte priečinok D:\dev\project1
, kliknite pravým tlačidlom myši a vyberte si → z kontextovej ponuky. Zobrazí sa dialógové okno Vlastnosti. Potom prejdite na kartu Subversion. Tam môžete nastaviť vlastnosti. Kliknite . V dialógovom okne vlastností dvakrát kliknite na svn:externals
ak už existuje, alebo kliknite na tlačidlo a vyberte externé
z ponuky. Ak chcete pridať nové externé zariadenie, kliknite na tlačidlo a potom vyplňte požadované informácie v zobrazenom dialógovom okne.
URL musia byť správne uvedené, inak nebudú fungovať, napr. každú medzeru musíte nahradiť znakom %20
.
Ak chcete, aby miestna cesta obsahovala medzery alebo iné špeciálne znaky, môžete ju uzavrieť do úvodzoviek alebo môžete použiť znak \
(spätná lomka) ako znak významu štýlu unixového prostredia predchádzajúci ktorémukoľvek špeciálnemu znaku. To samozrejme tiež znamená, že musíte používať znak /
(lomka) ako oddeľovač cesty. Toto správanie je nové v Subversion 1.6 a nebude fungovať so staršími klientmi.
Dôkladne by ste mali zvážiť používanie explicitných čísel revízií vo všetkých svojich definíciách externých riešení, ako je popísané vyššie. To znamená, že sa rozhodnete, kedy vytvoriť inú snímku externých informácií a presne ktorú snímku chcete vytiahnuť. Okrem aspektu zdravého rozumu, ktorý vás neprekvapí zmenami v úložiskách tretích strán, nad ktorými nemusíte mať žiadnu kontrolu, znamená použitie explicitných čísel revízií tiež to, že pri antidatovaní pracovnej kópie na predošlú revíziu sa vaše vonkajšie definície tiež vrátia do stavu, ako vyzerali v predošlej revízii, čo zase znamená, že externé pracovné kópie budú aktualizované tak, aby zodpovedali uvedenému stavu ako vyzerali, keď sa vaše úložisko nachádzalo v predošlej revízii. V prípade softvérových projektov by to mohol byť rozdiel medzi úspešným a neúspešným zostavením staršej snímky komplexného základného kódu.
Dialógové okno úprav pre vlastnosti svn:externals
vám umožňuje vybrať externé zdroje a automaticky ich explicitne nastaviť na HEAD revíziu.
Ak je externý projekt v rovnakom úložisku, všetky zmeny, ktoré v ňom vykonáte, sa zahrnú do zoznamu odovzdania, keď budete potvrdzovať svoj hlavný projekt.
Ak je externý projekt v inom úložisku, všetky zmeny, ktoré vykonáte v externom projekte, sa zobrazia alebo označia pri odovzdaní hlavného projektu, ale tieto externé zmeny musíte vykonať osobitne.
Ak v systéme používate absolútne adresy URL definície svn:externals
a musíte premiestniť svoju pracovnú kópiu (t. j. ak sa zmení adresa URL vášho úložiska), potom sa vaše externé súbory nezmenia a už nebudú fungovať.
Aby sa takýmto problémom predišlo, klienti Subversion verzie 1.5 a vyššej podporujú relatívne externé adresy URL. Podporované sú štyri rôzne spôsoby určenia relatívnej adresy URL. V nasledujúcich príkladoch predpokladajme, že máme dva úložiská: jedno na adrese http://example.com/svn/repos-1
a ďalšie na http://example.com/svn/repos-2
. Máme vykonať overenie z http://example.com/svn/repos-1/project/trunk
do C:\Working
a vlastnosť svn:externals
je nastavená na kmeni.
Tieto adresy URL vždy začínajú reťazcom ../
napríklad:
../../widgets/foo common/foo-widget
Toto extrahuje http://example.com/svn/repos-1/widgets/foo
do C:\Working\common\foo-widget
.
Upozorňujeme, že adresa URL je relatívna k adrese URL priečinka s vlastnosťou svn:externals
, nie do priečinka, kde je externe zapisovaná na disk.
Tieto adresy URL vždy začínajú reťazcom ^/
napríklad:
../../widgets/foo common/foo-widget
Toto extrahuje http://example.com/svn/repos-1/widgets/foo
do C:\Working\common\foo-widget
.
Môžete ľahko odkazovať na iné archívy s rovnakými SVNParentPath
(spoločný priečinok s niekoľkými úložiskami). Napríklad:
^/../repos-2/hammers/claw common/claw-hammer
Toto extrahuje http://example.com/svn/repos-2/hammers/claw
do C:\Working\common\claw-hammer
.
Adresy URL začínajúce reťazcom //
kopírujú iba časť schémy adresy URL. Je to užitočné, keď k rovnakému názvu hostiteľa musí byť pristupované s rôznymi schémami v závislosti od umiestnenia v sieti; napr. klienti využívajúci intranet http: //
zatiaľ čo externí klienti používajú svn+ssh://
. Napríklad:
//example.com/svn/repos-1/widgets/foo common / foo-widget
Toto extrahuje http://example.com/svn/repos-1/widgets/foo
alebo svn+ssh: //example.com/svn/repos-1/widgets/foo
podľa toho, ktorá metóda bola použitá pri overovaní C:\Working
.
Adresy URL začínajúce reťazcom /
kopírujú schému a časť názvu hostiteľa adresy URL, napríklad:
/svn/repos-1/widgets/foo common/foo-widget\n
Toto extrahuje http://example.com/svn/repos-1/widgets/foo
do C:\Working\common\foo-widget
. Ale ak si rezervujete svoju pracovnú kópiu z iného servera na adrese svn+ssh://another.mirror.net/svn/repos-1/project1/trunk
potom bude extrahovaný externý odkaz svn+ssh://another.mirror.net/svn/repos-1/widgets/foo
.
V prípade potreby môžete tiež určiť naviazanú a operatívnu revíziu ak sú požadované pre adresu URL. Ak sa chcete dozvedieť viac o naviazaných a operatívnych revíziách, prečítajte si zodpovedajúca kapitola v knihe Subversion.
Ak zadáte cieľový priečinok pre externý priečinok ako podpriečinok ako v príkladoch vyššie, uistite sa, že všetky priečinky medzi nimi sú tiež verziové. Takže pre vyššie uvedené príklady priečinok common
by mal byť verziový!
Aj keď externý bude vo väčšine situácií fungovať správne, ak priečinky medzi nimi sú bezverziové, existujú niektoré operácie, ktoré nebudú fungovať podľa vašich očakávaní. Ikony prekrytia stavu v prieskumníkovi tiež nebudú zobrazovať správny stav.
Ak potrebujete ďalšie informácie o tom, ako TortoiseSVN narába s vlastnosťami prečítajte si “Nastavenia Projektu”.
Viac sa dozviete o rôznych metódach prístupu k bežným podprojektom v časti “Zahrnúť spoločný podprojekt”.
Od verzie Subversion 1.6 môžete do svojej pracovnej kópie pridať externé súbory jedného súboru použitím rovnakej syntaxe ako pre priečinky. Existujú však určité obmedzenia.
Cesta k externému súboru musí byť priamo podriadená priečinku, do ktorého ste nastavili vlastnosť svn:externals
.
Adresa URL externého súboru musí byť v rovnakom úložisku ako adresa URL, do ktorej bude vložený externý súbor; externé súbory medzi úložiskami nie sú podporované.
Externý súbor sa chová v mnohých ohľadoch ako každý iný verziový súbor, ale nemožno ho presunúť ani vymazať použitím bežných príkazov; vlastnosť svn:externals
namiesto toho musí byť upravená.
Ak už máte pracovnú kópiu súborov alebo priečinkov, ktoré chcete zahrnúť ako externé v inej pracovnej kópii, môžete ich jednoducho pridať pomocou funkcie Ťahaj a pusť z prieskumníka systému Windows.
Jednoducho súbor alebo priečinok ťahajte pri stlačenom pravom tlačidle z jednej pracovnej kópie na miesto, kde ho chcete zahrnúť ako externý. Po uvoľnení tlačidla myši sa zobrazí kontextová ponuka: ak kliknete na túto položku kontextovej ponuky, vlastnosť svn:externals
sa pridá automaticky. Všetko, čo musíte urobiť, je vykonať zmeny vlastností a aktualizovať ich, aby boli tieto externé súbory správne zahrnuté do vašej pracovnej kópie.