2

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

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 `)'

我可以以某种方式转义这个特殊字符,或者使用其他方式来克隆回购吗?

4

2 回答 2

9

如另一条评论所述,您还可以使用 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}"
于 2016-04-15T15:28:22.630 回答
3

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

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

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

machine stash1.mycompany.com
login myusername 
password mypassword

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

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

如果你想在你的食谱中存储密码(用')'),你需要找到一种方法来逃避它,或者用“'”包围它。(这是完全未经测试的,而且我没有密码保护的 git 存储库可以玩)。

于 2016-01-08T13:02:19.983 回答