我正在尝试为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 :
虽然我希望将变量发送到电子邮件中。
答案 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)