从 powershell 获取 bitbucket (git) 的文件

从 powershell 获取 bitbucket (git) 的文件

我需要使用 powershell 从 bitbucket (git) 中抓取单个文件。事情变得复杂了,我需要通过 http/https 来执行此操作,因为我运行 powershell 的系统没有直接的互联网访问权限(因此 ssh 不是一个选项)。我该怎么做?

我认为也许我可以使用 Invoke-WebRequest 并访问原始 URL 来获取它。例如:https://bitbucket.org/company/project/raw/HEAD/some/special/file.txt

但似乎需要验证身份才能访问。我尝试设置身份验证,但无法正常工作。

我认为接下来我可以使用 git archive 从 git 中提取它:git archive --remote=git://bitbucket.org/Company/project.git HEAD:some/path/file.txt 但这似乎也不起作用。

那么我如何才能获取单个文件呢?我不想只执行 git clone,因为这样我就必须下载(并存储)500MB 我不关心的其他文件,这有两个原因

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. 

我需要的文件是 10KB,因此为 10kb 的文件占用 500MB 的空间似乎很荒谬。

答案是什么?一定有一种方法可以让 Invoke-WebRequest 正确进行身份验证或仅下载单个文件?任何 git 专家(特别是具有 powershell/windows 背景的人)可以提供帮助吗?

谢谢!Brad

答案1

BitBucket 似乎有一个相当标准的 REST API,你可以使用Invoke-WebRequest或者Invoke-RestMethod

以下是一些其文档的链接:验证获取原始内容。这些文档页面的要点是它们支持基本身份验证和原始文件内容的 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

相关内容