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)
然后我在这个link查看了hgnested python包的源代码,发现nclone()方法接受了一个参数“ui”,我不知道该传递什么。
def nclone(ui, source, dest=None, **opts):
任何人都可以帮助我。
PS:由于声誉不佳,我无法为此问题添加相关标签。例如:hgnested,nclone
答案 0 :(得分:0)
如果您想要从本地驱动器克隆文件,那么Hgnested不是您想要的。当我阅读他们的“文档”时,几行没什么,它只是Mercurial的一个小扩展。如果您只想复制目录,那么您应该这样做:
import shutil
shutil.copytree(sour, desti) # copy dirs
# use shutil.copy() to copy files
回答你原来的问题,ui是Mercurial的用户界面类。
这里,ui和repo是用户界面和存储库参数 作为标准传递给扩展函数(参见WritingExtensions 更多细节)。如果您没有调用Mercurial命令 从扩展函数,你需要创建合适的ui和 回购对象自己。 ui对象可以从ui实例化 mercurial.ui中的类; repo对象可以是a localrepository,一个httprepository,一个sshrepository或者 statichttprepository(每个都在自己的模块中定义),尽管如此 最常见的是本地存储库。
答案 1 :(得分:0)
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回答说,我只需将方法调用更改为上一行,克隆就成功了。