我正在从像这样的函数
测试gitPython的克隆git.Repo.clone_from("https://github.com/nicothin/web-design.git","/home/tom/src",branch='master',recursive=True)
但它总是给出错误,
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/local/lib/python2.7/dist-packages/git/repo/base.py", line 885, in clone_from
return cls._clone(git, url, to_path, GitCmdObjectDB, progress, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/git/repo/base.py", line 831, in _clone
finalize_process(proc)
File "/usr/local/lib/python2.7/dist-packages/git/util.py", line 155, in finalize_process
proc.wait()
File "/usr/local/lib/python2.7/dist-packages/git/cmd.py", line 319, in wait
raise GitCommandError(self.args, status, self.proc.stderr.read())
ValueError: I/O operation on closed file
有人可以告诉我如何解决这个问题吗?我试图修复GIT_PYTHON_GIT_EXECUTEABLE和GIT_PYTHON_TRACE,它们都不起作用。
答案 0 :(得分:1)
好的,我自己解决了这个问题。根据像this这样的GitHub问题记录,这是一个错误。我运行的是Ubuntu 15.10,默认的GitPython版本是1.0.2,所以我无法调试这个,因为我不知道git命令会返回。
从GitPython github repo获取源代码并安装后,我能够看到异常中发生了什么。它结束了clone_from()命令的目标路径必须是一个新路径,如果它已经存在,将会引发一个git命令错误,所以我只是将它改为
git.Repo.clone_from("https://github.com/nicothin/web-design.git","/home/tom/src/mustBeNewPath",branch='master',recursive=True)
问题解决了。