I'm trying to set up svn:externals
with TortoiseSVN on a Windows machine. I have two projects and both repositories have been already created on the same local machine.
The current structure looks like this. I created repoA
, repoB
for repositories and workA
and workB
for working directories (checkouts).
Repositories
Z:\repos\repoA
Z:\repos\repoB
Working Directories
Z:\Projects\workA\trunk\core.php
Z:\Projects\workA\trunk\lib\lib01.php
Z:\Projects\workB\trunk\core_mod.php
Z:\Projects\workB\trunk\lib\
(there are tags
and branches
folders but they are omitted to keep the question simple.)
What I'd like to achieve is the file(s) under workA\trunk\lib\
in this case lib01.php
to be automatically copied into the workB\trunk\lib\
directory.
In order to set this up, what I've done is as follows:
- Checked out
workA
and assigned it torepoA
and checked outworkB
and assigned it torepoB
- Comitted the
workA\trunk
folder so therepoA
is up to date. - In oreder to assign an import location for
workB\trunk\lib
, right clicked on theworkB
folder and choseTortoiseSVN -> Properties
. - Clicked on
New -> Externals
and clickedNew...
typed
./trunk/lib
in theLocal path
form field. For theURL
field, typedfile:///Z:/repos/repoA/trunk/lib
. By pressing the...
button, repo-browser opened and helped to select the target folder.Clicked
Ok
a few times to close the settings windows. I assumed the externals setting was done.- Created a file,
Z:\Projects\workB\trunk\core_mod.php
- Right clicked on
Z:\Projects\workB\trunk\
and selectedSVN Comit
to comit theworkB
torepoB
.
I expected at this point, the lib01.php would be automatically imported in the Z:\Projects\workB\trunk\lib
folder but nothing is copied. I also tried SVN Update
by right clicking on the workB\trunk
folder. But the workB\trunk\lib
folder kept empty.
I suspect the relative path ./trunk/lib
must be mistaken. I don't know. If you can point out what I'm doing wrong, it would be appreciated.
Update
6a - commit changed Working Copy WorkB to repo
This was a blind spot for me. I right clicked on Z:\Projects\workB
and selected SVN Commit...
and it gave the following error.
After clicking the OK button immediately I got a dialog window asking whether to update the folder and I clicked OK. Then TortoiseSVN started updating Z:\Projects\workB
and I got this error. But after this, when I re-commited Z:\Projects\workB
, it went through without an error.
("trunk/lib" in your case will be more bulletproof, I suppose).
Thanks, when I reselected Property
of the workB
folder and clicked on the Edit
button for the svn:externals
, TortoiseSVN automatically adjusted ./trunk/lib
to trunk/lib
. Now it is set to be so.
6b - test with repobrowser on RepoB (just fastest way), that definition is correct
I right clicked on Z:\repos\repoB
and chose TortoiseSVN -> repo-browser
and browsed down to the trunk folder. It looks as follows. Does it look right? I really don't know since I never had worked on this task. The lib folder under the trunk folder is empty in the repo-browser.
The Z:\Projects\workB\trunk\lib
folder is still empty. The error message suggests to relocate 'Z:\Projects\workB' but I'm not sure what it means.
Repo-Broswer show two lib folders inside trunk - one external and one real (not needed) - it's problem.
- This was it. Thanks. I deleted the reallib
folder in the repo-browser,Z:\Projects\workB\trunk\lib
, and performedSVN Update
onZ:\Projects\workB
. NowZ:\Projects\workB\trunk\lib\lib01.php
was automatically created. This was a really long journey to solve. – Slub