从 Gerrit 数据库中完全删除废弃的提交并且 'query'
Fully delete abandoned commit from Gerrit DB AND 'query'
我正试图从 Gerrit 和 运行ning 中完全清除一个更改,导致一些问题。
之前我尝试按照本指南来实现我的目标:
https://www.onyxpoint.com/deleting-abandoned-commits-from-gerrit-code-review/
然而我搞砸了,并以某种方式设法做到了以下几点:
- 从 Gerrit gsql 数据库中的所有表中清除有问题的 change-id
- 变化仍然出现在网络界面中,但如果我点击它,它会引发错误:"The page you requested was not found, or you do not have permission to view this page."
- 如果我 运行 'gerrit query' 进行更改,它仍然显示,充满了所有信息。
如果不在数据库中,更改信息来自哪里???我还尝试刷新所有缓存。它在 lucene 的搜索索引中的某处吗?
这不是特别重要,但它真的让我抓狂!
查询使用 Gerrit 的二级索引(默认情况下基于 Lucene),因此如果您在 Gerrit 之外修改数据库,则必须使用 reindex command:
重新索引数据
$ java -jar path/to/gerrit.war reindex -d path/to/gerrit-site-dir
仅当 Gerrit 不是 运行 时才应执行此命令。
就我而言,我不必执行重新索引。但是额外的步骤(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
- 确保管理员对 refs/* 的回购具有 "View Drafts" 和 "Delete Drafts" 权限
最后,删除您之前放弃的补丁集。
在这种情况下,我们将假设您有两个补丁集
删除。
$ gerrit-cli review 64581,1 --delete
$ gerrit-cli review 64581,2 --delete
一个一个地删除每个补丁集可以是一个PITA。使用 GUI 一次性对他们进行核爆:
我正试图从 Gerrit 和 运行ning 中完全清除一个更改,导致一些问题。
之前我尝试按照本指南来实现我的目标:
https://www.onyxpoint.com/deleting-abandoned-commits-from-gerrit-code-review/
然而我搞砸了,并以某种方式设法做到了以下几点:
- 从 Gerrit gsql 数据库中的所有表中清除有问题的 change-id
- 变化仍然出现在网络界面中,但如果我点击它,它会引发错误:"The page you requested was not found, or you do not have permission to view this page."
- 如果我 运行 'gerrit query' 进行更改,它仍然显示,充满了所有信息。
如果不在数据库中,更改信息来自哪里???我还尝试刷新所有缓存。它在 lucene 的搜索索引中的某处吗?
这不是特别重要,但它真的让我抓狂!
查询使用 Gerrit 的二级索引(默认情况下基于 Lucene),因此如果您在 Gerrit 之外修改数据库,则必须使用 reindex command:
重新索引数据$ java -jar path/to/gerrit.war reindex -d path/to/gerrit-site-dir
仅当 Gerrit 不是 运行 时才应执行此命令。
就我而言,我不必执行重新索引。但是额外的步骤(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
- 确保管理员对 refs/* 的回购具有 "View Drafts" 和 "Delete Drafts" 权限
最后,删除您之前放弃的补丁集。 在这种情况下,我们将假设您有两个补丁集 删除。
$ gerrit-cli review 64581,1 --delete $ gerrit-cli review 64581,2 --delete
一个一个地删除每个补丁集可以是一个PITA。使用 GUI 一次性对他们进行核爆: