2009-10-08 18 views
46

Tengo varias aplicaciones en subdominios en varios servidores Cada aplicación tiene su propio repositorio git. Cada aplicación usa varios archivos compartidos. Esencialmente, mis repos se superponen. ¿Cómo se maneja mejor esta situación con múltiples editores de múltiples proyectos?¿Cómo compartir archivos en repositorios git?

Respuesta

14

Intentaría hacer todas las partes superpuestas git submodules.

+2

Después de algunas investigaciones, parece que no puedo editar el recurso compartido como un submódulo. Idealmente, nos gustaría poder editar los proyectos compartidos de otros proyectos en los que están incluidos, pero mantener una ubicación central. ¿Esto todavía es posible con los submódulos? – tbeseda

+2

Las personas que trabajen en cualquiera de los proyectos en los que están incluidas podrán realizar cambios en los submódulos, pero los cambios deben rastrearse por separado. No hay forma de impulsar cambios a un repositorio de git y hacer que se dé cuenta de que algunos de los cambios también deberían enviarse a otro repositorio. – mckeed

+1

Aquí hay un par de documentos más que utilizan un enfoque paso a paso: http://git-scm.com/book/en/Git-Tools-Submodules y https://git.wiki.kernel.org/index .php/GitSubmoduleTutorial – Sean

6

Parece que debe dividir los elementos comunes para que haya una distinción clara, luego use submódulos. Asegúrate de separar claramente las piezas comunes, de lo contrario es probable que termines con un desastre inmanejable.

7

Mientras los proyectos múltiples presionen sus cambios en el submódulo hasta la ubicación compartida, todos pueden hacer cambios en el recurso compartido. Dicho esto, si uno de ellos necesita que los suyos sean 'especiales', tendrán que ramificar el submódulo.

https://git-scm.com/book/en/v2/Git-Tools-Submodules

Esto le guía a través de un proyecto súper de cartuchos, la edición del submódulo dentro del proyecto de super y empujándolo hacia arriba. También muestra el único peligro que sobrescribe silenciosamente los cambios si ejecuta git submodule update y usted tuvo cambios locales sin usar en la rama principal.

Específicamente, en algún lugar que tenga una carpeta compartida 'carpeta' - tendrá que eliminar esto de todos los proyectos de git, pero cree un nuevo repositorio git en algún lugar con los contenidos actuales como la confirmación inicial. Luego, tendrá git submodule <repo> folder; git submodule update en todos los proyectos que ahora lo compartirán. Todos podrán impulsar los cambios hasta el repositorio compartido, y podrán desplegar los cambios de los demás.

1

También podría usar la herramienta git-subrepo. La página wiki está vinculada. Básicamente es una versión mejorada de submodule y subtree.

Cuestiones relacionadas