#python #mercurial
#python #mercurial
Вопрос:
Я хочу перечислить все проекты, использующие Mercurial с помощью Python. Я загрузил пакет «import hglib», но я не нашел в документации, функциях и т. Д. … Которые могли бы мне помочь. Кто-нибудь знает, как это можно сделать?
PS: я нашел некоторую информацию в этих ссылках: — https://www.mercurial-scm.org/wiki/MercurialApi — http://pythonhosted.org/hgapi/index.html#hgapi.hgapi.Repo.command
но это было не то, что я искал…
Ответ №1:
Итак, из вашего вопроса я понял, что, вероятно, вы хотите перечислить вложенные репозитории внутри репозитория mercurial. В гораздо более простых терминах вы, должно быть, работаете с mercurial forest, и вы хотите перечислить вложенные репозитории глубоко внутри, и кажется, что есть пакет python с именем hgnested, написанный для работы с mercurial forests.
Я взял фрагмент кода и поиграл с ним, чтобы соответствовать тому, что мы хотим, и вот что я придумал.
from mercurial import hg, ui
import hgnested
def getNestedRepos(ui, source, **opts):
origsource = ui.expandpath(source)
remotesource, remotebranch =hg.parseurl(origsource,opts.get('branch'))
if hasattr(hg, 'peer'):
remoterepo = hg.peer(ui, opts, remotesource)
localrepo = remoterepo.local()
if localrepo:
remoterepo = localrepo
else:
remoterepo = hg.repository(hg.remoteui(ui, opts), remotesource)
return remoterepo.nested
print getNestedRepos(ui.ui(), <path to mercurial forest>)
Но есть еще один простой способ, когда вам нужно рекурсивно посетить все подкаталоги и проверить наличие файла .hg.
Примечание: Если вы хотите перечислить репозитории из удаленного репозитория, убедитесь, что пакет hgnested установлен на этом удаленном сервере, а путь к репозиторию, который вы передаете, является заголовком леса mercurial.