我试图把一张图片添加到svn:externals
,但是TortoiseSVN好像拒绝了它。
目前我本地有两个仓库,分别命名为repoA
和repoB
。同时也有两个工作目录的检出,分别命名为workA
和workB
。workA
是repoA
的检出,workB
是repoB
的检出。
目录结构如下:
Z:\repos\repoA
Z:\repos\repoB
Z:\Projects\workA
Z:\Projects\workB
我的做法:
- 右键单击
Z:\Projects\workB
->TortoiseSVN -> 属性
- 点击
New -> Externals
点击
New
,在本地路径中输入trunk/screenshot.jpg
,在URL中输入file:///Z:/repos/repoA/trunk/screenshot.jpg
。点击
OK
关闭所有设置窗口。- 右键单击
Z:\Projects\workB
->SVN 提交..
- 右键单击
Z:\Projects\workB
->SVN 更新..
然后我遇到了这个错误:
Z:\Projects\workB\trunk\screenshot.jpg
不支持的外部链接: 文件外部链接的url
'file:///Z:/repos/repoA/trunk/screenshot.jpg'不在代码库中
'file:///Z:/repos/repoB'
workB/trunk
上提交新更改时,它不会更新图像。因此,在workB/trunk
上执行SVN Update
不会从repoA导入图像。我还有一个被导入为svn:externals
的文件夹,其下的文件被正确导入。因此,我怀疑单个文件无法被指定。我不知道。在仓库浏览器中,真实文件不存在,只有链接文件。
repoA
中有真实的图像文件,尽管错误提示说没有。
更新
根据这篇文章,
Subversion 1.6 还引入了文件的外部定义支持。文件外部定义的配置方式与目录相同,作为版本化文件出现在工作副本中。
例如,假设您在存储库中有文件 /trunk/bikeshed/blue.html,并且您希望该文件在修订版 40 中显示为 green.html 出现在 /trunk/www/ 的工作副本中。
因此,似乎在 v1.6 或更高版本中是可能的。而我正在使用 svn,版本 1.7.6(r1370777)。 其他参考:
lib
文件夹是一个外部文件夹,它是从repoA
导入的。lib
文件夹下的文件被成功导入而没有出现错误。如何设置lib
文件夹作为svn:externals在这个问题中有所描述:https://dev59.com/o2nWa4cB1Zd3GeqP1YbF - TenoSubversion 1.6还引入了对文件的外部定义支持。文件外部定义的配置方式与目录外部定义相同,并在工作副本中显示为一个版本化的文件。
此外,这个页面指出,在v1.6之前的早期版本中,SVN存在文件外部定义问题。我运行了svn --version
,它显示svn, version 1.7.6 (r1370777)
,所以我使用的版本似乎没问题。 - Teno