3

我使用 windows,git bash 提示符

我正在尝试将 git archive 命令与 bitbucket 一起使用

我收到错误远程:“git upload-archive:归档器因错误而死”

有任何想法吗 ?

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

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

4

1 回答 1

10

在不精确树的情况下,你不能只得到一个档案——当你使用时,你想得到什么--remote

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

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

但是,根据这个线程,提交 ID不起作用

是否有理由git-archive需要一个命名的 ref 而不仅仅是一个提交(或树)ID?

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

git-archive没有正确执行这一点,并且最近被更改为只允许按名称引用,以及引用的子树(例如,HEAD:subdir/)。
这意味着我们确实不允许任意提交或树 sha1,即使它可以从广告参考中访问。

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

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

我们可能会实施一组更受限制的规则,允许“ <commit>:<subdir>”并检查<commit>是否可以访问。
这将不允许任意树 sha1,但我怀疑它会涵盖常见用例(即,您想要获取特定修订版的树,甚至子树)。

于 2012-08-22T12:56:13.853 回答