Dan*_*nes 5 mercurial subrepos branching-and-merging
我有一个mercurial存储库,里面有多个子存储库.存储库有一个visual studio解决方案,其中包含存储库和子存储库中的项目.
假设我想要实现一个新功能,该功能需要更改存储库中的主项目,并更改解决方案中的一个依赖项目(比方说,在依赖项中添加新的共享接口,以及接口的实现)主要项目).
然后我想提交更改,但是要提交给新的命名分支,因为它尚未完成,稍后将合并.使用tortoiseHg我在存储库中提交更改,指定要创建的新分支.提交依次提交子仓库的更改,但在我的测试中,它不会在其存储库中创建新分支,而只是将更改集添加到当前分支.
我可以显式地执行对子仓库的提交并在那时指定分支名称,但我希望有一种方法可以将存储库中的整个更改集一次性提交到每个存储库中的新分支,这样我的工作流程就更清晰了.这可能吗?
首先提交子仓库并在那里创建一个命名分支.
之后,主提交应该继续在与之前相同的分支中提交该子repo.
首先,您应该将这两个存储库视为独立的,完全独立的.换句话说,您在一个存储库中执行某些操作并提交它.然后你在另一个存储库中做一些事情,并提交它.
两个存储库之间的关系是主存储库存储一个文件,即.hgsubstate文件,该文件包含每个子存储库的工作文件夹的父级的哈希.
换句话说,子库本身并不了解它是更大图景的一部分.但是,主存储库知道该子存储库中当前检出的修订.这些知识作为正常提交的一部分提交到存储库中.
这意味着如果您在子存储库中执行某些操作,提交该子存储库,则子存储库现在处于新版本.当您稍后在主存储库中提交时,子存储库中新修订的哈希值将更新为.hgsubstate文件,然后提交.
这背后的目的当然是如果您更新到主存储库中的旧版本,则.hgsubstate文件的旧副本也会被带入工作文件夹,然后子库将更新为该版本,它具有将时钟转回到子存储库在那些修改时的状态的效果.
此外,主存储库上的命令有时也适用于子存储库.如果您推入主存储库,也会推送子存储库,以确保克隆主存储库的其他人也可以安全地依赖于能够克隆子存储库的相应内容.
所以在评论中回答你的问题.
如果您在子存储库中创建了一个名称或其他名称的分支,您将继续在该分支下提交新的变更集.在某些时候,您需要合并,您需要在子存储库和主存储库中合并.
首先,您将合并到子存储库中.这以提交结束,这意味着子存储库现在处于提交合并的变更集.然后,您将合并到主存储库并提交,这将存储该知识,即现在正在使用的子存储库中的更改集.
所以,是的,你需要在以后合并两者.
归档时间: |
|
查看次数: |
1691 次 |
最近记录: |