簡體   English   中英

使用grep的Git Python日志

[英]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它返回一個空字符串。 這里的行為相同:

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()).execute(['git', 'log',
    '--merges',
    '--grep=^Merge pull request .* in repo/foo from',
    '--grep=^Merged .* to master',
    'tag1..tag2'])

我猜您也可以將os.getcwd()替換為簡單的'.'

找到了答案。 這是關於不好的報價。 這有效:

git.Git(os.getcwd()).log(
    '--merges',
    '--grep=^Merge pull request .* in repo/foo from',
    '--grep=^Merged .* to master',
    'tag1..tag2')

我認為必須在命令行上使用引號將參數保持在一起,但是在Python中傳遞參數時,每個參數都是一個字符串,因此已經被“引用”了。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM