如何在 Gerrit(3.0) 中删除账户

3

我遇到了一些账户问题(我认为是使用ssh创建它们,因此除非启用 development_become_any_account ,否则不能登录),它们现在只显示一个空的登录页面。

我想通过删除并重新创建这些账户来重置它们。如果有影响的话,我正在使用HTTP身份验证。

我检查了克隆All-Users和检出origin/users/self时的用户配置,但我真的没有看到任何可能引起这种情况的区别。

我真的很希望能得到关于如何删除这些错误帐户并重新开始的帮助。

更新

我注意到通过ssh创建的账户从未获得“gerrit:”身份。我似乎无法向账户添加gerrit:身份 - 这是否可能在创建账户后进行?

我尝试从All-Users中删除“accounts / self”引用,但这最终使该账户无法使用,但用户名仍然被占据在gerrit中,所以这不是一个解决方法。


希望这可以帮助你解决问题(我曾经遇到过类似的问题)https://stackoverflow.com/questions/58116440/cannot-login-after-editing-email-addresses/58130525#58130525 - La masse
谢谢 - 这实际上也是我解决它的方式!花了我一些试验才做到。由于它不是我的问题的答案,所以我没有在这里发布我的解决方案。 - Valkyria Hon
3个回答

2
  1. 从 Gerrit 上检出 All-Users 项目。
git clone ssh://<user>@<gerrit host>:29418/All-Users
  1. Checkout ref refs/meta/external-ids
git fetch origin refs/meta/external-ids:refs/meta/external-ids
git checkout refs/meta/external-ids
  1. 搜索您想要删除的帐户,例如foobar
grep foobar *

398cd83a701a63c77dfc1998f76524561208c879:[externalId "gerrit:foobar"]
398cd83a701a63c77dfc1998f76524561208c879:   email = foobar@example.com
9b622a00bcd48295d545ba946afdd91df8b0ed61:[externalId "username:foobar"]
  1. 删除这些文件并提交
git rm 398cd83a701a63c77dfc1998f76524561208c879 9b622a00bcd48295d545ba946afdd91df8b0ed61
git commit -m "Remove account foobar"
git push origin HEAD:refs/meta/external-ids

这真的有效吗?????我看到了很多目录,但没有像输出中显示的代码。 - anish anil
它对我起作用了。@anishanil在您检出refs/meta/external-ids之后,All-Users项目中将不会有“目录”。可能会有许多长度为40的十六进制文件名的文件。每个这些文件代表一个单独的用户。 - wizawu
我应该删除所有这些文件夹吗? - anish anil
命令应该是“git grep foobar *”。 - anish anil
1
也许事情已经改变了。我正在使用 Gerrit 3.3.2,当我检出 refs/meta/external-ids 时,我会得到很多以两个十六进制字符命名的目录,在这些目录下有包含用户信息的文件。因此,查找正确文件的命令是“grep -r foobar .”。 - Gnustavo
显示剩余2条评论

1
使用Gerrit的REST API的账户端点来停用用户是一个不错的方法。您可以通过命令行执行以下操作:
$ curl -u user:password -X DELETE https://gerrit.example.net/a/accounts/{accound-id}/active

这里解释了{account-id}的含义here


0

在 Gerrit 3.6.1 中进行测试,您可以通过 SSH 添加 account 插件并删除帐户。以下是所需的语法:

ssh -p 29418 ssh://<user_name>@<host_name> account delete ACCOUNT-ID --yes-really-delete ACCOUNT-NAME

您可以通过使用admin-console插件并运行以下命令来检索ACCOUNT-ID:

ssh -p 29418 ssh://<user_name>@<host_name> admin-console ls-users|grep <user_to_delete>

注意:此方法仍会在数据库中保留用户的账户 ID 记录,但用户将被设置为无效,并删除其信息。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接