Flujo de trabajo de Git para un pequeño equipo de desarrolladores y diseñadores

Me estoy perdiendo con el model de ramificación de Git y el flujo de trabajo que quiero crear para mi equipo (desarrolladores + diseñadores).

Supongamos que el proyecto se basa en un patrón MVC, por lo que tenemos una estructura similar a:

Modelos /
Controladores /
Puntos de vista/

Los desarrolladores trabajan en las partes de M & C con algunas vistas básicas / generadas (aplicaciones Rails, Django o CakePHP, por ejemplo) y los diseñadores trabajan en la parte V

¿Cómo puedo gestionar que los desarrolladores trabajen en M & C y mantener algunas vistas básicas de mierda, y al mismo time, los diseñadores crean vistas sexys basadas en acciones de controlleres codificadas y agregadas progresivamente por los desarrolladores?

Traté de hacerlo funcionar con 3 twigs:

maestro (listo para la producción)
dev
ui

pero no tengo idea de cómo un diseñador que trabaja en la sucursal de ui puede mantener el código en otro lugar que / las vistas actualizadas y una aplicación en funcionamiento …

Gracias amigos por ayuda!

Con git, no hay ninguna razón para que los desarrolladores trabajen en una sucursal separada o se burlen de las vistas. Haga que los diseñadores y desarrolladores trabajen en la misma twig, en la misma base de código. Cuando se realiza una vista (o al less se mejora y no falla), haga que el diseñador se comprometa y los envíe a un repository principal. Lo mismo es cierto para los desarrolladores: cuando un cambio local está "hecho", pídales que lo hagan y lo presionen.

Antes de empujar, cada lado necesita tirar (para asegurarse de que no haya conflictos). Si los dos grupos están trabajando en piezas de código mutuamente exclusivas (files separados o partes separadas de los mismos files), la extracción simplemente actualizará la copy local y todo funcionará bien.

Con esto, ambos lados siempre ven la base de código más actualizada y contribuyen directamente al objective final exacto, viéndolo evolucionar.

Git es tan simple de usar que no hay razón para que nadie tenga su propia twig para trabajar. Demonios, esa es una de las razones principales para usar un sistema de control de versiones. En Git, los compromisos son baratos.

Normalmente, tenemos un maestro, y cualquiera que esté trabajando en actualizaciones o funciones se ramificará desde el maestro y bifurcará una sucursal si es necesario, luego un maestro de lanzamiento (alguien como yo) se encargará de fusionarlos todos nuevamente, buscando conflictos, probar el lanzamiento y fusionar de nuevo a maestro.

A medida que trabajas en él, otros pueden recibir tus cambios haciendo una búsqueda / extracción contra tu sucursal para get los cambios.

Git no es magia. No permite que sus diseñadores usen el código que los desarrolladores escriben activamente . Los desarrolladores todavía tienen que escribir, probar y confirmar su código, y presionarlo en algún lugar donde los desarrolladores puedan sacarlo.

Por lo general, tendrá un repository "simple" al que todas las partes impulsarán su trabajo cuando esté listo para ser compartido. Todos los demás retiran ese trabajo. Podría ser el trabajo de los diseñadores extraer el trabajo del desarrollador y fusionar la twig de desarrollo en la twig de la ui, por ejemplo:

git checkout ui git fetch git merge dev 

Si realmente quieres aplicar cosas como derechos de ramificación y ruta, te sugiero que hagas una compra gitolite

Esto le permitirá administrar el acceso en todo tipo de niveles.