Obtém o arquivo do bitbucket (git) do powershell

2

Eu preciso pegar um único arquivo do bitbucket (git) usando o powershell. Para complicar, preciso fazê-lo em http / https, já que 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 o Invoke-WebRequest e acessando a URL bruta. Por exemplo: link

Mas parece que você tem que autenticar. Eu tentei configurar a autenticação, mas não consigo trabalhar.

Eu pensei que em seguida eu poderia apenas puxá-lo do git usando o git archive: git archive --remote = git: //bitbucket.org/Company/project.git HEAD: algum / caminho / arquivo.txt mas que também não parece funcionar.

Então, como posso obter um único arquivo? Eu não quero apenas fazer o git clone porque então eu tenho que baixar (e armazenar) 500MB de outros arquivos que eu não me importo no repositório, o que é um problema por duas razões

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 de haver uma maneira de autenticar corretamente o Invoke-WebRequest ou apenas baixar um único arquivo? Pode qualquer git gurus - particularmente com fundos de powershell / windows ajudarem?

Obrigado! Brad

    
por Brad 29.05.2017 / 23:13

1 resposta

2

O BitBucket parece ter uma API REST padrão que você pode usar com Invoke-WebRequest ou Invoke-RestMethod .

Veja alguns links para a documentação deles: Autenticação e OBTER conteúdo bruto . A essência dessas páginas de documentação é 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:

# 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
    
por 29.05.2017 / 23:48