Извлечь список источников (ветвей) из Bitbucket с помощью Python

Я новичок в python и пытаюсь обновить чужой код.

Мне нужно получить список источников (веток) из Bitbucket, чтобы пользователь мог выбирать из этого списка. Существующий код успешно использовал запросы URL для извлечения списков из Bitbucket как для проектов, так и для репозиториев, но я не могу найти способ получить доступ к исходному местоположению, чтобы изменить его с «Мастера» по умолчанию на ветку, выбранную пользователем. . Для справки, этот фрагмент кода работал для извлечения информации из репозиториев:

@app.route("/initial3" , methods=['GET', 'POST'])
def initial3():
    selected_git_project = str(request.form.get('git_project'))
    selected_git_repository = str(request.form.get('git_information'))
    #checkbox_all_selection = str(request.form.get('checkbox_all'))
    confluence_information = [str(request.form.get('confluence_information'))]
    selected_page = request.form.get('page_id')
    returnlistsearch = []
    url = 'https://git.ourcompanyname.com/rest/api/1.0/projects/'+selected_git_project+'/repos/'+selected_git_repository+'/files?limit=1000'
    resources_json = requests.get(url, auth=(git_user, git_password)).json()
    resources_json_dump = (json.dumps(resources_json, indent=4, sort_keys=False))
    decoded = json.loads(resources_json_dump)
    for x in decoded['values']:
        if '.robot' in x:
            location=os.path.dirname(x)
            if location!='':
                returnlistsearch.append(location)
    returnlistsearch =remove_duplicated(returnlistsearch)
    return render_template('initial3.html',git_repository=selected_git_repository,git_project=selected_git_project ,git_information=returnlistsearch)

Я думал, что смогу повторно использовать тот же код, но с измененным URL-адресом (некоторые ссылки на docs.atlassian, похоже, указывают на то, что это сработает):

url = 'https://git.ourcompanyname.com/rest/api/1.0/projects/'+selected_git_project+'/repos/'+selected_git_repository+'/files?limit=1000'

Любые предложения будут высоко оценены. Мой первый взгляд на python был два дня назад.


person DWNewbie    schedule 09.08.2018    source источник


Ответы (2)


Если вам не нужно делать это через http-запросы, я бы рекомендовал использовать библиотеку GitPython. Вы можете использовать его для доступа к любому репозиторию.

Вот учебник, как им пользоваться.

person Michalos88    schedule 09.08.2018
comment
Мне действительно нужно просто использовать существующий код, который полагается на http-запросы. - person DWNewbie; 16.08.2018
comment
Если вы не хотите использовать библиотеку GitPython. Вы можете проверить, как он построен, и имитировать подход. https://github.com/gitpython-developers/GitPython или изучите API Bitbucket. Надеюсь, кто-то еще даст более конкретный ответ. - person Michalos88; 17.08.2018

После значительных проб и ошибок я обнаружил синтаксис, который работает. Ссылка на ветку применяется в конце HTTP-запроса.

Получить информацию о ветке:

url = 'https://git.ourcompanyname.com/rest/api/1.0/projects/'+project+'/repos/'+repository+'/files?limit=10000&at='+branch

Получить список файлов в ветке:

url2 = 'https://git.ourcompanyname.com/rest/api/1.0/projects/'+project+'/repos/'+repository+'/browse/' + results + '?at='+branch
person DWNewbie    schedule 20.08.2018