因此,问题的长短不一,是因为他们狂热地遵守代码审查原则和用户归属....
我将834次提交从上游分支推送到项目的gerrit服务器。
我从那时起告诉我,我应该(合理地)先推动一个压扁的提交来测试gerrit,然后将它们指向我的回购合并......
幸运的是,我在上传时已经将主题标记为主题(为了便于测试...... -_-)
我现在如何大规模放弃那里该死的话题? (用压扁的提交代替)
应该有某种终端命令?我的gerrit-fu很弱,虽然我没有任何特权访问服务器..
答案 0 :(得分:3)
AFAIK,没有现成的方法来实现这一目标。但是,gerrit
是一个很棒的工具,您可以通过编写自定义脚本来解决此问题。
抱歉,我太懒了,不能让你准备好使用解决方案,但这就是我的脚本会做的事情:
准备环境
alias gerrit="ssh -p 29418 gerrit.yourdomain.com gerrit"
列出所有主题提交:
gerrit query topic:<topic>
剥离Change-Id
&#39;
Abandon一个接一个地提交:
gerrit review <id> --abandon
<强>更新强>
感谢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
替换为您需要的任何内容,或者修改脚本以获取参数。
答案 1 :(得分:0)
评论 --> 回答以便代码可读。因为答案中缺少代码意味着我不明白 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
感谢 Andrejs 和该线程上的每个人
并变成了一个可以重复使用的功能。它处理转义,提供有关其操作的反馈,并在没有通常查询限制的情况下运行:
#!/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
)}