Получить файл из битбакета (git) из powershell

Мне нужно получить один файл из битбакета (git) с помощью PowerShell. Мне нужно сделать это через http / https, поскольку система, из которой я запускаю powershell, не имеет прямого доступа в Интернет (поэтому ssh не подходит). Как я могу это сделать?

Я подумал, что, возможно, я смогу захватить он использует Invoke-WebRequest и обращается к необработанному URL-адресу, например: https://bitbucket.org/company/project/raw/HEAD/some/special/file.txt

Но, похоже, для доступа необходимо пройти аутентификацию. Я пробовал настроить аутентификацию, но не могу заставить ее работать.

Дальше я подумал, что могу просто вытащить его из git с помощью архива git: git archive --remote = git: //bitbucket.org/Company/project.git HEAD: some / path / file.txt но это тоже не работает.

Итак, как я могу получить один файл. Я не хочу просто делать git clone, потому что тогда мне нужно вытащить (и сохранить) 500 МБ других файлов, которые меня не интересуют, в репо, что является проблемой по двум причинам

1) I have to have space to store all that data (at least temporarily)
2) Unless I want to tie up that storage permanently I have to re-download it each time I need the file. 

Мне нужен файл 10 КБ, так что связывать 500 МБ для файла размером 10 КБ кажется абсурдным.

Какой ответ? Должен быть способ заставить Invoke-WebRequest пройти аутентификацию должным образом или просто загрузить один файл? Может ли помочь какой-нибудь гуру git - особенно с фоном PowerShell / Windows?

Спасибо! Брэд

2
задан 30 May 2017 в 00:13
1 ответ

BitBucket, похоже, имеет довольно стандартный REST API, который можно использовать с Invoke-WebRequest или Invoke-RestMethod.

Вот несколько ссылок на их документацию: Аутентификация и Получение исходного содержимого. Суть этих doc-страниц в том, что они поддерживают базовую аутентификацию и GET-запросы на необработанное содержимое файлов. Итак, из вашего примера, вам нужно сделать что-то подобное:

# create a credential variable for your account
$cred = Get-Credential

# modify the base URL to hit the API endpoint instead of the standard web endpoint, pass the credentials with the request, and send the output to a file
Invoke-RestMethod -Credential $cred -Uri https://api.bitbucket.org/1.0/repositories/company/project/raw/HEAD/some/special/file.txt -OutFile .\file.txt
3
ответ дан 3 December 2019 в 10:35

Теги

Похожие вопросы