2016-02-03 67 views
0

在我希望能夠從git存儲庫工作樹內某個任意位置執行的python腳本中,在某些任意git存儲庫中,我想使用GitPython提取關於所述存儲庫的一些信息gitpython從存儲庫中的somwhere打開存儲庫

我可以從回購對象獲取所需的信息,但我無法弄清楚如何打開回購對象,但回購構造函數需要回購根的路徑。

有沒有辦法構建一個回購對象的路徑,而不僅僅是回購根位置?或者,有沒有辦法查詢給定路徑的repo root的位置?

我在尋找類似:

import git 
r = git.Repo('whatever repo the cwd is in') 

下面的作品,但我覺得無可救藥笨重:

import git 
import subprocess 

rtpath = subprocess.check_output(["git", "rev-parse", "--show-toplevel"]) 
repo = git.Repo(rtpath.strip()) 
+0

請重新說明你正在嘗試做什麼,以及你卡在哪裏。目前你的問題是非常不清楚的。 – Joost

回答

0

一種選擇是執行相同的搜索語義git工具內部...例如,查找.git目錄,如果它不存在,chdir向上一級,再次檢查等等。例如:

import os 
import git 

lastcwd=os.getcwd() 
while not os.path.isdir('.git'): 
    os.chdir('..') 
    cwd=os.getcwd() 
    if cwd == lastcwd: 
     raise OSError('no .git directory') 
    lastcwd=cwd 

r = git.Repo('.') 

上面的代碼很簡單;例如,git將不會遍歷默認配置中的文件系統邊界,而上面的代碼將始終迭代至/