【发布时间】:2010-11-14 10:50:12
【问题描述】:
在我工作的地方,我们需要重新思考我们开发软件的方式并跟踪每个发布的版本。您对解决我们的问题有什么建议吗?
我们在 Windows 上使用 VS 2005(和 C++ Builder 用于一些接口的东西)在 C++ 中开发
我们使用 GIT,但可以想象到的更糟糕的方式。我们对迁移到另一个源代码管理持一定的开放态度。
我们有 40 多个内部开发的 DLL。其中许多可以经常更新。
我们有几个完全不同的项目依赖于这些 DLL。
我们每年交付 100 多个系统,每个系统都需要自定义配置。大多数还需要自定义补丁。我们尽我们所能将这些补丁带回主干,但分叉是不可避免的。
如果几年后我们必须更新客户的系统,我们应该能够取回用于该版本的代码和所有环境参数。我们需要一种方法来验证此代码是否与客户端系统上的二进制文件匹配。取回代码应该尽可能简单,也许除了编译器之外,我们应该通过一些简单的操作来获得编译所需的一切。
无论补丁位于哪个项目 (DLL) 中,程序员都应该能够为客户端系统发布更新,而无需依赖任何其他程序员。他应该能够快速完成(不到 30 分钟)。这使得单一官方发布的概念几乎是不可能的。
在同一项目上工作的开发人员之间交换代码应该简单快捷。
考虑到我们庞大的代码库,我们希望限制开发人员在获得补丁时必须重新编译的次数(必须共享二进制文件)。
开发人员应该能够轻松地从一个客户端的系统版本切换或分支到另一个(通常必须同时处理多个版本)。
编辑: - 到目前为止,我们还没有使用 makefile,但这是我们愿意考虑的。一切都是使用 VS 解决方案构建的。
【问题讨论】:
-
您所说的“我们使用 GIT,但以可想象的更糟糕的方式”是什么意思?
-
我们没有任何规范的回购。有人可以发布新版本的 DLL,但将代码保留在自己的存储库中。无法从 DLL 版本追溯到代码。
-
有没有办法尝试将代码合并到更少的分支中?听起来似乎出于某种原因(时间限制、缺乏领导力、开发人员之间没有足够的有效沟通)做出了一些糟糕的选择,最终对于任何像你这样试图改善情况的人来说,这听起来就像是地狱般的一小块。跨度>
-
官方上我们不会“维护”很多分支。当发现自己在类似箭鱼的情况下面临压力减去乐趣时,问题就出现了。此外,当我们更新客户的软件时,我们需要做的修改很少。每个客户的系统也有自己的自定义功能,这些功能并不总是很适合架构。
标签: c++ git dll build-process versioning