2014-01-30 3 views
3

Я пишу меркурийное расширение, и мне нужно хранить небольшое количество метаданных. Это тупой пример, но достаточно, чтобы получить что-то вроде этого, чтобы работать:Как хранить постоянные данные с помощью меркуриального расширения?

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

Эти данные не должны быть скопированы, если репо клонируют, хотя, если это легко было бы здорово сделать это.

Каков правильный способ сделать это в ртутном расширении? Есть ли папка под .hg, что я могу просто создавать произвольные файлы или что-то в этом роде?

ответ

4

Для этого не существует встроенного механизма - каждое расширение решает, как наилучшим образом хранить данные. Расширения обычно хранят свои данные в файле или каталоге, названном им самим, поэтому вы можете использовать

.hg/myextension/ 

как ваш корень. Вы можете использовать repo.opener, чтобы открыть файлы внутри этого каталога:

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

+1. Итак ... все еще нет git-нот для Mercurial? (http://stackoverflow.com/a/2305977/6309) – VonC

+0

@VonC нет, ничего не встроено. Я вижу, что заметки Гит как-то разные. То есть я вижу, как записи Git можно злоупотреблять, чтобы хранить локальное состояние для расширения, но я не думаю, что это лучший способ сделать это. Для Mercurial вполне возможно продлить проводной протокол для обмена произвольными данными (см. Расширение больших файлов), и таким образом можно получить нужное поведение. –

 Смежные вопросы

  • Нет связанных вопросов^_^