2014-01-30 46 views
3

我在寫一個mercurial擴展,我需要存儲少量的元數據。這是一個愚蠢的例子,但足以得到這樣的工作:如何使用mercurial擴展來存儲持久數據?

$ hg myextension --set a=2 
$ hg myextension --get a 
2 

這個數據並不需要,如果回購被克隆,被複制但是如果這很容易會很酷做到這一點。

在mercurial extension中做這件事的正確方法是什麼?在.hg下有一個文件夾,我可以創建任意文件或類似的東西?

回答

4

沒有內置機制 - 每個擴展都決定如何最好地存儲數據。擴展程序通常將其數據存儲在自己命名的文件或目錄中,因此您可以使用

.hg/myextension/ 

作爲您的根。您可以使用repo.opener打開該目錄內的文件:

fp = repo.opener('myextension/state.json') 
data = json.load(fp) 
fp.close() 
+0

+1。那麼...... Mercurial仍然沒有git筆記? (http://stackoverflow.com/a/2305977/6309) – VonC

+0

@VonC不,內置任何東西。不過,我看到Git筆記是不同的。也就是說,我看到Git筆記如何被濫用來爲擴展存儲本地狀態,但我認爲這不是最好的辦法。對於Mercurial來說,擴展有線協議以交換任意數據是完全可行的(參見大文件擴展名),這樣就可以獲得所需的行爲。 –

相關問題