gpt4 book ai didi

mercurial - 将 Mercurial 捆绑文件应用于不同的变更集

转载 作者:行者123 更新时间:2023-12-03 00:12:49 25 4
gpt4 key购买 nike

TLDR:我有一个包含父级 X 的 HG bundle ,但我的存储库中不存在修订版 X。但是,我确定修订版 Y 的文件与修订版 X 相同。如何应用该 bundle ?

背景:

我使用 hgsubversion 与 SVN 存储库交互。

有一些我不想提交的更改。 hgsubversion 不支持部分推送。

我曾经通过手动创建临时导出/补丁文件或手动恢复 .orig 文件(hg revert 的结果)来解决此问题。

在这种情况下,我提交了我不想推送的更改,然后使用hg strip,然后推送,然后尝试使用hg unbundle .hg/strip-backup/file.

问题:hgsubversion 在提交后将原始变更集替换为从 SVN 导入的新变更集。结果:变更集 ID 发生变化。这是一个问题,因为现在 hg unbundle 不再起作用,因为它依赖于那里的父变更集(但它已被剥离)。

具有讽刺意味的是,hgsubversion本身使用strip,因此有一个备份文件,我可以用它来剥离新版本,添加剥离的旧版本,然后使用我的 bundle 应用修订版,导出补丁,剥离两者,然后恢复 SVN 修订版。但这听起来……极其痛苦和愚蠢。我能做的还有什么更好的事情吗?

(hg移植似乎也不喜欢在存储库中没有父级的 bundle )

最佳答案

如果没有 bundle 的精确父变更集,实际上不可能使用 bundle 。 bundle 由紧凑的二进制增量组成,只能应用于精确的二进制源。没有可用的“上下文”可以让 Mercurial 猜测如何像补丁一样将它们应用到其他修订版。在 Mercurial 核心中,这从来都不是问题,因为变更集永远不会被删除,但像 hgsubversion 和 mq 这样的扩展却打破了规则。

(如果您可以从 .hg/strip-backup 中的备份包中恢复剥离的变更集,则可以重新调整您的更改并再次剥离。)

关于mercurial - 将 Mercurial 捆绑文件应用于不同的变更集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7581773/

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