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

5

我正在尝试使用以下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存储库相同的目录中运行Python脚本,但仍然出现以下错误。

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

我怀疑git可能已经损坏了,但是如果我在普通命令提示符上执行,git文件正常,git命令也可以正常工作。

我尝试在网络上搜索,但没有找到有用的信息。请帮忙查看,将不胜感激。


代码在79个字符处换行有什么问题吗? - Mr_and_Mrs_D
2个回答

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'

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


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)

目录路径应该以'/'结尾。


请注意,如果您设置了GIT_DIR环境变量(尤其是相对路径,如在git钩子中可能发生的情况),也可能会出现此错误。 - David Fraser

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接