我正在撰写一个脚本,以便轻松部署应用程序。应用程序的代码存储在私人BitBucket代码库中。
我希望能够下载提交的zip文件。我尝试使用以下代码进行身份验证:
https://user:pass@bitbucket.org/user/repo/get/commit.zip
然而,它没有完成任务,而是重定向到BitBucket的登录页面。
就我个人而言,我不想在我的脚本中输入密码来完成这个任务。因此,诀窍是在将公钥添加到你的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/config
Host bitbucket.org
StrictHostKeyChecking no
IdentityFile /home/me/.ssh/my_private_key
为了从命令行下载一个 私有的 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
的原因。
对于公共 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
版本的存储库。只需在上面的代码中用.gz
或.bz2
替换.zip
即可下载您选择的压缩格式的存储库。curl --digest --user <用户名>:<密码> https://bitbucket.org/<用户名>/<项目>/downloads/<文件名> -o <文件名>
来从下载区下载,但是它没有起作用。有任何想法是为什么? - Faheem Mithacurl -L --digest --user <username>:<password> https://bitbucket.org/<usename>/<project>/downloads/<filename> -o <filename>
。 - user1027169--digest
是否必要? - amos想要从Bitbucket私有仓库下载单个文件的人,我尝试了上面的方法,但都没有成功。最终,我使用下面的命令使其工作:
wget --user=<user> --password=<password> https://bitbucket.org/<user>/<repo>/raw/master/<filename>
--ask-password
而不是 --password=<password>
,这样就不会将我的密码以明文形式显示或存储在任何地方。 - JonnyGrowlTigers的回答很好,更新一下:使用wget现在也似乎可以工作:
wget --user=<username> --password='<password>' https://bitbucket.org/<user>/<repo>/get/<filename>.tar.gz
您正在使用的工具是否支持在URL中使用基本身份验证凭据?在PHP中使用摘要身份验证进行Curl请求以下载Bitbucket私有存储库 强烈暗示:
curl --user user:pass https://bitbucket.org/user/repo/get/commit.zip >commit.zip
工作。
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