2016-01-04 58 views
0

我有兴趣克隆私人git回购的内容,以便他们可以使用自定义的BitBake配方。我试着从Yocto计划的邮件列表适应this technique,并制作了以下内容:如何从BitBake配方中克隆私人git仓库?

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

我可以以某种方式逃避这个特殊字符或可能使用一些其他的方式来克隆回购?

回答

2

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

SRC_URI = "git://[email protected]/path/to/repo;protocol=ssh"

然后,你需要补充的是bitbake的运行到GIT服务器的用户的公钥。调试为什么取不工作的一个好方法是实际使用ssh -v连接:

ssh -v [email protected]

谨防git的服务器实现(如GitLab)之间的怪异路径的差异,例如,我们需要使用这样的事情(注意代字号)使这些URI可以在Bitbake和Google回购中使用:

SRC_URI = "git://[email protected]:~/groupname/repo.git;protocol=ssh;branch=${BRANCH}"

2

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

通常情况下,我使用ssh-认证,因此我只是用在SRC_URI用户名的答案;那么ssh-agent会处理authenticaton部分。这可以很容易地在自动构建器上进行设置。

另一种方法是将证书添加到.netrc。在这种情况下,文件.netrc添加到你的主目录,与内容如下:

machine stash1.mycompany.com 
login myusername 
password mypassword 

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

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

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