在不同的变更集上应用mercurial bundle文件

在不同的变更集上应用mercurial bundle文件,mercurial,hgsubversion,Mercurial,Hgsubversion,TLDR:我与父X有一个HG捆绑包,但我的回购协议中不存在修订版X。但是,我确信修订版Y的文件与修订版X的文件相同。我如何应用捆绑包 背景: 我使用hgsubversion与SVN回购进行交互 有些更改我不想提交hgsubversion不支持部分推送 我曾经通过手动创建临时导出/修补程序文件或手动还原.orig文件(结果是hg revert) 在本例中,我提交了我不想推送的更改,然后使用hg strip,然后推送,然后尝试使用hg unbundle.hg/strip backup/file 问题

TLDR:我与父X有一个HG捆绑包,但我的回购协议中不存在修订版X。但是,我确信修订版Y的文件与修订版X的文件相同。我如何应用捆绑包

背景:

我使用
hgsubversion
与SVN回购进行交互

有些更改我不想提交<代码>hgsubversion不支持部分推送

我曾经通过手动创建临时导出/修补程序文件或手动还原.orig文件(结果是
hg revert

在本例中,我提交了我不想推送的更改,然后使用
hg strip
,然后推送,然后尝试使用
hg unbundle.hg/strip backup/file

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

具有讽刺意味的是,
hgsubversion
本身使用
strip
,因此有一个备份文件,我可以用来剥离新版本,添加剥离的旧版本,然后应用捆绑包和我的版本,导出补丁,剥离两者,并恢复SVN版本。但这听起来。。。极度痛苦和愚蠢。我能做得更好吗


hg transplant
似乎也不喜欢回购协议中没有父变更集的捆绑包)

如果没有捆绑包的精确父变更集,则实际上不可能使用捆绑包。束由紧凑的二进制增量组成,这些增量只能应用于精确的二进制源。没有“上下文”可以让Mercurial猜测如何像补丁程序那样将它们应用到其他版本中。在core Mercurial中,这从来都不是问题,因为变更集从未被删除,但hgsubversion和mq等扩展打破了规则


(如果您可以在.hg/strip backup中从备份捆绑包恢复剥离的更改集,那么您可以重新设置更改的基础并再次剥离。)

背景:点击后,我在提交时变得懒惰(如果您更新到要推送的最新版本,则可以部分提交),并最终开始提交所有内容。所以我取消了推送,这是我第一次没能保留我后来的修改

我尝试恢复,但无法找到父提交。对我有效的是恢复
..-backup.hg
文件(在条带备份中也有一个
..-temp.hg
文件)

奇怪的是(这就是我回答这个问题的原因)它只给了我一个关于父母不在那里的警告(我不知道为什么)


顺便说一句,我正在运行Mercurial 2.0版

您是否仍然有问题的变更集,可能在.hg/strip备份中?如果是这样,那么使用MQ就很容易了。如果没有,事情可能会变得非常糟糕。你是否意识到,如果你更新到一个特定的版本,hgsubversion只会推到那个版本?e、 你可以做部分提交。是的,这就是我最后做的。如果我能找到一些空闲时间(哈哈),我想我必须研究一下黑客入侵hgsubversion,这样它才能进行部分推送。。。谢谢
warning: ignoring unknown working parent d5663567bc4b!
adding changesets
adding manifests
adding file changes
added 21 changesets with 1255 changes to 941 files
(run 'hg update' to get a working copy)