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

时间:2015-04-11 08:05:59

标签: sql lucene gerrit

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

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

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

然而,我搞砸了这一点,并以某种方式设法做了以下事情:

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

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

这不是非常重要,但它确实让我疯了!

2 个答案:

答案 0 :(得分:7)

在我的情况下,我没有必要执行重新索引。但是另外一步(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的回购许可/ *  enter image description here
  6. 最后,删除之前放弃的补丁集。 在这种情况下,我们假设您有两个补丁集 删除。

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

    逐个删除每个补丁集可以是PITA。使用GUI一次性使用Nuke' em: enter image description here

答案 1 :(得分:2)

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

$ java -jar path/to/gerrit.war reindex -d path/to/gerrit-site-dir

只有在Gerrit没有运行时才能执行此命令。