尝试使用python脚本执行git命令

问题描述:

我正在尝试使用下面的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

试试这个:

#!/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

的问题是你的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' 

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