交换目录的svn工作副本中的符号链接

交换目录的svn工作副本中的符号链接,svn,switch-statement,symlink,working-copy,Svn,Switch Statement,Symlink,Working Copy,我在一个repo中参与了几个(2-20个)非共享祖先的项目,这些项目只在一个地方共享存储在存储库中的二进制数据的GBs公共资源。这些项目利用svn开关将其适当的文件夹映射到共享二进制数据的单个svn URL 当签出多个副本时,我希望在我的工作副本中执行相同的操作,从而避免重新下载我已经拥有的相同GBs的二进制数据 (注意:另一个坏消息是,项目还使用SVN1.7可执行文件来修改自身。) 我所做的 我所做的是检查项目A,进行切换-es;然后检查项目B,但不要使用常规开关,而是使用dosvn开关——s

我在一个repo中参与了几个(2-20个)非共享祖先的项目,这些项目只在一个地方共享存储在存储库中的二进制数据的GBs公共资源。这些项目利用
svn开关
将其适当的文件夹映射到共享二进制数据的单个svn URL

当签出多个副本时,我希望在我的工作副本中执行相同的操作,从而避免重新下载我已经拥有的相同GBs的二进制数据

(注意:另一个坏消息是,项目还使用SVN1.7可执行文件来修改自身。)

我所做的 我所做的是检查项目A,进行切换-es;然后检查项目B,但不要使用常规开关,而是使用do
svn开关——set depth=empty——忽略祖先http://foobar
,因此项目B的这个工作副本知道它应该指向哪里。然后,我做了
mv foobar old\u foobar
mklink/D foobar../project\u A/foobar
。(一)

现在的问题 现在的问题是,如果我在wc中使用符号链接执行
svn status
,它会将“foobar”中的所有文件都列为非版本文件(作为
状态)

我还使用了OrtoiseSVN,它将图标覆盖显示为黄色三角形“!”(意思可能是Confircted?),但我在
svn状态中没有实际冲突(也没有树冲突),如果我在“foobar”中有
svn up
,它会说它是最新的

约束条件 二进制文件容器不会经常更改,即使更改,更改通常也是向后兼容的。因此,这不是一个问题(至少对我来说),工作副本对其中的文件版本有错误的想法

我不应改变项目或回购结构,因为我不被允许“正式”这样做

我使用svn 1.7,因为项目实际上使用了一个自包含的svn可执行二进制文件来处理自己的工作,如果可能的话,我想坚持使用它

问题 有没有办法利用符号链接(或其他方式)来避免在我的硬盘上复制相同的GBs数据?(如有可能,还应避免下载。)



(1) :我在窗户上;为了方便起见,假设在我的文件系统中,“project_B”和“project_A”文件夹是相邻的,即共享一个共同的祖先,foobar文件夹在这两个项目中都是顶级的。

我们有一种情况,即多个项目可能相互嵌套

我们使用的解决方案可能适合您

  • 对于项目,请将其正常地从存储库中签出
  • 为将包含数据的路径创建一个
    svn:ignore
    条目,并确保该路径未被跟踪
  • 将数据签出到该路径
  • 对于其他项目,请执行步骤1和2,但创建符号链接
  • 现在,您的所有项目都将忽略这些额外的文件,但您仍然可以通过svn管理数据


    是的,这意味着您需要记住
    svn update&&svn update data/
    以确保您的项目完全是最新的,但这并不是一件很麻烦的事。

    Hm,在此解决方案中,
    svn:ignore
    是否只能存储在工作副本中?未提交到存储库?(因为我不应该改变我的[数百名]同事的工作流程。)我了解到有一个“每用户忽略”设置,可能适合一个,数百名同事?哇!那么,作为一个全组织的解决方案,是否值得提出呢?我认为
    global ignores
    指令可能是一个可行的解决方案。即使您有其他具有相同文件夹名称的项目(这应该是存储库的一部分),一旦显式添加它们,它们也会正常工作。