gitPython clone GitCommandError

时间:2016-03-14 02:50:20

标签: python git gitpython

我正在从像这样的函数

测试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,它们都不起作用。

1 个答案:

答案 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)

问题解决了。