0
私が作業しているリポジトリ内で特定の操作を実行するためにPygit2を使用しています。PyGit2の現在のリポジトリのパスをリポジトリ内のどこからでも取得する
私のコードファイルがレポのルートにない場合、レポ内のどこからでもレポのパスを取得するにはどうすればよいですか?
関数がルートから呼び出された場合は以下のことができますが、リポジトリコード内のどこからでも実行するにはどうすればいいですか?
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())
はい、間違いなく親ディレクトリのトラバーサルがそれを行う方法の1つです。私はpygit2がそれを箱から出すための仕組みを持っているかどうか確認していました。回答をいただきありがとうございます。他の回答があれば、もう一度お待ちしております。 –