gpt4 book ai didi

Mercurial 稀疏结账

转载 作者:行者123 更新时间:2023-12-02 00:36:23 24 4
gpt4 key购买 nike

在此F8 conference video (8:40 开始)从 2015 年开始,他们谈论使用 Mercurial 和跨 Facebook 的单一存储库的优势。

这在实践中是如何运作的?使用 Mercurial,我可以 checkout 子目录(位于 SVN 中)吗?如果是这样,怎么办?我需要 facebook-mercurial-extension为此

P.S.:我只找到类似 this 的答案或this从 2010 年开始,我不确定答案是否仍然适用于 FB 付出的所有努力。

最佳答案

从您的问题来看,尚不清楚您是否正在寻找工作流程(单一存储库与多个存储库的争论),或者是为了巨大代码库的性能和扩展。

对于工作流程,我建议在谷歌上搜索monorepo。它有它的优点和缺点,你需要了解你的情况和当前的工作流程来决定。对于性能和扩展,请继续阅读。

remotefilelog 的想法不是 checkout 子目录(正如您提到的),而是 checkout 所有内容。为了有效地做到这一点,您需要 Facebook 积极开发的两个扩展:

  • remotefilelog 。这为您提供了概念上类似于浅克隆的东西。这会减少 hg clonehg pull 时间。
  • fsmonitor (以前称为 hgwatchman,现在是 Mercurial 核心的一部分)。这极大地减少了本地操作的时间,例如hg status。请注意,fsmonitor 独立于remotefilelog。您可以开始尝试这个,因为它不需要在服务器端进行任何设置。

使用最近的 Mercurial(我强烈建议),您可以使用 CommandServer 来减少 Python 解释器的额外启动时间。 + CHg .

一些附加说明:

  • 我广泛测试了 fsmonitor。它工作得很好,在大型仓库中,hg status 的时间从 10 秒减少到不到 1 秒(这 1 秒的大部分是 Python 启动时间,请参阅上面的 CHg )。如果您的存储库确实很大,您可能需要微调一些 inotify 内核参数(或 MacOSX 上的等效参数)。 fsmonitor 文档包含您需要的所有信息。
  • 我没有测试 remotefilelog,尽管我阅读了有关它的所有内容,并且确信它有效。根据开发的完成方式(每个人是否始终具有互联网连接,组织是否有自己的主存储库),可能有一个警告:它将分散的 hg 部分转换为集中式 VCS,例如 svn:一些通常可以离线完成的操作(例如:hg log 和过去对变更集的第一次 hg update)现在将需要连接到主存储库。
  • 在考虑 remotefilelog 之前,我在一个巨大的存储库上广泛使用了 largefiles 扩展。它与 remotefilelog 具有相同的缺点,并且对于那些想要使用 hg 只是为了完成任务而不花时间了解其工作原理的用户来说,还有一些令人困惑的极端情况。如果我要管理另一个大型存储库,我会使用 remotefilelog 而不是 largefiles,尽管它们的用例并不完全相同。
  • Mercurial 还支持子存储库( doc1doc2 )。问题是它会根据您在源代码树中的位置改变 hg 的行为。再说一遍,如果开发人员不关心真正理解 hg 的工作原理,那就太令人困惑了。

其他信息:

关于Mercurial 稀疏结账,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39317634/

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