¿Cómo clonar un repository privado de git desde una receta de BitBake?

Estoy interesado en clonar los contenidos de un repository privado de git para que puedan ser utilizados por una receta personalizada de BitBake. Intenté adaptar esta técnica de las lists de correo del Proyecto Yocto y produje lo siguiente:

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

La contraseña que estoy usando contiene un paréntesis izquierdo. Me sale este error:

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

¿Puedo escaping de este personaje especial de alguna manera o quizás usar otra forma de clonar el repository?

Como se indica en otro comentario, también puedes usar git + ssh:

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

Luego debe agregar la key pública del usuario que ejecuta bitbake al server git. Una buena manera de depurar por qué una recuperación no funciona es usar realmente ssh -v para conectarse:

ssh -v git@some.private.url

Tenga cuidado con las extrañas diferencias de ruta entre las implementaciones del server git (como GitLab), por ejemplo, necesitamos usar algo como esto (observe la tilde) para hacer que estos URI funcionen tanto desde Bitbake como desde Google Repo:

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

Bueno, tal vez no sea la respuesta que estás buscando …

Por lo general, estoy usando ssh-authentications, y por eso solo uso el nombre de usuario en SRC_URI ; entonces ssh-agent se ocupa de la parte de authentication. Esto también se puede configurar fácilmente en un autoconstructor.

Otro enfoque sería agregar las cnetworkingenciales a .netrc . En este caso, agregue un file .netrc a su directory de inicio, con los contenidos de la siguiente manera:

 machine stash1.mycompany.com login myusername password mypassword 

Esto debería permitirle omitir el nombre de usuario y la contraseña de SRC_URI .

Dependiendo de su situación, se podría considerar un beneficio no almacenar las cnetworkingenciales en la receta en sí. O podría no …

Si desea almacenar la contraseña (con el ')') en su receta, necesitará encontrar una forma de escaping de ella, o tal vez rodearla con "'". (Esto no se ha probado completamente, y no tengo un repository git protegido con contraseña para jugar con).