gpt4 book ai didi

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

转载 作者:IT王子 更新时间:2023-10-29 01:28:50 28 4
gpt4 key购买 nike

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

现在我们有一个客户,我们需要为其定制我们的开源软件。这些定制必须保密,因此我们可能需要为此客户端创建一个新的 Hg 存储库;这个新的存储库将是私有(private)的。

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

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

请分享您的经验。

提前致谢!

最佳答案

您所描述的是分布式版本控制系统的标准事物:在两个存储库中进行开发并将一个存储库保留为另一个存储库的子集。首先为私有(private)开发制作克隆:

hg clone open private

然后进入 private 并在那里创建新功能。正常提交。 private 存储库现在将包含比 open 存储库更多的变更集——即新功能。

当错误修复和新功能作为正常开源过程的一部分放入open 存储库时,您将它们 pull 入private 存储库:

cd private
hg pull
hg merge

这样您就可以保持不变:private 存储库始终包含开放版本中的所有内容,以及私有(private)增强功能。如果您在私有(private)版本上工作并发现了一个错误,那么请记得查看开放版本以查看该错误是否也存在。如果是,则先在开放版本中修复,将bugfix merge 到私有(private)版本中。如果您错误地修复了私有(private)版本中的错误,则使用 hg transplant 将错误修复复制到另一个开放版本。

历史不会丢失。当您执行 hg merge 时,您将必须像往常一样解决 merge ,并且冲突只会与您的私有(private)更改所需的一样大。

要记住的重要一点是永远不要以另一种方式 push (或 pull ),除非您想开始将一些私有(private)更改发布到开源版本中。

您可以对不同的客户端多次使用此设置,如果多个客户端需要相同的私有(private)增强,您还可以根据需要在不同的私有(private)存储库之间推送/pull 变更集。

关于git - 如何使用源代码管理管理同一项目的开源和商业版本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7686193/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com