【gerrit】Cannot assign user name

2020-01-13  本文已影响0人  熊本猫

报错

Cannot assign user name xxx to account xxx,name already in use

gerrit登录报错

原因分析

因为gerrit使用的LDAP方式认证,最近切换了ldap的认证地址,可能导致该账号有个历史记录跟新的同名报了冲突

解决办法

老的方式是进到mysql数据库,更改account_id表的内容,但是2.15版本之后用户的表移到notedb了,所以要用新的方式

首先进到gerrit安装服务器上,然后进到gerrit保存代码的地址(如果不记得可以查看 ~/review_site/etc/gerrit.config文件的[gerrit] basePath字段)

然后找到All-Users.git目录,克隆一份这个库

git clone All-Users.git tmp/All-Users

进入tmp/All-Users目录,切到refs/meta/external-ids (这个是gerrit用来保存类似LDAP方式验证的用户信息的分支)

cd tmp/All-Users
git fetch origin refs/meta/external-ids:refs/meta/external-ids
git checkout refs/meta/external-ids

然后搜索保存了那个无法登录用户名的文件,应该会有2个文件

find . -type f | xargs grep "xxx"

找到之后,可以删掉这两个文件,或者更改这两个文件里面的用户名为其他值,修改之后提交

git add .
git commit -m "update username xxx"
git push origin HEAD:refs/meta/external-ids

最后更新并应用到notedb

git update-ref refs/meta/external-ids $(git rev-parse HEAD)

补充

后来发现该用户登录之后userName是空的,无法ssh拉代码,遂删除其账号分支以及LDAP的用户关联文件

  1. 切到refs/meta/external-ids,删掉存储该用户信息的文件

  2. 删除远程用户分支

#进到All-Users目录,方法同上
#找到该用户的分支
git ls-remote | grep <USER_ID>
#删除该用户的分支
git push origin --delete refs/users/xx/xxxxxx
上一篇下一篇

猜你喜欢

热点阅读