You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何使用GitPython管理评审人列表?解决作者/提交者被自动添加至评审人列表的问题

解决Gerrit提交时自动添加提交者为评审人的问题

嘿,这个问题我熟!你遇到的是Gerrit常见的默认行为坑——不少项目会自动把提交者/作者加进评审人列表,而你的代码之前没显式控制评审人范围,所以才会出现提交者也被加入的情况。给你两个靠谱的解决办法,精准控制只加othername


方法1:Push时用命令行选项指定评审人(推荐)

Gerrit支持在git push时通过-o(也就是--push-option)参数直接指定评审人,这种方式优先级最高,能完全掌控评审人列表。如果你的项目默认会自动添加提交者,还可以额外加个选项移除提交者的评审人身份:

把你代码里的run命令改成这样:

from subprocess import run, PIPE

# ... 你原来的代码(创建Actor、提交文件等部分) ...

# 构建push命令,显式指定评审人,按需移除提交者
push_args = [
    "git", "push", "origin", "HEAD:refs/for/master",
    "-o", f"reviewers={reviewers[0]}",
    # 如果你的Gerrit项目会自动加提交者,就加上下面这行(替换成你的邮箱)
    "-o", f"remove-reviewers={author.email}"
]
run(push_args, cwd='/tmp/tree/path', stdout=PIPE, stderr=PIPE)

小说明:

  • -o reviewers=<用户名/邮箱>:直接告诉Gerrit只加这个用户当评审人
  • -o remove-reviewers=<邮箱>:如果项目有自动加提交者的配置,用这行把提交者从评审人里删掉
  • 要是你的项目没开自动加提交者的功能,只保留-o reviewers=othername这一行就够了

方法2:在Commit Message里加评审人字段

Gerrit会自动解析commit message里的特殊字段,Reviewers:就是其中一个。你可以直接在提交消息里指定评审人:

修改你的提交消息定义:

commit_msg = f"""test reviewers

Reviewers: {reviewers[0]}
"""

然后正常执行push就行。不过这个方法需要你的Gerrit实例开启了“解析commit消息里的评审人”功能(大部分默认是开的)。如果还是会自动加提交者,依然可以搭配方法1里的remove-reviewers选项来处理。


额外提醒

  • 要确认othername是Gerrit里有效的用户名或邮箱,不然Gerrit会忽略这个请求
  • 要是你的Gerrit版本比较老,可能得用单数的reviewer而不是复数reviewers,不过新版本都支持复数
  • 优先选方法1,因为命令行选项的控制更直接,不受commit消息解析配置的影响

内容的提问来源于stack exchange,提问作者rodee

火山引擎 最新活动