2012-03-19 54 views
5

我正在嘗試使用下面的python腳本執行一個簡單的git命令。嘗試使用python腳本執行git命令

#!/usr/bin/python 

import commands 
import subprocess 
import os 
import sys 

pr = subprocess.Popen("/usr/bin/git log" , cwd = os.path.dirname('/ext/home/rakesh.kumar/workspace/myproject'), shell = True, stdout = subprocess.PIPE, stderr = subprocess.PIPE) 
(out, error) = pr.communicate() 


print "Error : " + str(error) 
print "out : " + str(out) 

但即使我正在git reposetory所在的同一目錄中運行python腳本,我也收到以下錯誤。

Error : fatal: Not a git repository (or any of the parent directories): .git 

我懷疑混帳可能得到correputed,但git的文件都很好,如果我執行正常的命令提示符Git命令工作。

我試圖在網上搜索,但無法獲得有用的信息。請幫助它將不勝感激。

+0

包裝在79個字符的代碼有什麼問題? – 2014-04-08 13:36:30

回答

4

試試這個:

#!/usr/bin/python 

import commands 
import subprocess 
import os 
import sys 

pr = subprocess.Popen("/usr/bin/git log" , cwd = os.path.dirname('/ext/home/rakesh.kumar/workspace/myproject/'), shell = True, stdout = subprocess.PIPE, stderr = subprocess.PIPE) 
(out, error) = pr.communicate() 


print "Error : " + str(error) 
print "out : " + str(out) 

目錄路徑應該有 '/' 結尾。

+0

感謝您的及時答覆亞當,它現在的作品。 – Rakesh 2012-03-19 18:00:21

+0

請注意,如果您有'GIT_DIR'環境變量集(特別是相對路徑,可能發生在git鉤子中),也會發生此錯誤。 – 2014-09-04 15:17:05

5

的問題是你的os.path.dirname()使用:

os.path.dirname('/ext/home/rakesh.kumar/workspace/myproject') 

會給你:

>>> os.path.dirname('/ext/home/rakesh.kumar/workspace/myproject') 
'/ext/home/rakesh.kumar/workspace' 

其中,我敢打賭,是不是你想要的。