2011-05-29 12 views
5

Mi proyecto utiliza una serie de bibliotecas de terceros. Uso el procedimiento de fusión de subárboles que se describe en http://progit.org/book/ch6-7.html. me gustaría permitir que otros desarrolladores para mantener las bibliotecas y periódicamente se fusionan actualizaciones de los repositorios de la biblioteca haciendo:Uso del subárbol de Git para fusionar desde varios sitios

$ git checkout rack_branch 
$ git pull 

¿Hay una manera de publicar rack_remote y rack_branch, por lo que será parte del repositorio central , para permitir que otros desarrolladores también los usen?

Respuesta

2

Probablemente deba documentar el prefijo, URL y bifurcación para cada subárbol "ascendente" en algún fragmento de la documentación de su proyecto.

Los siguientes ejemplos muestran que esta información a menudo se registrará en los mensajes de confirmación de combinación de subárbol, pero esto depende de la forma exacta en que se realizan las fusiones y/o extracciones.


Considerar la fusión inicial subárbol crear con estos comandos:

git merge --no-commit sub/master 
git read-tree -u --prefix=sub sub/master 
git commit 

El mensaje de registro será el siguiente:

Merge remote-tracking branch 'sub/master' 

podemos ver que el control remoto fue nombrado sub y la La rama se llamó master, pero no vemos la URL. Puede agregar la URL al mensaje mientras realiza la confirmación manual en el último paso.

Más tarde, puede utilizar git pull para incorporar nuevos cambios “aguas arriba”:

git pull -Xsubtree=sub sub master 

El valor predeterminado mensaje de confirmación incluirá la URL del repositorio y el nombre de la sucursal:

Merge branch 'master' of server:path/to/repository 

Por otra parte , las variaciones en la combinación inicial y las fusiones subsiguientes que se refieren directamente a los objetos de confirmación en lugar de usar un nombre de rama (por ejemplo, 15dbbda en lugar de sub/master) evitarán que se grabe el nombre de la rama; lo mismo ocurre con la grabación de la URL si alguien decide sacar de . remotes/sub/master en lugar de sub master.

0

¿Ha considerado utilizar submodules en su lugar? Parece que se ajustaría a su flujo de trabajo.

+0

Voy a modificar las bibliotecas que estoy importando, y no necesariamente quiero publicar esas modificaciones. ¿Los submódulos permiten tener modificaciones locales en los repositorios externos? ¿O son solo enlaces a los repositorios externos? – wanderingbear

Cuestiones relacionadas