0
Pygit2를 사용하여 작업중인 Repo에서 특정 작업을 실행하고 있습니다.Repo 내의 어느 곳에서나 PyGit2의 현재 repo 경로를 가져옵니다.
내 코드 파일이 repo 루트에 있지 않은 경우 repo 내 어디에서든지 repo 경로를 가져올 수 있습니까?
함수가 루트에서 호출 된 경우를 위해 아래 작업을 수행 할 수 있지만 리포지토리 코드 내 어디에서든지 실행하면 어떻게 할 수 있습니까?
import os
import pathlib
import pygit2
def find_toplevel(path, last=None):
path = pathlib.Path(path).absolute()
if path == last:
return None
if (path/'.git').is_dir():
return path
return find_toplevel(path.parent, last=path)
toplevel = find_toplevel('.')
if toplevel is not None:
repo = pygit2.Repository(str(toplevel))
물론, 여기에 몇 가지주의 사항이있다 : 당신이 .git
디렉토리를 찾을 때까지
$ cd /home/test/Desktop/code/Project
$ git status
On branch master
Your branch is up-to-date with 'origin/master'.
$ ipython3
In [1]: import os, pygit2
In [2]: repo = pygit2.Repository(os.getcwd())
예, 상위 디렉토리 탐색은 확실히 한 가지 방법입니다. 나는 pygit2가 그것을 밖으로 할 메커니즘이 있는지 확인했다. 답장을 보내 주셔서 감사합니다. 다른 답이 올 경우를 대비하여이 날을 수락하기 전에 하루 더 기다려 드리겠습니다. –