相关疑难解决方法(0)

如何使用源代码管理管理同一项目的开源和商业版本?

我们正在开发一个开源项目,我们正在使用Mercurial进行源代码管理控制.此项目的Mercurial存储库是公共的(我们使用的是Bitbucket).

现在我们有一个客户,我们需要为他们定制我们的开源软件.这些自定义必须保持私有,因此我们可能需要为此客户端创建一个新的Hg存储库; 这个新的存储库将是私有的.

但问题是我们需要[不时]将开放存储库中的更改(例如新功能或错误修复)合并到我们的私有存储库中.

实现这一目标的最佳方法是什么?我读到可以合并两个或多个Mercurial存储库,但历史记录将丢失.由于许多冲突,合并也可能是痛苦的.如果我们将来再获得更多客户,我们应该如何管理他们的存储库呢?我们应该使用一个存储库和多个分支吗?如果两个项目版本开始向不同的方向发展,两个存储库变得越来越不同怎么办?

请分享您的经验.

提前致谢!

git version-control mercurial repository bitbucket

16
推荐指数
2
解决办法
682
查看次数

如何使用mercurial子目录来共享组件和依赖项?

我们用C#开发.NET Enterprise软件.我们正在寻求改进我们的版本控制系统.我之前使用过mercurial并且一直在我们公司进行实验.但是,由于我们开发企业产品,因此我们非常关注可重用的组件或模块.我一直在尝试使用mercurial的子repos来管理组件和依赖,但是遇到了一些困难.以下是源代码管理/依赖关系管理的基本要求:

  1. 可重复使用的组件
    1. 按源共享(用于调试)
    2. 依赖于第三方二进制文件和其他可重用组件
    3. 可以在消费产品的背景下开发并承诺源控制
  2. 依赖
    1. 产品依赖于第三方二进制文件和其他可重用组件
    2. 依赖关系有自己的依赖关系
    3. 应通知开发人员依赖项中的版本冲突

这是我一直在使用的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)

笔记

  1. Repos在CAPS中
  2. 假设所有儿童回购都是子项目
  3. 第三方(二进制)库和内部(源)组件都是位于libs文件夹中的子库
  4. 第三方库保存在单独的mercurial repos中,以便消费项目可以引用特定版本的库(即旧项目可以引用NLog v1.0,而较新的项目可以引用NLog v2.0).
  5. 所有Visual Studio .csproj文件都在第4级(proj*文件夹),允许相关引用依赖项(即../../../libs/NLog/NLog.dll用于所有引用NLog的Visual Studio项目) …

mercurial shared-libraries dependency-management mercurial-subrepos

11
推荐指数
1
解决办法
2355
查看次数

组织依赖项目的最佳方式?

我有一组依赖于其他项目的项目(你可以说实用程序),问题是我每次更改其中任何一个实用程序的代码时,我的同事需要采用最新的代码并在他们的机器上构建使用最新的组件.有一个很好的标准解决方案吗?或者只是将dll集中在共享文件夹上?

PS:

我们正在使用MS source safe 2005,我不希望我的同事每次都使用源代码并在他们的机器上构建,因为他们只需要二进制文件而不是代码.

c# dependencies projects-and-solutions

5
推荐指数
1
解决办法
612
查看次数