gpt4 book ai didi

mercurial - 我可以将对多个 mercurial 子存​​储库的更改提交到一个新的命名分支吗?

转载 作者:行者123 更新时间:2023-12-04 18:52:28 26 4
gpt4 key购买 nike

我有一个 mercurial 存储库,里面有多个子存储库。存储库有一个 Visual Studio 解决方案,其中包含存储库和子存储库中的项目。

假设我想实现一项新功能,该功能需要更改存储库中的主项目并更改解决方案中的其中一个依赖项项目(比如说,在依赖项中添加一个新的共享接口(interface),并在主要项目)。

然后我想提交更改,但要提交到一个新的命名分支,因为它尚未完成,稍后将被 merge 。使用 tortoiseHg 我在存储库中提交更改,指定要创建的新分支。提交反过来提交子存储库的更改,但在我的测试中,它不会在其存储库中创建新分支,而只是将更改集添加到当前分支。

我可以明确地执行对子存储库的提交并在那时指定分支名称,但我希望有一种方法可以将存储库中的整个更改集一次性提交到每个存储库中的新分支,这样我的工作流程就更干净了。这可能吗?

最佳答案

首先提交子仓库并在那里创建一个命名分支。

之后,主提交应继续提交到与以前相同的分支中的该子存储库。

首先,您应该将两个存储库视为独立的、完全独立的。换句话说,您在一个存储库中做某事并提交。然后你在另一个存储库中做一些事情,并提交它。

两个存储库的关系是主存储库存储一个文件,即 .hgsubstate 文件,其中包含每个子存储库的工作文件夹的父级哈希。

换句话说,子存储库本身并不知道它是更大图景的一部分。但是,主存储库知道该子存储库中当前 checkout 的修订。这些知识作为正常提交的一部分提交到存储库中。

这意味着如果您在子存储库中执行某项操作,提交该操作,子存储库现在处于新修订版。当您稍后在主存储库中提交时,子存储库中新修订的哈希会更新到 .hgsubstate 文件中,然后提交。

这背后的目的当然是,如果您在主存储库中更新到较旧的修订版,则 .hgsubstate 文件的旧副本也会被带到工作文件夹中,然后子存储库会更新到该修订版,当这些修订在起作用时,它的效果是让时钟回到子存储库的样子。

此外,主存储库上的命令有时也适用于子存储库。如果您推送主存储库,子存储库也会被推送,以确保克隆您的主存储库的其他人也可以安全地依赖能够为子存储库克隆适当的内容。

所以在评论中回答你的问题。

如果您在子存储库中创建一个分支,命名或其他名称,您将继续在该分支下提交新的变更集。在某些时候您需要 merge ,并且您需要在子存储库和主存储库中进行 merge 。

首先,您将 merge 到子存储库中。这以提交结束,这意味着子存储库现在位于提交 merge 的变更集中。然后你 merge 到主存储库并提交,它存储了知识,现在正在使用的子存储库中的哪个变更集。

所以是的,你需要在以后 merge 两者。

关于mercurial - 我可以将对多个 mercurial 子存​​储库的更改提交到一个新的命名分支吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4204460/

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