我正在重新构建现有代码库。我们正在转向SVN并期待软件活动的增加,我需要一个可扩展和强大的结构。SVN:跨项目共享公用库/代码
我希望我们的要求与其他公司的要求不太相似,所以我会从你们那里得到一些反馈。
问题
我有一些项目:库和应用程序。应用程序依赖于库,而且一些库依赖于对方。
我们有很多产品。每个产品都是包含一些库和一些应用程序的MSI。
这些项目是C++,它们之间的依赖关系是头文件和导入库/ DLL--我们目前正在Windows下开发,但最终将移植到MACOS和Linux。
尽管每个项目都是其中一些项目的独立实体,但我们最终同时更新了其中的几项。例如,在处理app_0时,我们可能会更改lib_a中的某些代码(可能是错误修复,添加的功能等)。 但是我们不想强迫开发人员总是检查项目依赖关系的来源。
潜在的解决方案
每一个项目是在SVN自己的目录,并有一个“dependencies.txt”文件中列出的头,和的.libs .DLL文件它需要以及这些应该在磁盘上创建。一旦检出项目,脚本会自动分析此文件以检索依赖项。头文件从SVN中检索(部分检出),而二进制文件则从服务器中获取。
项目遵循通常的干线/标签/分支结构。
在磁盘上,每个项目都位于其自己的目录中,处于扁平结构中。输出目录包含二进制文件,这可以通过构建项目或作为处理'dependencies.txt'文件的结果从服务器复制而生成。
- 输出
- win32_debug
- lib_a.lib
- lib_a.dll
- win32_debug
- lib_a
- 源
- 公共
- lib_a.h
- other.h
- PROJECT_1
- 依赖。TXT
- 构建
- 来源
- project_1.cpp
这种结构意味着我们可以在PROJECT_1工作,而无需检出来源lib_a。但是我们仍然可以将库检出到'./lib_a'中,并且不用修改project_1就可以使用它的源文件,因为头文件和导入库的位置保持不变。
“安装程序”项目用于发布软件。该项目将签出发布所需的所有项目并构建它们。
在发布期间,为所有项目创建“发布”分支。所有应该进入发行版的变化都将付诸实施。这样我们只需要在结帐(跟踪发布分支)上运行更新以获取最新的更改。
你有问题要问? – 2013-05-07 11:24:21
寻求有关如何解决所陈述的问题和/或对我提出的解决方案的意见的建议。 – JPh 2013-05-07 13:55:26
@JPh - 你最终做了什么? – DemiSheep 2014-06-09 18:26:51