Někdy je vhodné sestavit pracovní kopie, která je vyrobena z mnoha různých získání. Například můžete chtít, aby různé soubory nebo podadresáře přicházeli z různých míst v úložišti, nebo možná z úplně jiných úložišť. Pokud chcete, aby každý uživatel měl stejné rozložení, můžete nastavit vlastnost svn:externals
pro stáhnutí uvedeného zdroje na místa, kde je ho zapotřebí.
Řekněme, že chcete získat pracovní kopii /Projekt1
do D:\dev\Projekt1
. Vyberte adresář D:\dev\Projekt1
, klikněte na něj pravým tlačítkem myši a vyberte → z kontextového menu. Zobrazí se dialogové okno Vlastnosti. Pak přejděte na kartu Subversion. Zde můžete nastavit vlastnosti. Klepněte na tlačítko . V dialogovém okně vlastnosti, buď dvojklikem na svn:externals
pokud již existuje, nebo klikněte na tlačítko a z nabídky vyberte externí
. Chcete-li přidat novou externí, klikněte na tlačítko a pak vyplňte požadované informace v zobrazeném dialogovém okně.
URL musí být řádně zamaskované, nebo nebudou fungovat, např. musíte nahradit každou mezeru %20
.
Pokud chcete, aby místní cesta obsahovala mezery nebo jiné speciální znaky, můžete ji uzavřít do uvozovek, nebo použít \
(Zpětné lomítko) jako unixový styl maskování v rozhraní před každým speciálním znakem. Samozřejmě to také znamená, že musíte použít /
(Lomítko) jako oddělovač cesty. Všimněte si, že toto chování je nové v Subversion 1.6 a nebude u starších klientů fungovat.
Měli byste vážně uvažovat o používání jednoznačných čísel revizí pro všechny vaše externí definice, jak je popsáno výše. Pokud tak učiníte, znamená to, že můžete rozhodnout, kdy a který snímek externích informací přesně stáhnout. Kromě hlediska zdravého rozumu kdy nebudete překvapeni změnami v úložištích třetí strany, nad kterými nemusíte mít žádnou kontrolu, používání jednoznačných čísel revizí také znamená, že jak vaše pracovní kopie postupuje zpět na předchozí revizi, vaše externí nastavení se také vrátí do stavu v té předchozí revizi, což znamená, že externí pracovní kopie budou aktualizovány tak, aby odpovídaly způsobu, jak ony vypadaly, když vaše úložiště bylo v předchozí revizi. U softwarových projektů, toto může být rozdíl mezi úspěšným a neúspěšným sestavením staršího snímku vaší komplexní sady kódu.
Dialogové okno úprav pro vlastnosti svn:externals
Vám umožňují vybrat externí a automaticky je nastavit na danou revizi HEAD.
Pokud je externí projekt ve stejném úložišti, všechny změny, které v něm provedete, budou při odevzdání hlavního projektu zahrnuty.
Pokud je externí projekt v jiném úložišti, všechny změny v něm provedené budou při odevzdání hlavního projektu zobrazeny či vyznačeny, ale tyto vnější změny musíte odevzdat samostatně.
Pokud používáte absolutní adresu URL pro nastavení svn:externals
a musíte Vaši pracovní kopii přemístit (tj. pokud se adresa URL úložiště změní), pak se Vaše externí nezmění a možná nebudou fungovat.
Aby se předešlo takovým problémům, klient Subversion verze 1.5 a vyšší podporuje relativní externí adresy URL. Jsou podporovány čtyři způsoby určení relativní adresy URL. V následujících příkladech, předpokládáme, že máme dvě úložiště: jedno na http://priklad.cz/svn/uloz-1
a další na http://priklad.cz/svn/uloz-2
. Získání máme z http://priklad.cz/svn/uloz-1/projekt/kmen
ukládáme do C:\Pracovní
a vlastnost svn:externals
je nastavena na kmen.
Tyto adresy URL vždy začínat řetězcem ../
např.:
../../Nastroje/bla spolecne/bla-nastroj
Toto vyjme http://priklad.cz/svn/uloz-1/nastroje/foo
do C:\Práce\spolecne\bla-nastroj
.
Nezapomeňte, že URL je relativní k URL adresáře s vlastností svn:externals
, ne do adresáře, kde vnější je zapsáno na disk.
Tyto adresy URL vždy začínat řetězcem ^/
např.:
^/nastroje/bla spolecne/bla-nastroj
Toto vyjme http://priklad.cz/svn/uloz-1/nastroje/bla
do C:\Práce\spolecne\bla-nastroj
.
Můžete snadno odkazovat na jiná úložiště se stejnou SVNParentPath
(Společný adresář obsahující několik úložišť). Například:
^/../Uloz-2/kladiva/dráp spolecne/drap-kladivo
Toto vyjme http://priklad.cz/svn/uloz-2/kladiva/drap
do C:\Práce\spolecne\ drap-kladivo
.
URL začínající řetězcem //
zkopírují pouze schématickou část URL. To je užitečné, když musí být přístup na stejné jméno hostitele přes různá schémata v závislosti na umístění v síti, např. klienti v intranetu používají http://
zatímco externí klienti používají svn+ssh://
. Například:
//Priklad.cz/svn/uloz-1/nástroje/bla spolecne/bla-nastroj
Toto vyjme http://priklad.cz/svn/uloz-1/nastroje/bla
nebo svn+ssh://priklad.cz/svn/uloz-1/nastroje/bla
podle toho, jaký způsob byl použit pro získání C:\Pracovní
.
URL začínající řetězcem /
kopíruje schéma a hostitelskou část URL, například:
/svn/uloz-1/nastroje/bla spolecne/bla-nastroj
Toto vyjme http://priklad.cz/svn/uloz-1/nastroje/bla
do C:\Práce\spolecne\bla-nastroj
. Ale pokud získáte Vaši pracovní kopii z jiného serveru na svn+ssh://dalsi.mirror.cz/svn/uloz-1/projekt1/kmen
pak externí odkaz vyjme svn+ssh://dalsi.mirror.cz/svn/uloz-1/nastroje/bla
.
V případě potřeby můžete v URL zadat zavěšenou a operativní revizi. Abyste se dozvěděli více o zavěšených a operativních revizích, prohlédněte si prosím odpovídající kapitolu v knize Subversion.
Pokud zadáte cílovou složku pro externí jako podsložku stějně jako v příkladu výše, ujistěte se, že všechny složky mezi nimi mají také verzi. Takže případě příkladů výše, by složka common
měla také mít verzi!
I přesto že v cestě k externí existuje složka bez verze, budou ve většině situací fungovat správně. Nicméně existují operace, které nebudou fungovat, jak očekáváte. A překryvné ikony stavu v Průzkumníku nebudou zobrazovat správný stav.
Pokud potřebujete více informací o tom, jak TortoiseSVN s vlastnostmi zachází, přečtěte si „Nastavení projektu“.
Chcete-li zjistit o různých metodách přístupu společných podprojektů, přečtěte si „Zahrnout společný podprojekt“.
Od Subversion verze 1.6, můžete přidat jeden soubor jako externí do Vaší pracovní kopie pomocí stejné syntaxe jako pro adresář. Nicméně, existují určitá omezení.
Cesta k externímu souboru musí být přímo podřazená složce, kde jste nastavili vlastnost svn:externals
.
URL pro externí soubor musí být ve stejném úložišti jako URL, do které bude externí soubor vložen, mezi-uložištní externí soubory nejsou podporovány.
Externí soubor se chová stejně jako jakýkoliv jiný souboru s verzí v mnoha ohledech, ale nemůže být přesunut nebo smazán pomocí běžných příkazů; místo toho musí být upravena vlastnost svn:externals
.
Pokud již máte pracovní kopii souborů nebo složek, které chcete použít jako externí v jiné pracovní kopii, můžete je jednoduše přidat pomocí přetáhnutí v Průzkumníku Windows.
Jednoduše přetáhněte pravým tlačítkem myši soubor nebo složku z jedné pracovní kopii tam, kde je chcete použít jako externí. Při uvolnění tlačítka myši se zobrazí kontextová nabídka: , pokud na tuto položku nabídky kliknete, automaticky se přidá vlastnost svn:externals
. Jediné, co po tomto úkonu musíte provést, je odevzdat změny vlastností a aktualizovat pro správné zahrnutí těchto externích do vaší pracovní kopie.