如何使用python将git diff输出到文本文件

时间:2014-01-18 19:35:26

标签: python git git-diff

我正在尝试为git发出命令,直接通过电子邮件发送差异,

我所想的是将差异化为文本文件发送电子邮件,

但不确定原因

pr = subprocess.Popen( "git diff HEAD^ HEAD" , cwd = os.path.dirname( os.getcwd() ), shell = True, stdout = subprocess.PIPE, stderr = subprocess.PIPE )
(out, error) = pr.communicate()
print "Error : " + str(error) 
print "out : " + str(out)

提出错误说

Error : error: Could not access 'HEAD^'

out : 

虽然我希望将变量发送到电子邮件中。

2 个答案:

答案 0 :(得分:0)

您可能没有在正确的文件夹中发出命令,其中git已初始化。

您的实际问题是,os.path.dirname命令正在从命令os.getcwd中删除文件夹,而您实际上是在父文件夹中运行该命令。如果你摆脱os.path.dirname并且只使用os.getcwd,那么你的代码应该可以正常工作。

答案 1 :(得分:0)

要使用的代码有两项更改。 更改是Popen和工作目录中的git命令。 进行更改后,代码如下所示,它将正常工作

pr = subprocess.Popen(['git', 'diff', 'HEAD~1' ,'HEAD'] , cwd = os.getcwd(), shell = True, stdout = subprocess.PIPE, stderr = subprocess.PIPE )
(out, error) = pr.communicate()
print "Error : " + str(error) 
print "out : " + str(out)