繁体   English   中英

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

[英]how do I output git diff to a text file using python

我正在尝试为 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 : 

而我想要 diff in out 变量发送到电子邮件。

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

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

有两个更改要在代码中工作。 更改是 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)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM