Мне нужно получить один файл из битбакета (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?
Спасибо! Брэд
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