1. 仓库管理 (gitlab&svn)

在一些情况下,可能需要代码仓库管理员管理多套git和svn。如果需要查询某个用户的权限项目和项目的归属人,或者停用某个用户,操作比较麻烦,仓库管理模块可以解决一些代码仓库管理的问题。

对git的管理是通过直接调用api。对于svn是通过修改管理机上的文件,然后提交到代码仓库,svn服务器定时同步最新,或者直接从管理机同步到svn服务器。

root@feng:# mydan code
nofind config file:/opt/mydan/dan/code/config
root@feng:# cp /opt/mydan/dan/code/config.example  /opt/mydan/dan/code/config
root@feng-pc:/opt/mydan/dan/code# mydan code
---
- apiurl: http://gitlab.mydan.org/api/v4
  name: git1
  token: xxxxxxxxxxxxxxxx
- apiurl: https://gitlab.mydan.com/api/v4
  name: git2
  token: xxxxxxxxxxxxxxxx
- name: svn1
  path:
  - /opt/mydan/dan/code/temp/svn1/*/*.txt
SYNOPSIS
     $0 [--search user]
     $0 [--list]
     $0 [--block user]
     $0 [--unblock user]

     $0 [--name name]

1.1. 解释

1.1.1. 配置

  • 不写任何参数的情况下,会打印出配置文件的信息和参数帮助
  • 配置文件是一个yaml格式的文件,是一个数组,每个元素代表一个git或者svn,如果存在apiurl则表示是git,否则是svn
  • token就是git中的private_token
  • name 是给每个仓库起名,可以起一样的名字,在通过mydan code 操作时可以通过--name来指定只操作某个仓库
  • svn类型的配置文件中的path,使用匹配文件路径的方式和linux命令中的ls一样

1.1.2. 参数

  • search: 搜索用户,一般是邮箱,比如lijinfeng2011@gmail.com,git可以通过用户名和邮箱搜索,svn只可以通过邮箱来搜索
  • list: 列出所有的用户,如果checkuser插件私有化定制了,会把仓库里面的处于active状态的用户查一遍用户状态(是否离职)
  • block: 停用用户。对于svn来说,就是把svn对应的所有配置文件中该用户上加前缀 block__ , 重新启用时把前缀去掉
  • unblock:启用用户

1.2. 例

1.2.1. 搜索用户

root@feng:# mydan code --search lijinfeng2011@gmail.com 

[1]: lijinfeng2011@gmail.com git group         http://gitlab.mydan.org/groups/mg1    lijinfeng2011@gmail.com
[1]: lijinfeng2011@gmail.com git project.group http://gitlab.mydan.org/g2t/proj1     @ByGroup
[2]: lijinfeng2011@gmail.com git project.group http://gitlab.mydan.org/g5g/Proj      mydan1@gmail.com @GroupOwner
[3]: lijinfeng2011@gmail.com git project.group http://gitlab.mydan.org/g5g/Pa     mydan2@gmail.com @GroupOwner
[4]: lijinfeng2011@gmail.com git project.user  http://gitlab.mydan.org/lijinfeng2011/test_2  @Self
[5]: lijinfeng2011@gmail.com git project.user  http://gitlab.mydan.org/lijinfeng/test    lijinfeng@gmail.com @ProjectOwner
[6]: lijinfeng2011@gmail.com git project.user  http://gitlab.mydan.org/user1/mm1         NoFind
[7]: lijinfeng2011@gmail.com git project.group http://gitlab.mydan.org/grouptest1/mx1    @ByGroup
[1]: lijinfeng2011@gmail.com svn group   /opt/mydan/dan/code/temp/svn1/p1/AccessConfig.txt [groups] MYDan_G_T_1_rw
[2]: lijinfeng2011@gmail.com svn project /opt/mydan/dan/code/temp/svn1/p1/AccessConfig.txt [/mydan/code/test] lijinfeng2011@gmail.com = rw
[3]: MYDan_G_T_1_rw  svn bygroup /opt/mydan/dan/code/temp/svn1/p1/AccessConfig.txt [/my/dan] @MYDan_G_T_1_rw = rw

git中的项目归属通过以下顺序查找

  • @ByGroup 表示这个用户在这个组里面,以组权限为准
  • @GroupOwner 用户不在这个项目组里面,如果这个项目是属于某个组的,找这个组的owner
  • @Self 这个项目就是这个用户自己的
  • @ProjectOwner 找这个项目的owner
  • NoFind 什么都没有匹配上

1.2.2. 获取用户列表

root@feng:# mydan code --list
[1]: git mydan1@gmail.com active
[2]: git mydan2@gmail.com block
[3]: git mydan3@gmail.com active
[4]: git mydan4@gmail.com active
[1]: svn mydan1@gmail.com active

1.2.3. 停用用户

root@feng:# mydan code --block lijinfeng2011@gmail.com
git lock user.email=lijinfeng2011@gmail.com user.id=123

1.2.4. 启用用户

root@feng:# mydan code --unblock lijinfeng2011@gmail.com
git unlock user.email=lijinfeng2011@gmail.com user.id=123

1.2.5. 指定仓库执行

root@feng:# mydan code --name svn --search lijinfeng2011@gmail.com 

[1]: lijinfeng2011@gmail.com svn group   /opt/mydan/dan/code/temp/svn1/p1/AccessConfig.txt [groups] MYDan_G_T_1_rw
[2]: lijinfeng2011@gmail.com svn project /opt/mydan/dan/code/temp/svn1/p1/AccessConfig.txt [/mydan/code/test] lijinfeng2011@gmail.com = rw
[3]: MYDan_G_T_1_rw  svn bygroup /opt/mydan/dan/code/temp/svn1/p1/AccessConfig.txt [/my/dan] @MYDan_G_T_1_rw = rw
  • 仓库名可以重名

1.2.6. 其他

查看:checkuser

  • 需要实现自己的插件/opt/mydan/dan/code/plugin/checkuser.private
  • 如果没有定义自己的插件则跳过
Copyright 2017 - 2018. all right reserved,powered by Gitbook该文件修订时间: 2019-03-28 10:26:18

results matching ""

    No results matching ""