Что такое параметр "ui" в hgnested.nclone()?

import hgnested

sour = "C:\Users\ADMIN\Documents\mercurial\hgserver"

desti = "D:\Work"
hgnested.nclone(source = sour, dest = desti)

Здесь я пытаюсь клонировать вложенный репозиторий "hgserver", в котором есть еще 5 репозиториев. Но я получаю и ошибку,

TypeError: nclone() takes at least 2 arguments (2 given)

Затем я посмотрел на исходный код hgnested пакета python по этой ссылке и обнаружил, что метод nclone() принимает аргумент "ui", на который я не понимаю, что передать.

def nclone(ui, source, dest=None, **opts):

Кто-нибудь может мне помочь.

PS: из-за моей низкой репутации я не могу добавить соответствующие теги для этого вопроса. Пример: Hgnested, Nclone

2 ответа

Решение

Hgnested - это не то, что вам нужно, если вы хотите клонировать файл с вашего локального диска. Когда я читаю их "документацию", несколько строк ничего не значат, это всего лишь небольшое расширение Mercurial. Если все, что вы хотели сделать, это скопировать каталог, вы должны сделать это:

import shutil 
shutil.copytree(sour, desti) # copy dirs 
# use shutil.copy() to copy files

И чтобы ответить на ваш первоначальный вопрос, пользовательский интерфейс является классом пользовательского интерфейса от Mercurial.

Здесь ui и repo - это аргументы пользовательского интерфейса и репозитория, передаваемые в функцию расширения как стандарт (см. WritingExtensions для более подробной информации). Если вы не вызываете командные функции Mercurial из расширения, вам нужно будет самостоятельно создать подходящий пользовательский интерфейс и объекты репо. Объект пользовательского интерфейса может быть создан из класса пользовательского интерфейса в mercurial.ui; объект репо может быть локальным репозиторием, httprepository, sshrepository или statichttprepository (каждый определен в своих собственных модулях), хотя чаще всего это будет локальный репозиторий.

import hgnested
from mercurial import ui
sour = "C:\Users\ADMIN\Documents\mercurial\hgserver"

desti = "D:\Work"
hgnested.nclone(ui.ui(), source = sour, dest = desti)

как ответил @abccd, мне просто пришлось изменить вызов метода на вышеуказанную строку, и клон прошел успешно.

Другие вопросы по тегам