gpt4 book ai didi

mercurial - 使用 Mercurial 区分私有(private)版本和公共(public)版本

转载 作者:行者123 更新时间:2023-12-03 02:51:53 25 4
gpt4 key购买 nike

您将如何使用 Mercurial 来解决以下问题。

假设我有一个 Core 库。我现在想开发一个名为 Extension 的库扩展。我想让 Core 在物理上与 Extension 分开,也就是说,Core 是一个开源库,Extension 是一个基于 Core 构建的私有(private)库(也许它包含一些我想保留个人的东西。无论如何。)。显然我不想将扩展中的整个源代码推送到公共(public)存储库。但另一方面,我可能想将某些更改从扩展推送到核心(如果我决定将部分扩展“捐赠”到核心),反之亦然(如果我想 merge 错误修复)。

您将如何解决这个问题,最大限度地减少泄漏 Extension to Core 的风险(一旦历史记录被推送到公共(public)服务器,就没有回头路了!),同时保持灵 active 以针对某些更改执行此操作。分支机构?克隆人? MQ?还有别的事吗?

我目前只熟悉克隆存储库,并且非常喜欢它的简单性。

编辑:我想出了这个方案,但我无法让它在 Windows 下工作。两个存储库(核心和扩展)。在扩展中有两个分支,也是核心和扩展。现在,您可以在 Mercurial 中为每个存储库注册一个钩子(Hook),因此我想在核心存储库中注册一个“pretxnchangegroup”钩子(Hook),该钩子(Hook)不允许从扩展分支 checkin ,如解释的 in the Mercurial book 。但我不太明白它在 Windows 下的工作原理。所以:

  • 有人有 Windows 下类似的示例(事实上,任何改变事务结果的钩子(Hook))?
  • 我仍然可以使用移植来挑选从扩展分支到核心分支的更改,对吧?

最佳答案

经过一些测试,我将尝试这个方案。两个主存储库和两个命名分支:核心和扩展。

一个主要核心存储库,应仅包含核心变更集和源代码。因此它应该只包含来自核心分支的变更集。这是使用该存储库的 hgrc 中的以下存储库 Hook 进行检查的:

pretxnchangegroup.branch = hg头像--template“当前分支:{分支}”|找到“扩展”&& 退出 1 ||退出0

看起来有点奇怪,但基本上它会在推或拉完成后、提交之前被触发。此时,如果 Hook 失败,事务将回滚。因此,该钩子(Hook)会查找扩展分支的变更集,如果找到它就会失败 - 有效地禁止扩展更改进入核心存储库。

第二个存储库包含核心分支和扩展分支以及变更集,并且是两个分支之间交换变更集的地方。正常从Core merge 到Extension,从Extension移植到Core。

希望这对其他人有帮助。

关于mercurial - 使用 Mercurial 区分私有(private)版本和公共(public)版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/602202/

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