假设我正在为具有共同需求的不同客户开发软件。我用单线开发开发系统,没关系。每个客户端都在服务器上安装了软件,并通过从 bitbucket 存储库中提取来进行更新。
后来,其中一位客户要求定制模块仅用于他自己的需要。其他客户也可能有其他定制需求。
我的问题是:我如何管理定制,拉(更新)开发主线的新版本,以及只有在它们存在时的海关?
一种选择:使自定义成为代码库的一部分,而不是通过 Mercurial 进行管理。这样做有很多很好的理由,包括你不会分叉和维护单独的代码版本,或者确实维护存储库树的单独分支。这两个都是相当枯燥的任务,可能会导致问题,所以如果我是你,我会赞成。这取决于您的语言,但我的目标是在 MainCodeBase 中保留大量模块,并通过某种方式让用户配置使用的模块。
第二种选择:子存储库。为 Customer1 创建一个包含该客户模块并具有 MainCodeBase 子存储库的存储库。Customer1 只需要递归地拉取他们的存储库以获取最新的模块和最新的 MainCodeBase。这里的问题是,当您希望多个客户使用同一个模块时,它开始变得丑陋。