我正在编写一个脚本来轻松部署应用程序。应用程序的代码存储在私有BitBucket存储库中。
我希望能够下载提交的zip文件。我尝试使用以下代码进行身份验证:
https://user:pass@bitbucket.org/user/repo/get/commit.zip
但是,它没有完成任务,而是重定向到BitBucket上的登录页面。
答案 0 :(得分:33)
就个人而言,我并不想将密码放入我的脚本中来实现这一目标。所以诀窍是在将你的公钥添加到你的bitbucket帐户后运行以下命令:
git archive --remote=ssh://git@bitbucket.org/your_bitbucket_username/your_repository.git --format=zip --output="name_of_your_desired_zip_file.zip" master
我的系统上有多个键,如果你也这样做,你需要在〜/ .ssh目录中创建一个配置文件,指定使用特定键进行bitbucket连接。
<强>的〜/ .ssh /配置强>
Host bitbucket.org
StrictHostKeyChecking no
IdentityFile /home/me/.ssh/my_private_key
答案 1 :(得分:28)
要从命令行下载私有 Bitbucket存储库的压缩副本,请使用以下命令:
curl --digest --user <username>:<password> https://bitbucket.org/<username>/<repository>/get/<branchname>.zip -o <branchname>.zip
其中<username>
和<password>
是Bitbucket帐户名和密码,<repository>
是回购名称,<branchname>
是分支。如果您更愿意下载特定提交,请使用提交的SHA-1哈希代替<branchname>.
--digest
标记是为了您的安全,强烈推荐。它完成身份验证,因此您的用户名和密码不以明文形式发送。 -o
标志将curl命令的输出作为文件发送到磁盘,而不是通过终端屏幕流式传输。
注意: Bitbucket的身份验证方案与wget.
不兼容这就是您必须使用curl.
对于 public Bitbucket存储库,命令为:
curl https://bitbucket.org/<username>/<repository>/get/<branchname>.zip -o <branchname>.zip
或者,您可以将wget
用于公共存储库,因为不需要身份验证:
wget https://bitbucket.org/<username>/<repository>/get/<branchname>.zip
除.zip
格式外,您还可以下载.gz
和.bz2
种类的存储库。只需使用.zip
或.gz
替换上面代码中的.bz2
,即可以您选择的压缩格式下载存储库。
答案 2 :(得分:11)
--digest标志是为了您的安全,强烈建议。它完成身份验证,因此您的用户名和密码不会以明文形式发送。
这不是真的。
Bitbucket专门使用TLS,因此在任何时候都不会以明文形式通过电线。因此,Digest与Basic Auth相比没有任何好处。实际上,考虑到Digest是服务器启动的,您需要额外的服务器往返请求服务器提供的nonce。
自从几年前我们停止提供未加密的HTTP访问以来,我们对Digest的使用一直是多余的,因为@GrowlTiger建议使用基于卷曲的脚本执行--digest
。
事实上,我们即将在5月1日完全关闭Digest,之后curl --digest
将停止工作。
可以找到更多信息:https://blog.bitbucket.org/2015/04/03/fare-thee-well-digest-access-authentication/
答案 3 :(得分:6)
对于那些想要在bitbucket上从私人仓库下载单个文件的人,我已经尝试了上述但没有工作。最后,我使用以下命令:
wget --user=<user> --password=<password> https://bitbucket.org/<user>/<repo>/raw/master/<filename>
答案 4 :(得分:2)
GrowlTigers的答案很棒,只是一个更新:使用wget它现在似乎也有效:
wget --user=<username> --password='<password>' https://bitbucket.org/<user>/<repo>/get/<filename>.tar.gz
答案 5 :(得分:1)
您使用的工具是否支持网址中的基本身份验证凭据? Curl request with digest auth in PHP for download Bitbucket private repository强烈暗示:
curl --user user:pass https://bitbucket.org/user/repo/get/commit.zip >commit.zip
作品。
答案 6 :(得分:0)
我发现这在Bitbucket的较新版本中有效
repository_list=" a b c"
for repository in ${repository_list}
do
echo "Getting: ${repository}"
curl --user userid:password \
http://bitjira.xxx.com:7990/rest/api/latest/projects/WP/repos/${repository}/archive?format=zip \
-o ${repository}.zip
done