Soms is het handig om een werkkopie te hebben, die bestaat uit bestanden die in verschillende aparte archieven zijn opgeslagen. Bijvoorbeeld, je wilt dat bestanden en submappen van verschillende locaties uit het archief worden gehaald, of misschien zelfs vanuit verschillende archieven. Als je wilt dat elke gebruiker dezelfde indeling gebruikt, dan kun je gebruik maken van svn:externals
eigenschappen om de benodigde bronnen naar de locaties te halen waar ze nodig zijn.
Let's say you check out a working copy of /project1
to D:\dev\project1
. Select the folder D:\dev\project1
, right click and choose → from the context menu. The Properties Dialog comes up. Then go to the Subversion tab. There, you can set properties. Click . In the properties dialog, either double click on the svn:externals
if it already exists, or click on the button and select externals
from the menu. To add a new external, click the and then fill in the required information in the shown dialog.
URLs must be properly escaped or they will not work, e.g. you must replace each space with %20
.
Als je in lokale paden spaties en andere speciale tekens wilt gebruiken, dan moet je deze tussen aanhalingstekens plaatsen, of je kunt de \
(schuine streep naar links, ook wel backslash genoemd) gebruiken, zoals deze gebruikt worden Unix voor speciale karakters. Dit houdt ook in dat je de /
(schuine streep naar rechts, ook wel forward slash genoemd) moet gebruiken als scheidingsteken voor paden. Merk op dat dit gedrag nieuw is voor Subversion 1.6 en dat dit niet werkt bij oudere versies.
You should strongly consider using explicit revision numbers in all of your externals definitions, as described above. Doing so means that you get to decide when to pull down a different snapshot of external information, and exactly which snapshot to pull. Besides the common sense aspect of not being surprised by changes to third-party repositories that you might not have any control over, using explicit revision numbers also means that as you backdate your working copy to a previous revision, your externals definitions will also revert to the way they looked in that previous revision, which in turn means that the external working copies will be updated to match the way they looked back when your repository was at that previous revision. For software projects, this could be the difference between a successful and a failed build of an older snapshot of your complex code base.
The edit dialog for svn:externals
properties allows you to select the externals and automatically set them explicitly to the HEAD revision.
Als het externe project zich in hetzelfde archief bevindt, dan worden de wijzigingen die je daarin aanbrengt meegenomen in de vastleglijst als je het hoofdproject vastlegt.
If the external project is in a different repository, any changes you make to the external project will be shown or indicated when you commit the main project, but you have to commit those external changes separately.
Als je absolute URL's gebruikt in de svn:externals
definities en je moet een keer je werkkopie verplaatsen (oftewel als de URL van je archief verandert), dan zullen de externe verwijzingen niet mee veranderen en dus zullen deze niet meer werken.
Om zulke problemen te voorkomen, ondersteunen de Subversion clients vanaf versie 1.5 relatieve externe URL's. Er zijn vier verschillende methodes voor het definiëren van relatieve URL's. Bij de volgende voorbeelden gaan we er van uit dat we twee archieven hebben: één op http://example.com/svn/repos-1
en de ander op http://example.com/svn/repos-2
. We hebben een werkkopie opgehaald van http://example.com/svn/repos-1/project/trunk
naar de locatie C:\Working
en de svn:externals
eigenschap is ingesteld op de basislijn.
These URLs always begin with the string ../
for example:
../../widgets/foo common/foo-widget
This will extract http://example.com/svn/repos-1/widgets/foo
into C:\Working\common\foo-widget
.
Merk op dat de URL relatief is ten opzicht van de URL van de map met de svn:externals
eigenschap, niet ten opzichte van de map waar de externe opgeslagen is op de schijf.
These URLs always begin with the string ^/
for example:
^/widgets/foo common/foo-widget
This will extract http://example.com/svn/repos-1/widgets/foo
into C:\Working\common\foo-widget
.
You can easily refer to other repositories with the same SVNParentPath
(a common directory holding several repositories). For example:
^/../repos-2/hammers/claw common/claw-hammer
This will extract http://example.com/svn/repos-2/hammers/claw
into C:\Working\common\claw-hammer
.
URLs beginning with the string //
copy only the scheme part of the URL. This is useful when the same hostname must the accessed with different schemes depending upon network location; e.g. clients in the intranet use http://
while external clients use svn+ssh://
. For example:
//example.com/svn/repos-1/widgets/foo common/foo-widget
This will extract http://example.com/svn/repos-1/widgets/foo
or svn+ssh://example.com/svn/repos-1/widgets/foo
depending on which method was used to checkout C:\Working
.
URLs beginning with the string /
copy the scheme and the hostname part of the URL, for example:
/svn/repos-1/widgets/foo common/foo-widget
This will extract http://example.com/svn/repos-1/widgets/foo
into C:\Working\common\foo-widget
. But if you checkout your working copy from another server at svn+ssh://another.mirror.net/svn/repos-1/project1/trunk
then the external reference will extract svn+ssh://another.mirror.net/svn/repos-1/widgets/foo
.
You can also specify a peg and operative revision for the URL if required. To learn more about peg and operative revisions, please read the corresponding chapter in the Subversion book.
If you specify the target folder for the external as a subfolder like in the examples above, make sure that all folders in between are versioned as well. So for the examples above, the folder common
should be versioned!
While the external will work in most situations properly if folders in between are not versioned, there are some operations that won't work as you expect. And the status overlay icons in explorer will also not show the correct status.
Als je meer informatie wilt hebben over hoe TortoiseSVN omgaat met Eigenschappen, lees dan de paragraaf met de naam “Project Instellingen”.
Lees voor meer informatie over de verschillende methodes voor het benaderen van gemeenschappelijke sub-projecten de paragraaf met de naam “Een veelgebruikt subproject gebruiken”.
Vanaf Subversion 1.6 kun je enkele externe bestanden aan je werkkopie toevoegen, door gebruik te maken van dezelfde syntax als voor mappen. Er zijn wel enkele beperkingen.
The path to the file external must be a direct child of the folder where you set the svn:externals
property.
De URL van een extern bestand moet in hetzelfde archief zijn als de URL van het archief waarin het externe bestand wordt opgehaald, externe bestanden tussen verschillende archieven worden niet ondersteund.
Een extern bestand gedraagt zich net zoals elk ander bestand met versiebeheer, maar deze kunnen niet verplaatst of verwijderd worden met normale commando's; de svn:externals
eigenschap moet in de plaats daarvan gewijzgd worden.
If you already have a working copy of the files or folders you want to include as externals in another working copy, you can simply add those via drag and drop from the windows explorer.
Simply right drag the file or folder from one working copy to where you want those to be included as externals. A context menu appears when you release the mouse button: if you click on that context menu entry, the svn:externals
property is automatically added. All you have to do after that is commit the property changes and update to get those externals properly included in your working copy.