单一图像文件如何变成SVN外部引用

10

我试图把一张图片添加到svn:externals,但是TortoiseSVN好像拒绝了它。

目前我本地有两个仓库,分别命名为repoArepoB。同时也有两个工作目录的检出,分别命名为workAworkBworkArepoA的检出,workBrepoB的检出。

目录结构如下:

Z:\repos\repoA

Z:\repos\repoB

Z:\Projects\workA

Z:\Projects\workB

我的做法:

  1. 右键单击 Z:\Projects\workB -> TortoiseSVN -> 属性
  2. 点击 New -> Externals
  3. 点击 New,在本地路径中输入 trunk/screenshot.jpg,在URL中输入 file:///Z:/repos/repoA/trunk/screenshot.jpg

    enter image description here

    enter image description here

  4. 点击 OK 关闭所有设置窗口。

  5. 右键单击 Z:\Projects\workB -> SVN 提交..
  6. 右键单击 Z:\Projects\workB -> SVN 更新..

然后我遇到了这个错误:

Z:\Projects\workB\trunk\screenshot.jpg

不支持的外部链接: 文件外部链接的url

'file:///Z:/repos/repoA/trunk/screenshot.jpg'不在代码库中

'file:///Z:/repos/repoB'

enter image description here

当我在workB/trunk上提交新更改时,它不会更新图像。因此,在workB/trunk上执行SVN Update不会从repoA导入图像。我还有一个被导入为svn:externals的文件夹,其下的文件被正确导入。因此,我怀疑单个文件无法被指定。我不知道。在仓库浏览器中,真实文件不存在,只有链接文件。

enter image description here

repoA中有真实的图像文件,尽管错误提示说没有。

enter image description here

所以这是否可能实现?还是我方法有误?
更新
根据这篇文章
Subversion 1.6 还引入了文件的外部定义支持。文件外部定义的配置方式与目录相同,作为版本化文件出现在工作副本中。
例如,假设您在存储库中有文件 /trunk/bikeshed/blue.html,并且您希望该文件在修订版 40 中显示为 green.html 出现在 /trunk/www/ 的工作副本中。
因此,似乎在 v1.6 或更高版本中是可能的。而我正在使用 svn,版本 1.7.6(r1370777)。 其他参考:
2个回答

11

我认为这是因为您不能在两个不同的存储库(例如RepoA和repoB)之间使用外部文件功能。

请查看官方文档中的此限制:
http://tortoisesvn.net/docs/nightly/TortoiseSVN_zh_CN/tsvn-dug-externals.html

摘要:

用于文件外部引用的URL必须与将插入文件外部引用的URL处于同一存储库中;不支持存储库之间的文件外部引用。


1
你不能在两个不同的代码库之间使用外部文件功能。这对我来说没有意义,因为lib文件夹是一个外部文件夹,它是从repoA导入的。lib文件夹下的文件被成功导入而没有出现错误。如何设置lib文件夹作为svn:externals在这个问题中有所描述:https://dev59.com/o2nWa4cB1Zd3GeqP1YbF - Teno
外部文件(直接外部文件)是与外部文件夹(带有内部文件的文件夹)不同的功能。也许这就是你感到困惑的地方? - TridenT
1
外部文件(直接外部文件)是与外部文件夹(带有内部文件的文件夹)不同的功能。这是问题所在。哪里说文件不能是外部文件,但目录可以(目录下的文件也可以)? - Teno
根据这篇文章Subversion 1.6还引入了对文件的外部定义支持。文件外部定义的配置方式与目录外部定义相同,并在工作副本中显示为一个版本化的文件。 此外,这个页面指出,在v1.6之前的早期版本中,SVN存在文件外部定义问题。我运行了svn --version,它显示svn, version 1.7.6 (r1370777),所以我使用的版本似乎没问题。 - Teno
1
我认为这是Subversion客户端的限制,而不是Subversion服务器的限制。我应该去哪里查看Subversion的管理者是否计划修复这个问题?从1.8.13升级到1.9.2似乎没有解决这个问题。 - 2NinerRomeo

1

我曾经也遇到过同样的问题。似乎在Subversion 1.6中你可以使用外部文件,但是这个“缺陷”已经在subversion 1.7中修复了!现在你只能从一个仓库外部链接到另一个仓库的文件夹,不能链接文件。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接