2016-01-04 74 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存儲庫可供玩耍)。