使用bitbucket的git archive命令

Sha*_*thi 3 git bitbucket

我'使用windows,git bash提示符

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

我收到错误遥控器:"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,它运行正常

Von*_*onC 10

在不使用树的情况下,您无法获得存档 - 当您使用时,您想要获得 --remote

git archive --remote=ssh://git@bitbucket.org/username/reponame.git --format=tar --output="file.tar" master
Run Code Online (Sandbox Code Playgroud)

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

然而,根据这个线索,提交ID将无法正常工作:

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

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

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

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

做得对有点贵,因为在一般情况下(有人请求树sha1),我们需要遍历每个提交的每个树以查看它是否可达.

我们可能会实现一组更受限制的规则,允许" <commit>:<subdir>"和检查<commit>是否可达.
这将禁止任意树sha1,但我怀疑它将涵盖常见用例(即,您想要获取特定修订版本的树,甚至是子树).