2014-01-28 42 views
1

我们使用的多个HG存储库存在反复出现的腐败问题,并且它们始终与隐藏文件(以“。”开头)相关,如.hgignore和.hgtags。 这些存储库在Linux用户和Windows用户之间共享(如果有的话)。水银存储库被隐藏文件损坏,如.hgignore和.hgtags

hg stat 
abort: data/[email protected]: no match found! 

验证收率:

hg verify 
repository uses revlog format 1 
checking changesets 
checking manifests 
crosschecking files in changesets and manifests 
checking files 
data/[email protected]: missing revlog! 
1: empty or missing .hgignore 
[email protected]: ac9811f0a619 in manifests not found 
data/[email protected]: missing revlog! 
17: empty or missing .hgtags 
[email protected]: fa5433cf149c in manifests not found 
1129 files, 18 changesets, 1179 total revisions 
6 integrity errors encountered! 
(first damaged changeset appears to be 1) 

在这种回购,我刚添加.hgtags,并且仓库

与存储库工作期间

突然,操作可以由消息,例如被暂停本地立即变得腐败。 我总是可以通过从中央存储库重新克隆来临时解决问题,但问题总是一次又一次地重演。

这是怎么回事?我假设如果我按照https://www.mercurial-scm.org/wiki/RepositoryCorruption的建议做了重建/恢复,那么我可以得到没有.hgignore和.hgtags的新回购版,但是如果我添加新版本,我认为它会再次损坏。

+0

由于Linux用户的另一个回购仅仅是被破坏了,所以windows/linux注释变得无关紧要。 – Eskil

+0

绝不要手动添加.hgtags(除非你确切地知道,该怎么办以及如何操作) - 使用Mercurial命令并让Mercurial更改文件内的文件 –

回答

1

看来,删除以“〜”开头的文件的一些清理脚本每隔一段时间就会变成.hg。由于HG的较新的“点编码”特征编码“。”作为“〜2e”,revlog文件被删除...神秘解决了。

+0

为什么你有一个清理脚本? –

+0

它用于清理工作区中的一些临时文件,以便手动运行。编译输出等。问题是基于正则表达式匹配的自动搜索和销毁的不幸情况。 – Eskil

+1

如何使用'hg purge'? (当然你已经犯了) –