gpt4 book ai didi

mercurial - Hg 克隆仅公开提交

转载 作者:行者123 更新时间:2023-12-04 14:25:27 25 4
gpt4 key购买 nike

我们有一个大型 Hg 存储库,托管在偏远地区。从此主存储库执行 hg clone 大约需要一个小时。我们通常做的加快速度的方法是 hg serve 同事的本地 repo,hg clone http://colleague-machine,然后更改 de .hg/hgrc 中的默认 路径到主存储库的地址。

这一切都很好,但这种解决方法有一个缺点:因为我们正在克隆开发人员的存储库,所以一些草稿提交可以与公共(public)提交一起克隆。此外,这些提交在克隆的存储库中公开,使它们与其他提交无法区分。

我发现的一种可能性是 make the developer's repo non publishing ,以便保留提交的阶段并在以后删除它们。另一种可能性是创建一个只包含公共(public)提交的包,而不是直接克隆。

这些方法的解释和记录更为复杂。 hg clone 是否可以选择仅克隆公共(public)提交?我尝试使用 hg clone -r "public()",但 clone 不接受 revset,只是一个常规的提交标识符。或者,hg serve 是否可以选择仅服务于公共(public)提交?

最佳答案

在问题上投入磁盘空间:只需保留一个定期更新的本地镜像克隆即可。

克隆“真正的主人”很慢,因为它在慢速链接上很远。但是更新镜像很快,因为虽然真正的主服务器通过慢速链接远离,但很少有数据需要遍历它;并且克隆镜像速度很快,并且可以让您了解镜像上次更新时真正主控的状态。

正如您所提到的,您随后可以只替换 default 路径(并且可能运行后续的 hg pull 以获取任何尚未镜像的内容,如果需要的话) .如果你是从遥远的慢速真正的大师那里克隆出来的,那么你的新克隆就和它本来的样子一样,只是它跑得很快。


Git 内置了这种克隆,即所谓的引用克隆。您将 git clone 进程指向两个存储库:真正的源和“接近且快速”的引用。它从真实来源获取哈希 ID,然后使用快速引用的存储来存储其数据。然后您可以选择继续依赖引用(默认)或与引用“分离”,以便您的克隆是独立的。它需要这个分离操作,因为它可以做一个有点危险的基于路径名的“链接”(不是真正的硬链接(hard link)意义上的链接;更多的是在 Git 中类似于符号链接(symbolic link))到原始文件,并通过这里默认。

我认为 Mercurial 没有任何“开箱即用”的等价物。不过,我想如果您愿意的话,作为扩展编写应该相对容易。您根本不需要 --dissociate,在硬链接(hard link)不可行的情况下,这将是默认设置。

关于mercurial - Hg 克隆仅公开提交,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46193438/

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