Python “什么是”呢;“用户界面”;hgneted.nclone()中的参数?

Python “什么是”呢;“用户界面”;hgneted.nclone()中的参数?,python,nested,mercurial,mercurial-extension,Python,Nested,Mercurial,Mercurial Extension,在这里,我试图克隆一个嵌套的存储库“hgserver”,其中还有5个存储库。但我发现了错误 import hgnested sour = "C:\Users\ADMIN\Documents\mercurial\hgserver" desti = "D:\Work" hgnested.nclone(source = sour, dest = desti) 然后我查看了python的hgnested包的源代码,发现nclone()方法接受了一个参数“ui”,我不知道该传递什么 TypeErro

在这里,我试图克隆一个嵌套的存储库“hgserver”,其中还有5个存储库。但我发现了错误

import hgnested

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

desti = "D:\Work"
hgnested.nclone(source = sour, dest = desti)
然后我查看了python的hgnested包的源代码,发现nclone()方法接受了一个参数“ui”,我不知道该传递什么

TypeError: nclone() takes at least 2 arguments (2 given)
有人能帮我吗


PS:由于我的名声不好,我无法为这个问题添加相关标签。例如:hgnested,nclone

hgnested不是从本地驱动器克隆文件或将文件克隆到本地驱动器所需的。当我阅读他们的“文档”时,只有几行没有内容,这只是Mercurial的一个小扩展。如果您只想复制目录,则应执行以下操作:

def nclone(ui, source, dest=None, **opts):
为了回答您最初的问题,ui是Mercurial的用户界面类

在这里,ui和repo是用户界面和存储库参数 作为标准传递到扩展函数(请参阅WritingExtensions 有关更多详细信息)。如果您没有调用Mercurial命令 从一个扩展函数中,您将需要创建合适的ui和 回购反对你自己。可以从ui实例化ui对象 mercurial.ui中的类;回购对象可以是 localrepository、httprepository、sshrepository或 statichttprepository(每个都在自己的模块中定义),尽管 通常是一个本地存储库


正如@abccd所回答的,我只需将我的方法调用更改为上线,克隆就成功了

是的,经过大量的挖掘,我明白了ui是什么,你的解释总结了我的问题。谢谢@abccdcan您能说出如何创建回购对象。谢谢你,你可以跟着。通常,您可以通过在terminal中键入
hg init foldername
来创建回购协议
import shutil 
shutil.copytree(sour, desti) # copy dirs 
# use shutil.copy() to copy files
import hgnested
from mercurial import ui
sour = "C:\Users\ADMIN\Documents\mercurial\hgserver"

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