使用bitbucket的git archive命令

时间:2012-08-22 10:23:18

标签: git bitbucket

我使用windows,git bash提示

我正在尝试使用git archive命令和bitbucket

我收到错误遥控器:“git upload-archive:archiver死于错误”

有什么想法吗?

git archive --remote = ssh://git@bitbucket.org/username/reponame.git --format = tar --output =“file.tar”

我已经创建了所有SSH密钥和公钥等,甚至测试过ssh -v hg@bitbucket.org并且工作正常

1 个答案:

答案 0 :(得分:10)

当您使用--remote

时,如果没有预先确定树,则无法获得存档
git archive --remote=ssh://git@bitbucket.org/username/reponame.git --format=tar --output="file.tar" master

会工作,提到分支的名称。
这也适用于标签的名称。

但是,根据this thread,提交ID将工作:

  

是否有git-archive需要命名引用而不仅仅是提交(或树)ID的原因?

     

是;通常git存储库不允许客户端访问任意sha1。相反,它们要求参考文件可以访问所请求的对象。

     

git-archive没有正确执行此操作,并且最近更改为仅允许按名称引用refs,以及引用的子树(例如HEAD:subdir/)。   这意味着我们不允许任意提交或树sha1,即使它可以从广告的refs中获得。

     
    

是否很难修补git-upload-archive来使用ID?     我可以使用ref的标签,但在我的情况下会导致几乎每个提交都是一个看起来很浪费的标签。

  
     

正确执行有点贵,因为在一般情况下(有人请求树sha1),我们需要遍历每个提交的每个树以查看它是否可以访问。

     

我们可以实施更有限的一套规则,允许&#34; <commit>:<subdir>&#34;并检查<commit>是否可以到达   那将不允许任意树sha1,但我怀疑它会覆盖共同的   用例(即,您希望获取特定修订版本的树,甚至是子树)。