【问题标题】:How to clone a private git repo from within a BitBake recipe?如何从 BitBake 配方中克隆私人 git 存储库?
【发布时间】:2016-04-08 09:32:35
【问题描述】:

我有兴趣克隆私人 git 存储库的内容,以便自定义 BitBake 配方使用它们。我尝试从 Yocto Project 邮件列表中调整 this technique,并生成以下内容:

SRC_URI = "git://www.example.com/path/to/repo;protocol=https;branch=master;name=commit;user=<username>:<password>
SRCREV_commit = "9f8309bbdf0632191bec21fada2cb61a30bcf53e"

我使用的密码包含一个左括号。我收到此错误:

/bin/sh: -c: line 0: syntax error near unexpected token `)'

我能否以某种方式转义这个特殊字符,或者使用其他方式来克隆 repo?

【问题讨论】:

    标签: git git-clone yocto bitbake openembedded


    【解决方案1】:

    正如另一条评论所说,你也可以使用git+ssh:

    SRC_URI = "git://git@some.private.url/path/to/repo;protocol=ssh"
    

    然后你需要将运行bitbake的用户的公钥添加到git服务器。调试 fetch 为何不起作用的一个好方法是实际使用 ssh -v 进行连接:

    ssh -v git@some.private.url
    

    请注意 git 服务器实现(如 GitLab)之间奇怪的路径差异,例如,我们需要使用类似这样的东西(注意波浪号)来使这些 URI 在 Bitbake 和 Google Repo 中都能正常工作:

    SRC_URI = "git://git@some.private.url:~/groupname/repo.git;protocol=ssh;branch=${BRANCH}"
    

    【讨论】:

    • 对于 github 私人仓库,我发现:SRC_URI = "git://git@github.com:/username/repo.git;protocol=ssh;branch=${BRANCH}" 工作得很好。感谢您的提示!
    【解决方案2】:

    嗯,也许不是你要找的答案...

    通常,我使用 ssh-authentications,因此我只使用 SRC_URI 中的用户名;然后 ssh-agent 负责验证部分。这也可以很容易地在自动构建器上进行设置。

    另一种方法是将凭据添加到.netrc。在这种情况下,将文件.netrc 添加到您的主目录,其内容如下:

    machine stash1.mycompany.com
    login myusername 
    password mypassword
    

    这应该允许您在SRC_URI 中省略用户名和密码。

    根据您的情况,不将凭据存储在配方本身中可能被认为是一种好处。或者它可能不会......

    如果您想将密码(带有“)”)存储在您的配方中,您需要找到一种方法来将其转义,或者用“'”包围它。 (这是完全未经测试的,我没有密码保护的 git 存储库可以玩)。

    【讨论】:

      猜你喜欢
      • 2020-09-23
      • 2021-02-04
      • 1970-01-01
      • 2013-01-16
      • 2011-05-18
      • 2012-07-15
      • 2018-03-07
      • 2022-01-23
      • 2013-11-04
      相关资源
      最近更新 更多