我正在考虑将非常大的代码库(主要是C ++)从VSS迁移到SVN。作为该练习的一部分,我想将代码分成更小的项目,以便可以单独进行处理。最大的绊脚石是处理项目依赖关系,其中一个项目需要来自其他项目的dll(和标头)。
当前,开发人员从VSS获取所需的项目并在本地构建它们,项目文件假定所需的所有内容均已检出并与之相关。这显然是一场噩梦,尤其是当需要不同版本的东西时。
在过去的几年中,我一直被maven宠坏,而我过去的大型C ++一直在UNIX和Linux上使用。我已经研究了诸如nuget之类的东西,但是已经决定尝试将解决方案限制为仅使用SVN和Visual Studio构建文件。
我的首选解决方案是使用SVN外部组件从标记中为项目提供所需的标头和二进制文件,并让项目通过变量引用这些标头和二进制文件。这很简单,我遇到的问题是,在依赖项的项目中需要进行更改时,例如库更改。
假设我有一个名为Product1的项目,另一个名为CommonLib1的项目。我希望做的是通过一个变量提供Product1参考CommonLib1的项目文件,该变量的默认值引用了SVN外部提供的文件。然后,当需要更改CommonLib1时,开发人员可以签出该项目,将其加载到他们的工作区中,在Visual Studio中添加依赖项,并且该项目将定义相同的变量,该变量将覆盖Product1中的变量。
我能得到的最接近的似乎是设置一个环境变量来覆盖该设置,但是这需要手动设置和VS重新启动。我想使事情变得尽可能自动化,以使生活更轻松,部分原因是对于没有经验的开发人员/项目的新手,也对于现有的开发人员,这样他们就可以继续工作并以更高的速度前进。
我也完全无法实现此目标。相反,我只是将svn:externals添加到了相关项目的标签中。它可以工作,但是在多个项目上工作时有点笨拙。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句