Bitbucket Rest API 用于获取项目下的 Repo 名称

问题描述

我正在尝试使用 Bitbucket API 获取项目下的存储库名称。文档上的当前链接说要使用

curl -u username:pwd http://${bitbucket-url}/rest/api/1.0/projects/${projectkey}/repos/

回复

{ “大小”:1, “限制”:25, “isLastPage”:真, “价值观”:[ { "slug": "my-repo", “身份证”:1, "name": "我的仓库","scmId": "git",“状态”:“可用”, "statusMessage": "可用",“forkable”:真的, “项目”: { "key": "PRJ",“身份证”:1, "name": "我的酷项目","description": "我很酷的项目的描述。",“公开”:真实, "类型": "正常",“链接”:{ “自己”: [ { "href": "http://link/to/project" } ] } },“公开”:真实, “链接”:{ “克隆”:[ { "href": "ssh://git@/PRJ/my-repo.git",“名称”:“ssh” },{ "href": "https:///scm/PRJ/my-repo.git",“名称”:“http” } ],“自己”: [ { "href": "http://link/to/repository" } ] } } ],“开始”:0 }

但我只需要响应中的存储库名称

解决方法

from subprocess import call
import configparser
import subprocess
import json
import os

base_dir = os.getcwd()
DETACHED_PROCESS = 0x00000008

cmd = 'curl --url "' + bb_url + '?pagelen=100&page=' + str(page) + '" --user ' + bb_user + ':' + bb_pwd + ' --request GET --header "Accept: application/json"'
output = subprocess.Popen(cmd,stdout=subprocess.PIPE,stderr=subprocess.PIPE,creationflags=DETACHED_PROCESS).communicate()
datastore = json.loads(output[0].decode("utf-8"))
size = datastore.get("size")
values = datastore.get("values")
if(len(values)) == 0:
    break
for repos in range(size):
    repo_name = values[repos]["values"]["slug"]
    f_initial = open (base_dir+"\\repositoryList.txt","a+")
    f_initial.write(repo_name)
    f_initial.write("\n")
    f_initial.close()
page = page + 1

此脚本将帮助您获取项目中所有存储库的列表并将其写入文件repositoryList.txt 下

,

使用 bash 命令

repoNamesJson=$(curl -D- -X GET -H "Authorization: Basic <encoded user pasword here>" -H "Content-Type: application/json" https://yourstash/rest/api/1.0/projects/ad/repos?limit=100000)
repoNames=$(echo $repoNamesJson | awk -v RS=',' '/{"slug":/ {print}' | sed -e 's/{"slug":/''/g' | sed -e 's/"/''/g')
echo $repoNames

使用 python-stash 库

import stashy

bitbucket = stashy.connect("host","username","password")
projects = bitbucket.projects.list()
repos = bitbucket.repos.list()

for project in projects:
    for repo in bitbucket.projects["%s" % (project["key"])].repos.list():
        print(repo["name"])
        print(repo["project"]['key'])

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...