我在一个存储库中处理多个 (2-20) 个非共享祖先项目,这些项目共享存储在存储库中的 GB 二进制数据的公共资源,仅存储在一个地方。这些项目利用svn switch
将其适当的文件夹映射到共享二进制数据的单个 svn URL。
当检出多个副本时,我想在我的工作副本中执行相同的操作,从而避免重新下载我已经拥有的相同 GB 的二进制数据。
(注意:另一个坏消息是项目还使用 svn 1.7 可执行文件来修改自己。)
我做了什么
我所做的是检查项目 A,执行 switch -es; 然后检查项目 B,而不是常规开关, do ,所以项目 Bsvn switch --set-depth=empty --ignore-ancestry http://foobar
的这个工作副本知道它应该指向哪里。然后,我做了和。(1)mv foobar old_foobar
mklink /D foobar ../project_A/foobar
现在的问题
现在的问题是,如果我svn status
在 wc 中使用符号链接进行操作,它会将“foobar”中的所有文件列为非版本化(作为?
状态)。
我也使用 TortoiseSVN,它将图标覆盖显示为黄色三角形“!” (意思可能是冲突的?),但我在“foobar”中没有实际冲突(也没有树冲突)svn status
,如果我svn up
在“foobar”中这样做,它表示它是最新的。
约束
二进制文件容器不会经常更改,即使更改,更改通常也是向后兼容的。因此,工作副本对其中的文件版本有错误的想法不是问题(至少对我而言)。
我不应该更改项目或回购结构,因为我不允许“正式”这样做。
我使用 svn 1.7,因为这些项目实际上使用了一个自包含的 svn 可执行二进制文件来自己工作,如果可能的话,我想坚持下去。
问题
有没有办法利用符号链接(或其他任何东西)来避免在我的硬盘上复制相同 GB 的数据?(如果可能,也避免下载它。)
(1):我在 Windows 上;为方便起见,假设在我的文件系统中,文件夹“project_B”和“project_A”是邻居,即。共享一个共同的祖先,并且该文件夹 foobar 在两个项目中都是顶级的。