Eu preciso pegar um único arquivo do bitbucket (git) usando o powershell. Para complicar as coisas, preciso fazer isso por http/https, pois o sistema em que estou executando o powershell não tem acesso direto à Internet (portanto, o ssh não é uma opção). Como posso fazer isso?
Eu pensei que talvez eu pudesse pegá-lo usando Invoke-WebRequest e acessando o URL bruto. Por exemplo: https://bitbucket.org/company/project/raw/HEAD/some/special/file.txt
Mas parece que para acessar você tem que autenticar. Eu tentei configurar a autenticação, mas não consigo fazê-lo funcionar.
Eu pensei que em seguida eu poderia apenas puxá-lo do git usando git archive: git archive --remote=git://bitbucket.org/Company/project.git HEAD:some/path/file.txt mas isso também não parece trabalhar.
Então, como posso obter um único arquivo. Eu não quero apenas fazer git clone porque então eu tenho que baixar (e armazenar) 500 MB de outros arquivos com os quais não me importo no repositório, o que é um problema por dois motivos
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.
O arquivo que eu preciso é de 10KB, então amarrar 500MB para um arquivo de 10kb parece absurdo.
Qual é a resposta? Tem que haver uma maneira de fazer o Invoke-WebRequest autenticar corretamente ou apenas baixar um único arquivo? Algum guru do git - particularmente com planos de fundo do powershell/windows pode ajudar?
Obrigado! Brad
O BitBucket parece ter uma API REST bastante padrão que você pode usar com
Invoke-WebRequest
ouInvoke-RestMethod
.Aqui estão alguns links para sua documentação: Autenticação e GET raw content . A essência dessas páginas doc é que elas suportam autenticação básica e solicitações GET para conteúdo de arquivo bruto. Então, a partir do seu exemplo, você precisaria fazer algo assim: