2012-01-03 11 views
7

Nuestro proyecto utiliza varias bibliotecas de código abierto de terceros, algunas de las cuales requieren modificaciones personalizadas.Propagar una ubicación remota a través de clon/push/pull

Para cada biblioteca creamos nuestro propio repositorio Git local añadió la localización de la fuente original como proveedor remoto, clonado a partir de ahí, modificado según sea necesario y lo empujó a un repositorio remoto interno (vamos a llamarlo origen)

Estos repositorios se utilizan luego como submódulos en nuestro proyecto principal.

El problema: El "vendedor" remota URL no se propaga al "origen" y por lo tanto se pierde a cualquier persona que clona el repositorio interno de la biblioteca.

Cada vez que se desea combinar los nuevos cambios aguas arriba de una biblioteca, es necesario buscar y agregar manualmente el proveedor vez más distancia (o utilice exactamente el mismo repositorio local creada al principio, si todavía está disponible).

¿Hay una mejor manera de almacenar el proveedor url de repositorio para que pueda ser propagado y utilizado por cada desarrollador? Agregar un archivo extra (por ejemplo, clone_from_here) a la biblioteca tampoco parece muy elegante.

Respuesta

1

Puede hacerlo a través de .git/config. Después de haber tirado o empujado su cambio con éxito, mirar el archivo .git/config y hacer una nota de la distancia url y fetch

Después de que el archivo haya sido clonado por su desarrollador (s), abre .git/config en la máquina desarrolladores y agregue la línea que ha copiado. Ejemplo -

[remote "vendor"] 
    url = [email protected]:xxxxx/xxxxxxx.git 
    fetch = +refs/heads/*:refs/remotes/origin/* 

Sus desarrolladores ahora pueden empujar o tirar al vendedor en este ejemplo.

Si se necesita más control sobre la escritura de la extracción de URL - hay un excelente documentación sobre esto en gitguys - http://goo.gl/JGaKD

+0

Eso es ligeramente mejor que añadir el vendedor de forma manual ya que restaura la información de lo que para ir a buscar en qué rama. Pero todavía requiere la edición manual de su git repo después de la clonación. – rluba

+0

La única otra manera es crear un alias que esté en el perfil de todos, de modo que cuando ejecuten el comando, por ejemplo, 'gitpsh', se inserte específicamente en la rama con nombre –

+0

Como parece que no hay una solución elegante, aceptaré su responder. – rluba

Cuestiones relacionadas