Git Python 使用 grep 登录
Git Python log with grep
命令行我是运行
git log \
--merges \
--grep='^Merge pull request .* in repo/foo from' \
--grep='^Merged .* to master' \
tag1..tag2
这为我提供了两个给定标签之间要掌握的合并提交列表。
现在我正在努力从 GitPython 获得相同的东西。
到目前为止我尝试过的:
git.Git(os.getcwd()).log(
'--merges',
'--grep="^Merge pull request .* in repo/foo from"',
'--grep="^Merged .* to master"',
'tag1..tag2')
这仅在我删除 grep
行时有效。使用 grep
它 returns 一个空字符串。此处行为相同:
git.Git(os.getcwd()).execute(['git', 'log',
'--merges',
'--grep="^Merge pull request .* in repo/foo from"',
'--grep="^Merged .* to master"',
'tag1..tag2'])
我试过的另一件事:
git.repo.fun.rev_parse(repo=git.Repo(), rev='tag1..tag2')
此错误与 BadName
相关,因为 tag1..tag2
未解析为对象。
找到答案了。这是关于糟糕的报价。这有效:
git.Git(os.getcwd()).log(
'--merges',
'--grep=^Merge pull request .* in repo/foo from',
'--grep=^Merged .* to master',
'tag1..tag2')
我认为引号在命令行上是必要的,以便将参数保持在一起,但是在 Python 中传递参数时,每个参数都是一个字符串,因此已经 "quoted".
shell 需要引号以防止其解释字符串中的元字符;但是在这里,你没有 shell.
git.Git(os.getcwd()).execute(['git', 'log',
'--merges',
'--grep=^Merge pull request .* in repo/foo from',
'--grep=^Merged .* to master',
'tag1..tag2'])
我猜你也可以用 '.'
.
替换 os.getcwd()
命令行我是运行
git log \
--merges \
--grep='^Merge pull request .* in repo/foo from' \
--grep='^Merged .* to master' \
tag1..tag2
这为我提供了两个给定标签之间要掌握的合并提交列表。
现在我正在努力从 GitPython 获得相同的东西。
到目前为止我尝试过的:
git.Git(os.getcwd()).log(
'--merges',
'--grep="^Merge pull request .* in repo/foo from"',
'--grep="^Merged .* to master"',
'tag1..tag2')
这仅在我删除 grep
行时有效。使用 grep
它 returns 一个空字符串。此处行为相同:
git.Git(os.getcwd()).execute(['git', 'log',
'--merges',
'--grep="^Merge pull request .* in repo/foo from"',
'--grep="^Merged .* to master"',
'tag1..tag2'])
我试过的另一件事:
git.repo.fun.rev_parse(repo=git.Repo(), rev='tag1..tag2')
此错误与 BadName
相关,因为 tag1..tag2
未解析为对象。
找到答案了。这是关于糟糕的报价。这有效:
git.Git(os.getcwd()).log(
'--merges',
'--grep=^Merge pull request .* in repo/foo from',
'--grep=^Merged .* to master',
'tag1..tag2')
我认为引号在命令行上是必要的,以便将参数保持在一起,但是在 Python 中传递参数时,每个参数都是一个字符串,因此已经 "quoted".
shell 需要引号以防止其解释字符串中的元字符;但是在这里,你没有 shell.
git.Git(os.getcwd()).execute(['git', 'log',
'--merges',
'--grep=^Merge pull request .* in repo/foo from',
'--grep=^Merged .* to master',
'tag1..tag2'])
我猜你也可以用 '.'
.
os.getcwd()