美文网首页
python爬取git上有权限访问的代码

python爬取git上有权限访问的代码

作者: 凯凯丶凯凯 | 来源:发表于2022-06-30 09:51 被阅读0次

    Gitlab权限管理

    Gitlab权限管理

    Gitlab用户在组中有五种权限:
    Guest、Reporter、Developer、Master、Owner

    • Guest:可以创建issue、发表评论,不能读写版本库
    • Reporter:可以克隆代码,不能提交,QA、PM可以赋予这个权限
    • Developer:可以克隆代码、开发、提交、push,RD可以赋予这个权限
    • Master:可以创建项目、添加tag、保护分支、添加项目成员、编辑项目,核心RD负责人可以赋予这个权限
    • Owner:可以设置项目访问权限 - Visibility Level、删除项目、迁移项目、管理组成员,开发组leader可以赋予这个权限
      Gitlab中的组和项目有三种访问权限:Private、Internal、Public

    Visibility Level

    • Private:只有组成员才能看到
    • Internal:只要登录的用户就能看到
    • Public:所有人都能看到

    开源项目和组设置的是Internal

    批量导出所有项目

    # -*- coding: UTF-8 -*-
     
    # 在Python3.0测试通过
    # 需要在gitlab里面新建一个AccessToken填入gitlabToken
     
    import sys
    if sys.version_info < (3, 0):
        import urllib
    else:
        from urllib.request import urlopen
     
    import json
    import subprocess, shlex
    import time
    import os
     
    gitlabAddr  = '192.168.20.15:9222'
    # gitlabToken获取
    gitlabToken = 'G2FQENzmN_fjPF2RAJtb'
     
    for index in range(10):
        url= "http://%s/api/v4/projects?private_token=%s&per_page=100&page=%d&order_by=name" % (gitlabAddr, gitlabToken, index)
        print(url)
        
        if sys.version_info < (3, 0):
            allProjects = urllib.urlopen(url)
        else:
            allProjects = urlopen(url)
            
        allProjectsDict = json.loads(allProjects.read().decode(encoding='UTF-8'))
        if len(allProjectsDict) == 0:
            break
        for thisProject in allProjectsDict: 
            try:
                thisProjectURL  = thisProject['http_url_to_repo']
                thisProjectPath = thisProject['path_with_namespace']
                print(thisProjectURL + ' ' + thisProjectPath)
                
                if os.path.exists(thisProjectPath):
                    command     = shlex.split('git -C "%s" pull' % (thisProjectPath))
                else:
                    command     = shlex.split('git clone %s %s' % (thisProjectURL, thisProjectPath))
                
                resultCode  = subprocess.Popen(command)
                time.sleep(0.5)
            except Exception as e:
                print("Error on %s: %s" % (thisProjectURL, e.strerror))
    

    gitlabToken获取

    image-20220323133710235.png

    相关文章

      网友评论

          本文标题:python爬取git上有权限访问的代码

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