Перечислите все проекты Mercurial в репозитории Mercurial с api python

#python #mercurial

#python #mercurial

Вопрос:

Я хочу перечислить все проекты, использующие Mercurial с помощью Python. Я загрузил пакет «import hglib», но я не нашел в документации, функциях и т. Д. … Которые могли бы мне помочь. Кто-нибудь знает, как это можно сделать?

PS: я нашел некоторую информацию в этих ссылках: — https://www.mercurial-scm.org/wiki/MercurialApihttp://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.