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