Merge Mercurial:“;“未找到匹配项”;执行合并时,“合并”;没有节点&引用;如果我想脱光衣服
我有一个mercurial dropbox,托管在dropbox文件夹中,我从另一个存放在我办公室PC中的repo推送它。这样,我可以在办公室处理我的项目,并在家中执行热修复 同步时发生错误,因此某个文件未正确同步。我有一个修订版(n.678),不能与实际的头部合并 如果我尝试合并,我会收到此消息 中止: data/hotelsclick/src/main/res/values/string-array.xml。i@5f2b6faa86a1: 没有找到匹配项 如果我试图用hg strip 678删除无用的修订,我会得到 中止: data/hotelsclick/src/main/res/values/string-array.xml。i@5f2b6faa86a1: 没有节点 如果我执行了hg验证,这就是结果 libs/日期间隔选择器/.git/index@678:a83e1b77d446在舱单中 未找到8009个文件、681个变更集、14161个总修订2 遇到完整性错误!(第一个损坏的变更集似乎是 (678) 如果我试着推怎么办 搜索更改 中止:推送创建新的远程磁头16c4912af9a5! (合并或参见“hg帮助推送”了解推送新磁头的详细信息) 所以我不能合并,不能删除那个修订,不能推。我被卡住了,我不知道为什么。有人能帮忙吗?我不在乎678修订版的内容,如果可以的话,我很乐意删除它Merge Mercurial:“;“未找到匹配项”;执行合并时,“合并”;没有节点&引用;如果我想脱光衣服,merge,mercurial,Merge,Mercurial,我有一个mercurial dropbox,托管在dropbox文件夹中,我从另一个存放在我办公室PC中的repo推送它。这样,我可以在办公室处理我的项目,并在家中执行热修复 同步时发生错误,因此某个文件未正确同步。我有一个修订版(n.678),不能与实际的头部合并 如果我尝试合并,我会收到此消息 中止: data/hotelsclick/src/main/res/values/string-array.xml。i@5f2b6faa86a1: 没有找到匹配项 如果我试图用hg strip 67
谢谢首先,我强烈建议不要在版本控制系统中使用文件同步服务(无论是Dropbox还是Google Drive或其他)。这些服务不尊重存储库操作的原子性;即使是带有单个文件存储库(如化石)的版本控制系统也不是100%安全的,即使只有一个用户在使用该服务 其次,您需要修复一个部分损坏的存储库。在理想情况下,您可以在某个地方有一个干净的备份,即使它不是完全最新的,并且可以有选择地重播缺少的修订(例如使用
hg export
和hg import
)
除此之外,下一步就是看看是否可以进行部分克隆。例如,您可以尝试:
hg clone -r 680 /path/to/repo /path/to/clean_repo
如果只有数据有缺陷,通常应跳过678版。然而,增量压缩的工作方式,在678之后按顺序进行的修订也可能已经损坏。在本例中,我将尝试使用-r 677
而不是-r 680
,并查看hg export
是否适用于复制修订版679
和680
如果这样做不起作用,并且损坏更严重,我会尝试转换扩展:
hg --config extensions.convert= convert --config convert.hg.ignoreerrors=True /path/to/repo /path/to/clean_repo
请注意,这样的转换可能会更改单个存储库条目的哈希值,这意味着您必须在任何地方更新存储库内容。谢谢,我将repo从/old_repo克隆到/old_repo_new,然后将其克隆回/old_repo。断开的提交不是在al克隆的!非常感谢你!另外,到现在为止,我已经在dropbox上使用mercurial一年了,以前从未出现过问题。因为我是唯一一个在这个项目上写代码的人,所以我很少需要合并,所以到目前为止这是一个完美的解决方案:-)需要记住的重要一点是,当你开始工作时,你应该暂停同步,一旦你完成了,你应该批量同步所有东西。
hg --config extensions.convert= convert --config convert.hg.ignoreerrors=True /path/to/repo /path/to/clean_repo