繁体   English   中英

SVN工作副本中已切换目录的符号链接

[英]Symbolic link in svn working copy for a switched directory

我在单个存储库中处理了几个(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_foobarmklink /D foobar ../project_A/foobar (1)

现在的问题

现在的问题是,如果我做svn status与符号链接的厕所,它会列出所有文件中的“foobar的”非版本(如?状态)。

我也使用TortoiseSVN,它将图标叠加层显示为黄色三角形“!”。 (意味着可能已被混淆?),但我在svn status没有实际冲突(也没有树冲突),如果我确实在“ foobar”中进行了svn up攻击,则表示它是最新的。

约束

二进制文件容器不会经常更改,即使它们发生更改,更改通常也是向后兼容的。 因此,工作副本对它们中的文件版本有错误的想法(至少对我而言)不是问题。

应该改变项目或回购的结构不允许我这样做,“正式”。

我使用的是svn 1.7 ,由于这些项目实际上是使用一个自包含的svn可执行二进制文件来进行自身的工作,因此,我尽可能地坚持这一点。

有没有一种方法可以利用符号链接(或其他方式)来避免在硬盘驱动器上复制相同的GB数据? (如果可能,也避免下载。)


(1):我在Windows上; 为了简便起见,假设在我的文件系统中 ,文件夹“ project_B”和“ project_A”是邻居。 共享一个共同的祖先,并且该文件夹foobar在两个项目中都是顶层。

我们遇到的情况是,多个项目可能相互嵌套。

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

  1. 对于项目,请照常从存储库中检出它。
  2. 为将包含数据的路径创建一个svn:ignore条目,并确保未跟踪该路径。
  3. 签出到该路径的数据。
  4. 对于其他项目,请执行步骤1和2,但应创建一个符号链接。

现在,您所有的项目都将忽略这些多余的文件,但是您仍然可以通过svn管理数据。

是的,这意味着您需要记住svn update && svn update data/以确保您的项目是最新的,但这并没有什么麻烦。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM