因此,问题的长短在于,在对代码评审原则和用户属性的狂热遵守中.
我推动了大约834次从上游分支提交到项目的gerrit服务器。
从那时起,我就被告知我应该(合理地)首先在gerrit上推一个压缩的提交测试,然后将它们指向我的回购以进行合并……
幸运的是,我在上传时用一个主题标记了提交(为了便于测试.-)
我现在怎么能彻底放弃这个该死的话题呢?(用压缩提交替换)
也许应该有某种终端机指令?我的格瑞特-福很弱,我没有任何特权访问服务器。
发布于 2017-08-09 16:50:31
AFAIK,没有现成的方法来实现这一点。然而,gerrit是一个很棒的工具,您可以通过编写自定义脚本来解决这个问题。
对不起,我太懒了,无法让您准备好使用解决方案,但我的脚本将这样做:
Change-Id's更新
感谢Marcelo Avila de Oliveira,您现在拥有了可以使用的脚本:
#!/bin/bash
alias gerrit="ssh -p 29418 gerrit.yourdomain.com gerrit"
for c in $(gerrit query topic:trololo | grep "сhange" | cut -d ' ' -f 2);
    do gerrit review $c --abandon;
done用您需要的任何东西替换trololo,或者修改脚本以接受参数。
发布于 2021-07-03 01:30:47
注释因为在答案中缺少代码意味着我不理解lanyusea用原来的答案解决了我的1/2的问题。不幸的是,由于缺乏格式,我无法判断:( .但我要增加一些新的..。我发誓
我发现了一些问题(我们刚刚更新了gerrit .所以这可能只是一个暂时的错误)
因此,改变:
#!/bin/bash
alias gerrit="ssh -p 29418 gerrit.yourdomain.com gerrit"
for id in $(gerrit query topic:yolo --current-patch-set | grep "revision" | cut -d ':' -f 2); do
    gerrit review --abandon $id -m "Abandoning\ for\ reasons"
done所有的功劳都归功于安德烈日和这条线上的每一个人
变成了一个可重用的函数。它处理转义,给出它所做的事情的反馈,并且不受通常的查询限制地运行:
#!/bin/bash
alias gerrit="ssh -p 29418 gerrit.yourdomain.com gerrit"
gerrit_abandon_patches() {(
    set -e
    local message="$1"
    shift 1 # remove message
    local id=
    local commit=
    #Quote spaces in message to work around gerrit bug
    message=${message//[ ]/\\ }
    
    IFS=$'\n' # We don't need to scope because we are in a closure
    
    for commit in $(gerrit query "$@" --current-patch-set --no-limit --format JSON | grep -e '"id":' ); do
        commit=$( echo "$commit" | sed -e 's/["{}]//g' -e 's/,/\n/g' )
        id=$(echo "$commit" | grep -e 'revision' | cut -d ':' -f 2 )
        echo "Abandoning: $id"
        echo "$commit" | grep \
            -e url \
            -e id \
            -e revision \
            -e commitMessage
        echo
        gerrit review --abandon $id -m "$message"
    done
)}https://stackoverflow.com/questions/45595704
复制相似问题