美文网首页
【gerrit】Cannot assign user name

【gerrit】Cannot assign user name

作者: 熊本猫 | 来源:发表于2020-01-13 15:32 被阅读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
    

    相关文章

      网友评论

          本文标题:【gerrit】Cannot assign user name

          本文链接:https://www.haomeiwen.com/subject/rrtnactx.html