Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mercurial “链接”两个存储库的修订版_Mercurial_Revision History - Fatal编程技术网

Mercurial “链接”两个存储库的修订版

Mercurial “链接”两个存储库的修订版,mercurial,revision-history,Mercurial,Revision History,我们的情况是,我们有一个通用模块存储库,它在不同的项目存储库之间共享。我们面临的问题是,如果您返回到项目的早期版本,我们无法真正知道该项目使用了哪个通用模块版本。我们可以检查日期和时间戳,看看它们是否匹配,但必须有另一种更优雅的方法来做到这一点。通用模块存储库的更改频率不如项目本身。我的问题是:你是如何处理这个问题的?最好的做法是什么?我认为你追求的东西有两种选择,尽管我认为这两种选择都只会对未来有所帮助,并且不能真正修复你过去的历史 子存储库 是您问题的原始Mercurial解决方案。 将常规

我们的情况是,我们有一个通用模块存储库,它在不同的项目存储库之间共享。我们面临的问题是,如果您返回到项目的早期版本,我们无法真正知道该项目使用了哪个通用模块版本。我们可以检查日期和时间戳,看看它们是否匹配,但必须有另一种更优雅的方法来做到这一点。通用模块存储库的更改频率不如项目本身。我的问题是:你是如何处理这个问题的?最好的做法是什么?

我认为你追求的东西有两种选择,尽管我认为这两种选择都只会对未来有所帮助,并且不能真正修复你过去的历史

子存储库

是您问题的原始Mercurial解决方案。 将常规模块repo克隆到主项目工作副本中,并将其工作副本更新为要使用的版本。 然后设置一个.hgsub文件,告诉主项目它有一个子repo,它应该去哪里,它的来源在哪里。 然后,当您提交主项目时,.hgsub将被提交,并且通用模块工作副本的哈希将保存到.hgsubstate文件中的修订版中

但也存在一些问题,

递归提交和推送,这可能不可取; 它们可能难以理解,因此是错误的来源; 如果您移动源回购,您的更新将失败,尽管有一个解决方案。 宾客回购

我从未使用过这些,所以我不能评论它们的优点或缺点,甚至不能评论它们的使用,但这里有一个链接。 我认为这个想法是,它比subrepo设置更具容错性,因此,如果缺少来宾repo源或指定的变更集,则更容易修复


我也看到过对嵌套式回购的提及,这与来宾式回购略有不同,但我不确定它们是否真的是不同的东西。

我认为有两种选择可以满足您的需求,尽管我认为这两种选择都只会对未来有所帮助,并且不能真正修复您过去的历史

子存储库

是您问题的原始Mercurial解决方案。 将常规模块repo克隆到主项目工作副本中,并将其工作副本更新为要使用的版本。 然后设置一个.hgsub文件,告诉主项目它有一个子repo,它应该去哪里,它的来源在哪里。 然后,当您提交主项目时,.hgsub将被提交,并且通用模块工作副本的哈希将保存到.hgsubstate文件中的修订版中

但也存在一些问题,

递归提交和推送,这可能不可取; 它们可能难以理解,因此是错误的来源; 如果您移动源回购,您的更新将失败,尽管有一个解决方案。 宾客回购

我从未使用过这些,所以我不能评论它们的优点或缺点,甚至不能评论它们的使用,但这里有一个链接。 我认为这个想法是,它比subrepo设置更具容错性,因此,如果缺少来宾repo源或指定的变更集,则更容易修复


我也看到过对嵌套回购的引用,这与来宾回购略有不同,但我不确定它们是否真的是不同的东西。

除了使用子存储库等,另一个选择是使用如下工具:,这使得存储库同步要么是一个显式的手动操作,要么可以作为构建过程的一部分使用。如果您需要与组织外的存储库集成,或与使用不同VCS或根本不使用VCS的存储库集成,这一点尤其有用。

除了使用子存储库等,另一种选择是使用以下工具:,这使得存储库同步要么是一个显式的手动操作,要么可以作为构建过程的一部分使用。如果您需要与组织外的存储库、使用不同VCS或根本不使用VCS的存储库集成,这一点尤其有用。

看起来是一个不错的工具!目前可能有点复杂。谢谢我之所以建议这样做,是因为你不需要这个特殊的工具,推出DIY解决方案非常容易,因为几乎任何风投公司的子存储库等都有很多隐藏的复杂性。Mercurial的考虑是有原因的。最大的问题是存储库操作变得非原子化,您会突然遇到许多与CVS类似的问题。分支和合并会变得特别痛苦。看起来是个不错的工具!目前可能有点复杂。谢谢我之所以建议这样做,是因为你不需要这个特殊的工具,推出DIY解决方案非常容易,因为几乎任何风投公司的子存储库等都有很多隐藏的复杂性。Mercurial的考虑是有原因的。最大的问题是存储库不可用
配给变成非原子的,你会突然遇到很多类似CVS的问题。分支和合并可能会变得特别痛苦。祝你圣诞快乐,新年快乐@Bharata:祝你圣诞快乐,新年快乐@Bharata: