2012-08-08 76 views
0

假设我正在为具有共同需求的不同客户开发软件。 我使用单一的开发线开发系统,这没关系。每个客户端都在服务器上安装该软件,并通过从bitbucket存储库中提取更新。Mercurial上的多个并行版本

后来,其中一位客户仅针对自己的需求要求定制模块。其他客户也可能有其他自定义需求。

我的问题是:我如何管理定制,拉动(更新)开发主线的新版本,以及只有当他们在场时才报关?

回答

0

一个选项:使定制代码成为代码库的一部分,而不是通过Mercurial进行管理。做这件事有很多很好的理由,包括你没有分叉的危险,并且永远维护单独版本的代码,或者实际上维护一个版本库树的单独分支。这些都是非常沉闷的任务,可能会导致问题,所以如果我是你的话,我会赞成。这取决于你的语言,但我的目标是在MainCodeBase中保留一些模块,以便用户配置使用哪些模块。

第二选项:子存储库。为Customer1制作回购,其中包含该客户的模块并具有MainCodeBase的子存储库。 Customer1只需递归拉取其存储库以获取最新的模块和最新的MainCodeBase。这里的问题是,当你想让多个客户使用相同的模块时,它开始变得很难看。