我试图完全清除Gerrit的变化并遇到一些问题。
之前我尝试按照本指南来实现我的目标:
https://www.onyxpoint.com/deleting-abandoned-commits-from-gerrit-code-review/
然而,我搞砸了这一点,并以某种方式设法做了以下事情:如果更改信息不在DB中,则来自哪里?我也尝试过冲洗所有缓存。它是在lucene的搜索索引中的某个地方吗?
这不是非常重要,但它确实让我疯了!
答案 0 :(得分:7)
在我的情况下,我没有必要执行重新索引。但是另外一步(5):
打开GSQL界面
$ gerrit-cli gsql
以下命令会将更改集标记为Gerrit数据库中的草稿更改集。
gerrit> update changes set status='d' where change_id='64581';
接下来,更新相关的补丁集。
gerrit> update patch_sets set draft='Y' where change_id='64581';
gerrit> \q
在进行进一步更改之前,您需要确保已刷新Gerrit缓存。如果你不这样做,你最终可能会感到奇怪 使用与此更改集相关的Web UI时的结果。
$ gerrit-cli flush-caches --cache changes
最后,删除之前放弃的补丁集。 在这种情况下,我们假设您有两个补丁集 删除。
$ gerrit-cli review 64581,1 --delete
$ gerrit-cli review 64581,2 --delete
答案 1 :(得分:2)
查询使用Gerrit的二级索引(默认情况下基于Lucene),因此如果您在Gerrit之外修改数据库,则必须使用reindex command重新索引数据:
$ java -jar path/to/gerrit.war reindex -d path/to/gerrit-site-dir
只有在Gerrit没有运行时才能执行此命令。