2010-03-18 6 views
36

git 저장소를 복제하기 위해 서브 프로세스를 사용하지 않고 파이썬 방식이 있습니까? 내가 추천하는 모듈을 사용하고 있습니다.git 저장소를 복제하는 Python 방법

+3

gitpy, 나는 그것이 – SilentGhost

+0

@SilentGhost 호출 할 것 같아요 당신은 *이 * gitpy을 의미? http://github.com/vmalloc/gitpy from http://www.ryaari.com/blog/?p=9 – VonC

+0

GitPython (http://pypi.python.org/pypi/GitPython, http : //gitorious.org/git-python) 복제 방법이 없다고 생각하지만, 당신이 하나를 추가 할 수 있다고 확신 할 수 있습니다 ... 내부적으로는 어떻게해서든지 '복제 복제본'을 호출해야 할 것입니다. – Cascabel

답변

19

http://gitorious.org/git-python/입니다. 전에는 내부적으로 들어 본 적이 없으므로 git 실행 파일을 어딘가에 가지고 있어야합니다. 또한 버그가 많을 수도 있습니다. 그러나 시도할만한 가치가있을 수 있습니다.

는 복제하는 방법 :

import git 
git.Git("/your/directory/to/clone").clone("git://gitorious.org/git-python/mainline.git") 

(. 그것은 좋은하지 그리고 그것을 할 수있는 지원 방법인지는 모르겠지만, 그것은 일) Dulwich 팁으로

+0

나는이 복제품을 믿지 않는다. – Cascabel

+0

그럴 수 있습니다. 그러나 조금 뒤얽힌 것입니다. – Debilski

+1

오, 내 잘못, 나는 그 가능성을 놓쳤다. Mike, 그냥 내부적으로 이것은 어쨌든 git 실행 파일이라고 부릅니다. 그것은 단지 당신을 위해 그것을 조금 관리하고 있습니다. – Cascabel

1

당신은해야한다 - 객체와 심판에서 복사합니다,하지만이 아닌 맨손으로 저장소를 만들 경우 아직 작업 트리의 내용을 작성하지 않습니다

from dulwich.repo import Repo 
Repo("/path/to/source").clone("/path/to/target") 

이 여전히 매우 기본적인 : 할 수.

60

GitPython을 사용하면 Git에 좋은 파이썬 인터페이스를 제공합니다.

from git import Repo 

Repo.clone_from(git_url, repo_dir) 

참고 : GitPython이 시스템에 설치되어 자식을 요구하고 접근 시스템의 경로를 통해

예를 들어, 새 저장소를 복제, 그것은 (pip install gitpython)를 설치 한 후에는 clone_from 기능을 사용할 수 있습니다 .

+1

"pip install gitpython"이 최신 빌드를 설치하지 않아 clone_from이없는 1.7이 설치 되었기 때문에 저에게 효과가 없었습니다. 죄송합니다 downvote, 내 b : ( – blented

+4

@blented 언급을 주셔서 감사합니다. 그러나 유감스럽게도 GitPython 버전 관리 (1.7이 너무 오래되었습니다.)로 인해. 어쨌든, 나는이 질문을보고 누구나 쉽게 찾을 수있을 것으로 기대합니다. 대신'pip install gitpython == 0.3.2.RC1'을 실행하십시오! –

+1

@AmirAliAkbari 0.3.2 RC1이 이제 기본 설치 후보자입니다. – Kasisnu

4

Github에서의 libgit2 바인딩, pygit2 원격 디렉토리를 복제 한 라이너 제공

clone_repository(url, path, 
    bare=False, repository=None, remote=None, checkout_branch=None, callbacks=None) 
4

내 솔루션은 매우 간단하고 정직합니다. 그것도 의역 입력/암호 수동 입력이 필요하지 않습니다. 여기

내 전체 코드입니다 :

import os 
import sys 

path  = "/path/to/store/your/cloned/project" 
clone  = "git clone [email protected]:/your/project/name.git" 

os.system("sshpass -p your_password ssh [email protected]_localhost") 
os.chdir(path) # Specifying the path where the cloned project has to be copied 
os.system(clone) # Cloning 

print "\n CLONED SUCCESSFULLY.! \n" 
관련 문제