0

我正在使用以下代码从本地网络克隆:

_g = cmd.Git(clone_path)
path = os.path.normcase(os.path.normpath(path))
path = path.replace('\\', '/')
_g.clone("-o" + host,
    "http://" + host + ':8002' + '/' + path + '/' + '.git',
    os.path.join(clone_path, repo))

现在我需要等待克隆操作完成(成功)才能继续。我该如何进行?

4

1 回答 1

1

在 git-python 中,所有直接的 git 调用repo.git.clone()都是同步的。可以选择使用该as_process标志异步运行它。因此,调用repo.git.clone(..., as_process=True)返回一个subprocess.Popen必须相应处理的实例。在最简单的情况下,您会调用communicate()它来接收其全部输出。

通常不需要也不推荐这样做,因为 git-python 提供了更高级别的方法来更方便地完成常见操作。

如果您希望简化代码,可以使用更高级别的操作,例如:

import git
r = git.Repo.clone_from(your_url, checkout_path, origin=host)

r是一个Repo实例,它是您处理所有与 git 相关的操作的句柄。它的文档在 readthedocs 上

于 2015-02-02T07:11:00.207 回答