我在一个仓库中处理非共享 - 祖先的几个(2-20)项目,它们只在一个地方共享存储在存储库中的二进制数据GB的公共资源。这些项目利用svn switch
将相应的文件夹映射到共享二进制数据的单个svn URL。
我希望在我的工作副本中执行相同操作时检查多个,这样就可以避免重新加载我已经拥有的相同GB的二进制数据。
(注意:另一个坏消息是项目还使用svn 1.7可执行文件来修改自己。)
我所做的是检查项目A ,做开关-es;然后查看项目B ,但不是常规切换,而是执行svn switch --set-depth=empty --ignore-ancestry http://foobar
,因此项目B 的这个工作副本知道应该指向的位置。然后,我做了mv foobar old_foobar
和mklink /D foobar ../project_A/foobar
。 (1)
现在的问题是,如果我使用符号链接在wc中svn status
,它会将“foobar”中的所有文件列为非版本化(?
状态)。
我也使用TortoiseSVN,它将图标叠加显示为黄色三角形“!” (意思是可能会被混淆?),但我在svn status
中没有实际冲突(也没有树冲突),如果我在“foobar”中svn up
,则表示它是最新的。< / p>
二进制文件容器不会经常更改,即使这样做,更改通常也是向后兼容的。因此,工作副本对其中的文件版本有错误的想法(至少对我而言)不是问题。
我应该不更改项目或回购结构,因为我不允许“正式”这样做。
我使用svn 1.7 ,因为项目实际上使用了一个自包含的svn可执行二进制文件来处理自己的工作,所以如果可能,我想坚持下去。
有没有办法利用符号链接(或其他任何东西)以避免在我的硬盘上复制相同的GB数据? (如果可能,也避免下载。)
(1):我在Windows上;为了简单起见,假设我文件系统中的 ,文件夹“project_B”和“project_A”是邻居,即。共享一个共同的祖先,该文件夹foobar在两个项目中都是顶级。
答案 0 :(得分:1)
我们遇到多个项目可能互相嵌套的情况。
我们使用的解决方案可能适合您;
svn:ignore
条目,并确保不跟踪该路径。现在您的所有项目都会忽略这些额外的文件,但您仍然可以通过svn管理数据。
是的,这意味着您需要记住svn update && svn update data/
以确保您的项目完全是最新的,但这并不是一件容易的事。