2014-09-28 4 views
0

에서 나는 아래의 코드를 사용하여 로컬 네트워크에서 복제하고 마무리 자식 클론 기다릴 수 : 어떻게 GitPython

_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)) 

지금 내가 진행 (성공적으로) copmplete하기 위해 복제 작업을 기다릴 필요가있다. 어떻게해야합니까?

답변

1

git-python에서 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 경우, 모든 자식 관련 작업에 대한 당신의 핸들이입니다. 그것에 대한 문서 is on readthedocs.

+0

'git.Repo.clone_from()'이 (가) 동기식입니까? –

+0

예, gitpython의 모든 기능은 다음과 같습니다. – Byron

+0

이 문서에 나와 연결할 수 있습니까? 내가 확실히 사용한 것은 동기식이 아니 었습니다 - 동기식이란이 문맥에서 메소드가 복귀 할 때까지 블럭킹을했을 것입니다 - 어쩌면 이것을 쓰레드와 혼동 할 것입니다 –