从Gerrit DB和'query'中完全删除放弃的提交

all*_*123 4 sql lucene gerrit

我试图完全清除Gerrit的变化并遇到一些问题.

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

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

然而,我把它弄乱了,并以某种方式设法做了以下事情:

  • 从Gerrit gsql数据库中的所有表中清除有问题的change-id
  • 更改仍会显示在Web界面中,但如果我单击它,则会触发错误:"找不到您请求的页面,或者您无权查看此页面."
  • 如果我为更改运行'gerrit query',它仍会显示,充满所有信息.

如果更改信息不在DB中,那么它来自何处?我也尝试过冲洗所有缓存.它是在lucene的搜索索引中的某个地方吗?

这不是非常重要,但它真的让我疯了!

Neh*_*ani 8

在我的情况下,我没有必要执行重新索引.但是另外一步(5):

  1. 打开GSQL界面

    $ gerrit-cli gsql
    
    Run Code Online (Sandbox Code Playgroud)
  2. 以下命令将更改集标记为Gerrit数据库中的草稿更改集.

    gerrit> update changes set status='d' where change_id='64581';
    
    Run Code Online (Sandbox Code Playgroud)
  3. 接下来,更新关联的补丁集.

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

    $ gerrit-cli flush-caches --cache changes
    
    Run Code Online (Sandbox Code Playgroud)
  5. 确保管理员在repo上具有"查看草稿"和"删除草稿"权限以获取refs/* 在此输入图像描述
  6. 最后,删除您之前放弃的补丁集.在这种情况下,我们假设您有两个要删除的补丁集.

    $ gerrit-cli review 64581,1 --delete
    $ gerrit-cli review 64581,2 --delete
    
    Run Code Online (Sandbox Code Playgroud)

    逐个删除每个补丁集可以是PITA.Nuke'一起使用GUI: 在此输入图像描述