交换目录的svn工作副本中的符号链接
我在一个repo中参与了几个(2-20个)非共享祖先的项目,这些项目只在一个地方共享存储在存储库中的二进制数据的GBs公共资源。这些项目利用交换目录的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
svn开关
将其适当的文件夹映射到共享二进制数据的单个svn URL
当签出多个副本时,我希望在我的工作副本中执行相同的操作,从而避免重新下载我已经拥有的相同GBs的二进制数据
(注意:另一个坏消息是,项目还使用SVN1.7可执行文件来修改自身。)
我所做的
我所做的是检查项目A,进行切换-es;然后检查项目B,但不要使用常规开关,而是使用dosvn开关——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
指令可能是一个可行的解决方案。即使您有其他具有相同文件夹名称的项目(这应该是存储库的一部分),一旦显式添加它们,它们也会正常工作。