2014-01-28 43 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'? (當然你已經犯了) –