我们正在开发一个开源项目,我们正在使用Mercurial进行源代码管理控制.此项目的Mercurial存储库是公共的(我们使用的是Bitbucket).
现在我们有一个客户,我们需要为他们定制我们的开源软件.这些自定义必须保持私有,因此我们可能需要为此客户端创建一个新的Hg存储库; 这个新的存储库将是私有的.
但问题是我们需要[不时]将开放存储库中的更改(例如新功能或错误修复)合并到我们的私有存储库中.
实现这一目标的最佳方法是什么?我读到可以合并两个或多个Mercurial存储库,但历史记录将丢失.由于许多冲突,合并也可能是痛苦的.如果我们将来再获得更多客户,我们应该如何管理他们的存储库呢?我们应该使用一个存储库和多个分支吗?如果两个项目版本开始向不同的方向发展,两个存储库变得越来越不同怎么办?
请分享您的经验.
提前致谢!
我们用C#开发.NET Enterprise软件.我们正在寻求改进我们的版本控制系统.我之前使用过mercurial并且一直在我们公司进行实验.但是,由于我们开发企业产品,因此我们非常关注可重用的组件或模块.我一直在尝试使用mercurial的子repos来管理组件和依赖,但是遇到了一些困难.以下是源代码管理/依赖关系管理的基本要求:
这是我一直在使用的mercurial结构:
SHARED1_SLN-+-docs
|
+-libs----NLOG
|
+-misc----KEY
|
+-src-----SHARED1-+-proj1
| +-proj2
|
+-tools---NANT
Run Code Online (Sandbox Code Playgroud)
SHARED2_SLN-+-docs
|
+-libs--+-SHARED1-+-proj1
| | +-proj2
| |
| +-NLOG
|
+-misc----KEY
|
+-src-----SHARED2-+-proj3
| +-proj4
|
+-tools---NANT
Run Code Online (Sandbox Code Playgroud)
PROD_SLN----+-docs
|
+-libs--+-SHARED1-+-proj1
| | +-proj2
| |
| +-SHARED2-+-proj3
| | +-proj4
| |
| +-NLOG
|
+-misc----KEY
|
+-src-----prod----+-proj5
| +-proj6
|
+-tools---NANT
Run Code Online (Sandbox Code Playgroud)
mercurial shared-libraries dependency-management mercurial-subrepos
我有一组依赖于其他项目的项目(你可以说实用程序),问题是我每次更改其中任何一个实用程序的代码时,我的同事需要采用最新的代码并在他们的机器上构建使用最新的组件.有一个很好的标准解决方案吗?或者只是将dll集中在共享文件夹上?
PS:
我们正在使用MS source safe 2005,我不希望我的同事每次都使用源代码并在他们的机器上构建,因为他们只需要二进制文件而不是代码.