如何从 BitBake 配方中克隆私有 git 存储库?

How to clone a private git repo from within a BitBake recipe?

我对克隆私有 git 存储库的内容感兴趣,以便自定义 BitBake 配方可以使用它们。我尝试从 Yocto 项目邮件列表中改编 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 `)'

我可以通过某种方式转义这个特殊字符,或者使用其他方式克隆存储库吗?

好吧,也许不是您要找的答案...

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

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

machine stash1.mycompany.com
login myusername 
password mypassword

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

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

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

如另一条评论所述,您还可以使用 git+ssh:

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

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

ssh -v git@some.private.url

注意 git 服务器实现(如 GitLab)之间奇怪的路径差异,例如,我们需要使用类似这样的东西(注意波浪号)来使这些 URI 从 Bitbake 和 Google回购:

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