2010-01-14 29 views
5

Aquí está la escena: Actualmente estoy trabajando en mi propio marco y en el sitio web de un cliente. Aquí está la estructura:Usando dos repositorios git en una carpeta

. 
.. 
_application 
_framework 
_public 

Me gustaría tener un acuerdo de recompra con _framework/* _PUBLIC (carpetas vacías para _controllers _models y _views) index.php y la estructura _Application/en GitHub. También me gustaría tener un repositorio que contenga TODO esto localmente.

Entendí que con git-modules podría hacerlo, pero después de buscar algunos tutoriales todavía no entiendo la forma de hacerlo.

¿Podría alguien explicarme un poco más a mí? ¡Muchas gracias!

+0

Esto es lo que hice: Hice un directorio con las cosas de mi framework en él. Hice un repo de git en él. Y luego creé otro directorio para el proyecto de mi cliente. Creé un repositorio y cloné el repositorio de framework de github. Y desde que hice esto puedo enviar cosas a través de mi framework sin que se sobrescriban.¡Y cuando envío cambios directamente a mi framework, los envío y los presiono y puedo extraerlos del directorio de mi proyecto! Creo que es una buena idea :) – TomShreds

+0

Su título no está nada claro. Me llevó a creer que querías usar dos repositorios git en la misma carpeta, pero usaste dos repositorios git en dos subcarpetas separadas. De hecho, quiero saber si se pueden usar dos repositorios git separados para rastrear diferentes archivos en la misma carpeta. – Chad

+1

@Chad, sí pueden: hice un script que hace precisamente eso: https://github.com/capr/multigit – cap

Respuesta

7

Me parece que puede definir un repositorio por estructura que desee y combinarlos en un superproyecto a través de los submódulos.

Consulte this question para obtener más información sobre la naturaleza de los submódulos.

Extracto:

Un submódulo le permite tener un desarrollo component-based approach, donde el principal proyecto sólo se refiere a commit específicas de otros componentes (en este caso "otros repositorios Git declarados como sub-módulos").

Un submódulo es un marcador (commit) a otro repositorio de Git que no está vinculado por el ciclo principal de desarrollo del proyecto: este (el "otro" repositorio de Git) puede evolucionar independientemente. Depende del proyecto principal elegir de ese otro repositorio cualquier compromiso que necesite.

Sin embargo, si desea, por conveniencia, modificar uno de esos submódulos directamente desde su proyecto principal, Git le permite hacerlo, siempre que publique esas modificaciones de submódulos en su repositorio original de Git, y luego confirme su proyecto principal que hace referencia a una nueva versión de dicho submódulo.

Pero la idea principal sigue siendo: hace referencia a componentes específicos que:

  • tienen su propio ciclo de vida
  • tener su propio conjunto de etiquetas
  • tienen su propio desarrollo

La lista de confirmaciones específicas a las que se refiere en su proyecto principal define su configuration (esto es lo que Configuration Manag ement se trata, incluyendo el mero Version Control System)


Así que si realmente tiene dos estructura que puede evolucionar de forma independiente uno de otro, submódulos son un buen ajuste.

Cuestiones relacionadas