如何放弃关于 Gerrit 的整个话题?
How to abandon a whole topic on Gerrit?
因此,问题的长短在于,狂热地遵守代码审查原则和用户归属....
我将大约 834 次提交从上游分支推送到项目的 gerrit 服务器。
从那时起我就被告知我应该(合理地)首先推送一个压缩的提交以在 gerrit 上进行测试,然后将它们指向我的 repo 以进行合并...
幸运的是,我在上传时用主题标记了提交(为了便于测试....-_-)
我现在怎么能集体放弃整个该死的话题呢? (将替换为压缩的提交)
也许应该有某种终端命令?我的 gerrit-fu 很弱而且我没有任何访问服务器的特权..
AFAIK,没有现成的方法来实现这一点。但是,gerrit
是一个很棒的工具,您可以通过编写自定义脚本来解决这个问题。
抱歉,我太懒了,无法为您提供现成的解决方案,但这是我的脚本将执行的操作:
准备环境
alias gerrit="ssh -p 29418 gerrit.yourdomain.com gerrit"
列出主题为:
的所有提交
gerrit query topic:<topic>
条Change-Id
的
放弃一一提交:
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
替换为您需要的任何内容,或调整脚本以接受参数。
评论 --> 回答以便代码可读。因为答案中缺少代码意味着我不明白 lanyusea 用原始答案解决了我 1/2 的问题。不幸的是,由于缺少格式,我无法分辨:( ...但我正在添加一些新内容...我发誓
我发现了一些问题(我们刚刚更新了 gerrit ...所以它可能只是一个临时错误)
- Commit-Id 和更改编号均无效
- --message 中的空格无效
所以改变:
- 已添加查询 --current-patch-set
- grep 获取“修订版”
- 剪掉':'而不是space(不确定是否需要...我只是觉得领先的白色更好space)
- 转义消息中的所有 space(我需要记住为此提交错误)
#!/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=""
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
)}
因此,问题的长短在于,狂热地遵守代码审查原则和用户归属....
我将大约 834 次提交从上游分支推送到项目的 gerrit 服务器。
从那时起我就被告知我应该(合理地)首先推送一个压缩的提交以在 gerrit 上进行测试,然后将它们指向我的 repo 以进行合并...
幸运的是,我在上传时用主题标记了提交(为了便于测试....-_-)
我现在怎么能集体放弃整个该死的话题呢? (将替换为压缩的提交)
也许应该有某种终端命令?我的 gerrit-fu 很弱而且我没有任何访问服务器的特权..
AFAIK,没有现成的方法来实现这一点。但是,gerrit
是一个很棒的工具,您可以通过编写自定义脚本来解决这个问题。
抱歉,我太懒了,无法为您提供现成的解决方案,但这是我的脚本将执行的操作:
准备环境
alias gerrit="ssh -p 29418 gerrit.yourdomain.com gerrit"
列出主题为:
的所有提交gerrit query topic:<topic>
条
Change-Id
的放弃一一提交:
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
替换为您需要的任何内容,或调整脚本以接受参数。
评论 --> 回答以便代码可读。因为答案中缺少代码意味着我不明白 lanyusea 用原始答案解决了我 1/2 的问题。不幸的是,由于缺少格式,我无法分辨:( ...但我正在添加一些新内容...我发誓
我发现了一些问题(我们刚刚更新了 gerrit ...所以它可能只是一个临时错误)
- Commit-Id 和更改编号均无效
- --message 中的空格无效
所以改变:
- 已添加查询 --current-patch-set
- grep 获取“修订版”
- 剪掉':'而不是space(不确定是否需要...我只是觉得领先的白色更好space)
- 转义消息中的所有 space(我需要记住为此提交错误)
#!/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=""
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
)}