如何使用gitpython查询特定git repo分支的日志?

问题描述 投票:0回答:1

目标:使用gitpython在python脚本中执行以下git命令。

命令行版本:

git log -L :dataLoad:/home/ubuntu/projects/alpha-draw/py/enigma.py

脚本版本:

repo.git.log(f'-L :dataLoad:/home/ubuntu/projects/alpha-draw/py/enigma.py')

这会导致以下错误,

git.exc.GitCommandError: Cmd('git') failed due to: exit code(128)
cmdline: git log -L :dataLoad:/home/ubuntu/projects/alpha-draw/py/enigma.py
stderr: 'fatal: -L argument not 'start,end:file' or ':funcname:file':  :dataLoad:/home/ubuntu/projects/alpha-draw/py/enigma.py'

当我将错误中的命令行版本直接复制并粘贴到...以及命令行时,它按预期工作。

我的假设是,当实际工作分支不是主分支时,gitpython正在查看主分支。

这个假设的原因:

1)我发现很多帖子讨论了命令的使用

repo.git.checkout("<branch>")

这样可以让我知道我的分支是最新的。当我使用此命令后从repo查询提交时,我仍然从master获取提交。

2)相信这是另一个原因是未成功更改gitpython中的分支是一个问题,如下例所示。

commits = list(repo.iter_commits('<branch>'))[:5]

当我更改分支时,我得到了检索与指定关联的提交的预期结果。

我愿意使用其他python git库。无论如何都不依赖于gitpython。我想另一个选择是放弃git库并通过python命令行调用与git交互。

感谢所有帮助,谢谢!

python git gitpython
1个回答
2
投票

您需要将命令行参数拆分为*args(list):

从:

repo.git.log('-L :dataLoad:/home/ubuntu/projects/alpha-draw/py/enigma.py')

至:

repo.git.log('-L', ':dataLoad:/home/ubuntu/projects/alpha-draw/py/enigma.py')

(逗号)

© www.soinside.com 2019 - 2024. All rights reserved.