【问题标题】:git archive command with bitbucket带有 bitbucket 的 git 归档命令
【发布时间】:2012-08-17 18:07:45
【问题描述】:

我使用 windows,git bash 提示符

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

我收到远程错误:“git upload-archive: archiver dead with error”

有什么想法吗?

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

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

【问题讨论】:

  • 您是否尝试过使用特定的树状结构,例如标签或分支名称? git archive --remote=ssh://git@bitbucket.org/username/reponame.git --format=tar --output="file.tar" master?
  • 是的,现在可以了。如果我知道提交 ID,我还可以知道如何检索特定修订吗?也可以仅检索在特定提交中更改或添加的那些文件。我做了一个 git archive --remote=ssh://git@bitbucket.org/username/reponame.git --format=tar --output="file.tar" 1f74388a6faa 我收到一个错误“没有这样的参考”
  • SHA1 不起作用,请参阅下面的答案。并且 git-archive 检索一棵树,而不是一个增量。要仅获取已更改的文件,您必须获取 2 棵树并比较它们。但是要得到两棵树,只能指定分支名称或标签,不能指定 SHA1。

标签: git bitbucket


【解决方案1】:

如果您使用 --remote 时,您无法在不精确树的情况下仅获得存档 - 是您想要获得的

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

可以,提及一个分支的名称。
这也适用于标签的名称。

但是,根据this thread,提交 ID 不会起作用:

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

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

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

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

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

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

【讨论】:

    猜你喜欢
    • 2016-09-17
    • 1970-01-01
    • 2013-01-24
    • 2022-11-15
    • 1970-01-01
    • 2018-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多