2011-04-06 13 views
17

Tengo una plantilla/código de punto de partida que reutilizo en todos los proyectos. Mientras trabajo en el nuevo proyecto, siempre quiero agregar y cambiar cosas en la plantilla. Desarrollar la plantilla junto con el proyecto, supongo.¿Cómo puedo usar git para plantillas de proyectos?

Algunas de mis adiciones son específicas del proyecto y no deben comprometerse con la plantilla. Otros deberían.

Apuesto a que podría usar git para esto, pero no estoy seguro de cómo. Tengo un repositorio git para la plantilla y uno para cada proyecto. Me gustaría que algunos, pero no todos, se comprometan a hacer que los vuelva a enviar a la plantilla. ¿Puedo hacer un subconjunto de archivos que no se vuelven a comprometer? ¿Debo trabajar en cosas específicas del proyecto en una rama y la plantilla en el maestro?

Realmente aprecio cualquier idea. Mi google-fu rinde poco.

+0

¿Se ramifica y combina una rama de plantilla central según sea necesario? – Kzqai

+0

posible duplicado de [¿Cómo puedo hacer un seguimiento de varios proyectos en Git que comparten código común?] (Http://stackoverflow.com/questions/5486019/how-can-i-get-track-of-several-projects- in-git-that-share-common-code) –

Respuesta

12

Recomendaría crear una sucursal específicamente para cualquier cambio de plantilla que desee realizar. Pero asegúrese de iniciarlo a partir de uno de los compromisos anteriores, para que no obtenga cambios específicos del proyecto en su plantilla. Algo así como git checkout -b template_changes EARLY_COMMIT_SHA. Luego, cualquier cambio de plantilla que ya haya realizado, puede seleccionarlos en: git cherry-pick TEMPLATE_CHANGE_SHA.

Cualquier cambio futuro en la plantilla que desee realizar podría realizarse en la rama de la plantilla y fusionarse con otras ramas del proyecto; pero si está lo suficientemente lejos, es posible que desee cambiar al proyecto de la plantilla.

Para enviar los cambios de plantilla desde el proyecto al repositorio de plantillas git, puede hacer git format-patch SHA_FROM_WHERE_TEMPLATE_BEGAN. Esto creará un montón de archivos de parches que deberá copiar al repositorio de plantillas y ejecutar git apply 0001-... 0002-... para aplicar los parches, pero eso no es muy divertido.

Una cosa más de git-fu sería agregar el repositorio de plantilla en el repositorio de proyecto git remote add template /path/to/template/repo. Puede que tenga que jugar con las opciones -t o -m o el comando git remote set-head template template_branch:master (o algo así) si existe la rama de la plantilla. Entonces debería poder enviar sus cambios al repositorio de plantilla con git push template template_branch. Si el encabezado de template_branch no tiene propiedad, puede que tenga que git push template template_branch:master.

Espero que esto funcione para usted. ¡Y divertirse!

+0

Gracias. Creo que esto me señala la dirección correcta para investigar un poco más. – Joel

Cuestiones relacionadas