从 Gerrit 数据库中完全删除废弃的提交并且 'query'

Fully delete abandoned commit from Gerrit DB AND 'query'

我正试图从 Gerrit 和 运行ning 中完全清除一个更改,导致一些问题。

之前我尝试按照本指南来实现我的目标:

https://www.onyxpoint.com/deleting-abandoned-commits-from-gerrit-code-review/

然而我搞砸了,并以某种方式设法做到了以下几点:

如果不在数据库中,更改信息来自哪里???我还尝试刷新所有缓存。它在 lucene 的搜索索引中的某处吗?

这不是特别重要,但它真的让我抓狂!

查询使用 Gerrit 的二级索引(默认情况下基于 Lucene),因此如果您在 Gerrit 之外修改数据库,则必须使用 reindex command:

重新索引数据
$ java -jar path/to/gerrit.war reindex -d path/to/gerrit-site-dir

仅当 Gerrit 不是 运行 时才应执行此命令。

就我而言,我不必执行重新索引。但是额外的步骤(5):

  1. 打开GSQL界面

    $ gerrit-cli gsql
    
  2. 以下命令会将更改集标记为 Gerrit 数据库中的草稿更改集。

    gerrit> update changes set status='d' where change_id='64581';
    
  3. 接下来,更新关联的补丁集。

    gerrit> update patch_sets set draft='Y' where change_id='64581';
    gerrit> \q
    
  4. 在进行进一步更改之前,您需要确保已刷新 Gerrit 缓存。如果你不这样做,你可能会得到奇怪的结果 使用与此更改集相关的 Web UI 时的结果。

    $ gerrit-cli flush-caches --cache changes
    
  5. 确保管理员对 refs/* 的回购具有 "View Drafts" 和 "Delete Drafts" 权限
  6. 最后,删除您之前放弃的补丁集。 在这种情况下,我们将假设您有两个补丁集 删除。

    $ gerrit-cli review 64581,1 --delete
    $ gerrit-cli review 64581,2 --delete
    

    一个一个地删除每个补丁集可以是一个PITA。使用 GUI 一次性对他们进行核爆: