为什么从 Windows shell 和 Python 子进程启动时 Git 日志命令输出不同?

乔治

如果我git log --no-walk --tags --reverse在 Windows shell 中执行命令,我会得到如下结果:

commit e83dcf42f2a52183cf21642c7b8deb42961663f3 (tag: my_tag)
Author: an_author
Date:   a_date

而如果我从 Python 脚本执行相同的 Git 命令:

subprocess.check_output(['git', 'log', '--no-walk', '--tags', '--reverse'], stderr=subprocess.PIPE).decode(sys.stdout.encoding)

我得到以下结果:

commit e83dcf42f2a52183cf21642c7b8deb42961663f3
Author: an_author
Date:   a_date

如您所见,缺少标签信息,正如您猜测的那样,我需要它。我可以做些什么来从 Python subprocess.check_output 获取标签信息?

扬·胡德克

当您想要解析git输出时,您应该使用其用于脚本编写的命令的形式。在这种情况下,它意味着--pretty=format:1选项。%D说明符提供指向提交裁判的名字,当然你需要明确指定你想要的所有领域。

您可能还想使用较低级别的git rev-list命令而不是 log;它有类似的选项,但承诺为脚本使用提供稳定的界面。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

为什么Unix和Windows之间的Python子进程Popen如此不同?

为什么此Python子过程命令仅在Windows上为shell = True时才起作用?

为什么git branch和$(git branch)输出不同的结果

shell 和 python 的不同输出

为什么在使用cmd和git bash执行以下命令时得到不同的结果?

为什么Windows和Ubuntu具有相似的Shell命令?

为什么子进程在Windows上启动时却在Linux上没有启动时导入主模块?

为什么通过子进程从“ git --version”读取的内容与“ python --version”显示在不同的频道上?

Git for Windows Bash shell的“ less”命令在显示来自Git日志调用的格式化文本时显示垃圾

Python和Shell命令

为什么`jobs`和`dirs`在命令替换,进程替换,管道和后台作业中运行的结果与原始Shell中的输出相同?

为什么git在隐藏的`git show'输出中显示++和-?

从cmd行启动时,为什么运行Shiny会在Windows上启动两个Rscript进程?

为什么git status和git显示不同意?

从python的子进程连续调用shell命令并解析输出

python3子进程错误捕获shell命令的输出

为什么 mysql hex 结果与 shell 和 java 不同

为什么bash和csh shell的命令“ ls”的退出状态不同?

为什么在使用遥控器时,我的git日志输出同时显示来源和来源/主机,来源/ HEAD。这些条目对我来说似乎是多余的

为什么sudo python和python在终端中启动两个不同版本的python?

为什么“ git log”的输出在终端和node.js中的execSync不同

Shell命令可在Shell中工作,但在从Python子进程中触发时则无效

为什么subprocess.run输出与同一命令的shell输出不同?

使用Python子进程执行Shell命令

Emacs:为什么shell命令“ git log”有效,但“ git shortlog”无效?

用定位和查找计数源文件和LOC时-为什么Python文件出现了不同?

为什么同样的curl命令在windows和linux下输出的东西不一样?

Linux和Windows之间的多处理输出有所不同-为什么?

为什么相同的vsnprintf代码在Windows(MSVC)和Unix(Clang)上的输出不同