我有一个具有相当大代码库的项目。与该代码库相关联的是大量文档,需要与源代码保持相同的版本,并且还需要从代码库中轻松访问。但是,当我们的构建机器构建代码库时,我不希望通过让构建机器检查构建所不需要的数百兆字节的开发文档来扩展构建过程的长度。
如果是在Unix上,我可以在代码库的'source'目录的同级别上创建一个'docs'目录。然后,源代码树中的各个项目可以使用符号链接引用文档树中的文档,当构建机器执行构建时,它只会检查源目录,因此不会浪费时间检出不需要的docs目录。
然而,在Windows上使用SVN我完全没有办法以合理的方式设置它,因为SVN不支持Windows上的符号链接,即使Windows有它们。
到目前为止,我提出的唯一解决方法是在源树中创建批处理文件,该文件使用cmd.exe和相对文件引用来打开文档树中的文档文件。它有效,但由于某种原因,我不能完全用手指在嘴上留下令人讨厌的味道。
有人能想出更好的方法吗?
答案 0 :(得分:0)
经过一些研究后,我认为我有一个使用externals属性的解决方案。
首先使用svn:external属性引用同一存储库中的目录。在trunk / Proj1上设置此项以创建引用DocsDir / Proj1Docs内容的Proj1 / Docs
../DocsDir/Proj1Docs Docs
这会在引用/ DocsDir / Proj1Docs的Proj1 / Docs中创建一个断开连接的子工作副本。 Proj1 / docs必须不以前作为外部工作副本的一部分存在(这是有道理的,因为这将使它同时成为两个工作副本的一部分)。如果编辑Proj1 / Docs的内容,则在“父”工作副本中执行svn status将列出对子工作副本的更改,但您必须单独将更改提交给子副本。这不是什么大问题。
其次使用svn:external属性引用同一存储库中的文件。在trunk / Proj1上设置它以创建引用DocsDir / Readme.txt的Proj1 / Readme.txt。
../DocsDir/Readme.txt Readme.txt
对于文件引用,导入引用文件的目录必须已经是拥有工作副本的一部分。在这种情况下,不会创建子工作副本,如果您编辑该文件,它将作为拥有工作副本的一部分无缝地提交。
在这两种情况下,构建机器都可以执行
svn checkout --ignore-externals <path>
在没有所有庞大文档的情况下检查我们的代码库。
任何人都可以看到此策略存在问题吗?