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)

rRepoインスタンスであり、すべての git 関連操作へのハンドルです。ドキュメントは readthedocs にあります。

于 2015-02-02T07:11:00.207 に答える