¿Cómo estructurar repositorios git para proyecto?

9

Estoy trabajando en un módulo de sincronización de contenido para Drupal. Hay un módulo de servidor, que se encuentra en un sitio web y expone el contenido a través de un servicio web. También hay un módulo de cliente, que se encuentra en un sitio diferente y recupera e importa el contenido a intervalos regulares.

El servidor se crea en Drupal 6. El cliente se crea en Drupal 7. Será necesario contar con una versión de Druapl 7 del servidor. Y luego será necesaria una versión Drupal 8 tanto del cliente como del servidor una vez que se lance el próximo año.

Soy bastante nuevo en git y control de fuente, así que me preguntaba cuál es la mejor manera de configurar los repositorios de git. ¿Sería el caso de tener un repositorio separado para cada instancia, es decir:

Drupal 6 server = 1 repository
Drupal 6 client = 1 repository
Drupal 7 server = 1 repository
Drupal 7 client = 1 repository
etc 

¿O tendría más sentido tener un repositorio para el servidor y otro para el cliente y luego crear ramas para cada versión de Drupal?

Actualmente tengo 2 repositorios, uno para el cliente y otro para el servidor.

littledynamo
fuente

Respuestas:

7

A menos que el proyecto sea realmente enorme, elegiría un repositorio único con subdirectorios para el servidor y el cliente y crearía una rama para cada versión. Todavía puede tener varias copias del repositorio en caso de que desee acceder a varias versiones al mismo tiempo.

Al mantener múltiples repositorios, haría que la transferencia de cambios sea más difícil de lo necesario (el cambio de base es más fácil que aplicar parches). En el caso (improbable) no habrá cambios que se apliquen a múltiples versiones, todavía no pierde nada ...

Además, siempre puede cambiar a múltiples repositorios: simplemente clone el repositorio y elimine las ramas que no desea. Ir al revés es más difícil.

Iría por múltiples repositorios solo si el servidor y el cliente no comparten nada o si el código es realmente enorme.

maaartinus
fuente
Esta es la forma en que voy a ir porque Drupal almacena diferentes versiones como ramas. ¡Yo también haría +1 pero necesito 15 repeticiones!
littledynamo
4

He visto y trabajado con tales variaciones. Todo en una carpeta con subcarpetas para servidor y cliente o un repositorio cada uno. Prefiero el repositorio individual para cada parte principal del proyecto.

En caso de grandes cambios de versión, simplemente crearía nuevos repositorios también. Definitivamente no tienen diferentes ramas para ellos. Si bien las ramas son potentes para la implementación de nuevas funciones y tal vez una rama de implementación permanente, siempre evito que muchas de ellas se ejecuten en paralelo durante mucho tiempo. Siempre tendrá que mantenerlos (hacer rebases cuando la rama maestra cambió, etc.), por lo que debe mantener la estructuración básica lo más simple posible. Tener un repositorio adicional es (en mi humilde opinión) menos doloroso que hacer malabares con las ramas en diferentes estados. Especialmente si el cliente y el servidor no comparten mucho código.

No sé mucho sobre Drupal y cuán fuertes son las diferencias entre las versiones. Entonces, mi punto de preferir repositorios diferentes se basa más en mi experiencia con Rails. Entre versiones, a veces hay grandes diferencias en cosas como la forma en que se nombran los archivos o la estructura de la carpeta (por ejemplo, la canalización de activos) lo que hace que sea más cómodo crear un nuevo repositorio. Drupal (o cualquier otro marco) puede tener menos diferencias, entonces estaría bien continuar dentro del repositorio existente.

Thorsten Müller
fuente
1
Gracias. Es interesante porque acabo de descubrir que los módulos Drupal Core almacenan versiones separadas como ramas. Creo que tiene sentido para mí imitar esa estructura. ¡Haría +1 pero necesito 15 repeticiones!
littledynamo