单个图像文件是SVN外部

时间:2012-10-14 19:20:46

标签: svn tortoisesvn svn-externals

我正在尝试将图像添加为svn:externals,但TortoiseSVN以某种方式拒绝它。

目前,我的本地驱动器上有两个名为repoArepoB的存储库。此外,还有两个名为workAworkB的工作目录签出。 workA结帐repoAworkB结帐repoB

结构是这样的:

  

Z:\回购\ repoA

     

Z:\回购\ repoB

     

Z:\项目\ workA

     

Z:\项目\ workB

我做了什么:

  1. 右键点击Z:\Projects\workB - > TortoiseSVN -> Properties
  2. New -> Externals
  3. 按了New,为本地路径输入了trunk/screenshot.jpg,为网址输入了file:///Z:/repos/repoA/trunk/screenshot.jpg

    enter image description here

    enter image description here

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

  5. 右键点击Z:\Projects\workB - > SVN Commit..
  6. 右键点击Z:\Projects\workB - > SVN Update..
  7. 我收到了这个错误:

      

    Z:\项目\ workB \树干\ screenshot.jpg

         

    不支持的外部:外部文件的网址

         

    'file:/// Z:/repos/repoA/trunk/screenshot.jpg'不在存储库中

         

    '文件:/// Z:/回购/ repoB'

    enter image description here

    当我在workB/trunk上提交新的更改时,它不会更新图像。因此,在SVN Update上执行workB/trunk不会从repoA导入图像。我还有一个导入为svn:externals的文件夹,并且正确导入了其下的文件。所以我怀疑无法指定单个文件。我不知道。

    在repo-browser中,真实文件不存在,只有链接文件。

    enter image description here

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

    enter image description here

    那有可能吗?或者我是以错误的方式做到的?

    更新

    根据this article

      

    Subversion 1.6还引入了对文件外部定义的支持。文件外部组件的配置与目录的外部组件类似,并在工作副本中显示为版本化文件。

         

    例如,假设您的存储库中有/trunk/bikeshed/blue.html文件,并且您希望此文件(如修订版40中所示)显示在/ trunk / www /的工作副本中green.html。

    所以v1.6或更高版本似乎是可能的。我正在使用 svn,版本1.7.6(r1370777)。 其他参考文献:

2 个答案:

答案 0 :(得分:11)

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

在官方文件中查看此限制:
http://tortoisesvn.net/docs/nightly/TortoiseSVN_en/tsvn-dug-externals.html

摘要:

  

外部文件的URL必须与外部文件插入的URL位于同一个存储库中;不支持存储库间文件外部。

答案 1 :(得分:1)

我有同样的问题,似乎你曾经能够在Subversion 1.6中拥有外部文件但是'bug'现在已经在subversion 1.7中修复了!并且您只能拥有从一个仓库到另一个仓库的外部文件夹,而不是文件