2012-03-03 14 views
6

Me pregunto si es posible decir que tengo un repositorio principal con todo lo que necesito, configuración, código de aplicación, etc. (Este es un entorno MVC) y crear ramas de un repositorio principal de GIT con solo ciertos modelos, controladores y puntos de vista.Archivos específicos de GIT Branch?

por lo que tendría un acuerdo de recompra principal con

applications/* 
assets/* 
system/* 

y habría una rama con

applications/controllers/controller_name.php 
applications/model/model_name.php 
applications/views/view_name.php 
assets/modules/controller_name/* 

Entonces podría fusionar esa rama en el repositorio principal para cada nueva "configuración MVC"

¿Tiene esto sentido? Y se puede hacer?

Respuesta

8

Git no se ramifica por archivo, se bifurca en forma de repositorio.

Dicho esto, el hecho de que haga una sucursal con todo el repositorio no significa que tenga que tener todos los mismos archivos en cada sucursal.

+0

Tengo varios módulos Magento en sus propios repositorios. Todas las rutas de archivos son similares (por ejemplo, '/ app/code/community/MyNamespace/[module name] /' y '/ app/etc/modules/[module config] .xml'). Con Git, puedo fusionarlos fácilmente en cualquier proyecto de Magento. Siempre que los nombres de los archivos no entren en conflicto, no debería ser un problema. –

3

Git rastrea instantáneas de su base de código (vea también the Git parable). Entonces, sea lo que sea lo que quiera que sea diferente de la rama principal, puede rastrear en una rama separada. Si eso significa que tendrá nuevos archivos en la otra rama, puede hacerlo. Si eso significa que tendrá los mismos archivos, modificados, puede hacerlo.

No estoy seguro de lo que quiere decir "para cada nueva configuración de MVC", pero parece que está pensando en algo complicado. Me parece que le gustaría tener una "base común" y luego tener "configuraciones específicas" basadas en esa base común. Puede hacer esto teniendo una rama principal con la base, y rastreando cambios/adiciones/ajustes específicos de la configuración en las ramas de configuración individuales.

Este último enfoque se utiliza a menudo para "variantes de producto" en la práctica. Por lo general, desarrollaría una funcionalidad común en la rama maestra y la fusionaría en cada rama individual donde la desea, o podría volver a establecer la base de las ramas individuales "sobre la maestra".

Incluso puede obtener complicados y cherry-pick compromisos individuales de una rama específica de la configuración a otra, pero estoy divagando.

+0

Git rastrea las instantáneas, no los cambios. – Nayuki

+0

Gracias, corregido. – Irfy