tag repositorio origin example eliminar crear actualizar git module code-organization project-organization

repositorio - git push origin master



¿Git submódulo o sub-repositorio o remoto? (2)

El diseño que has descrito funcionará muy bien con los submódulos de git. Recomiendo leer los docs y probar algunos tutorials . La diferencia clave que introduce su plan es que cada repositorio de clientes y repositorio de complementos de clientes tendrá dos controles remotos en lugar de uno. Y, cuando desee iniciar un nuevo proyecto de cliente, necesitará

  1. bifurque la línea principal cms
  2. Bifurca todos los complementos que serán modificados.
  3. clone los cms bifurcados de (1), actualice sus submódulos para señalar los nuevos controles remotos de (2)
  4. Inicializar / actualizar los submódulos.
  5. (opcional) agregue la URL de la línea principal de cms como un control remoto en los cms bifurcados de su cliente
  6. (opcional) agregue las URL del complemento de la línea principal como controles remotos en los complementos bifurcados de su cliente

Una mejor opción puede ser usar el mismo repositorio y simplemente hacer una rama por cliente. Así es como lo haría.

Estoy usando GIT para administrar un proyecto de Sistema de gestión de contenido (CMS). El CMS puede tener múltiples plugin (módulo).

Básicamente, quiero tener 3 tipos de repositorios:

  • El desarrollo central de CMS (cada nuevo proyecto es una comprobación de la última versión estable y no configurada)
  • 1 repositorio por módulo / plugin. (Cada nuevo proyecto comprobará la última versión estable del módulo que quieren implementar)
  • 1 repositorio por proyecto (cada cliente será un repositorio que representa la personalización del CMS central y los módulos)

Para el tipo 1 y 2, supongo que es simple repositorio básico. Pero cuando se trata del proyecto del cliente, me confundo:

  • ¿Primero clonaré el CMS, luego iré a la carpeta / modules / y volveré a clonar todos los módulos requeridos? ¡Eso hará un repositorio dentro de un repositorio! ¿El primer repositorio intentará registrar la carpeta .git / de cada módulo?
  • No puedo usar el submódulo ya que cada cliente necesita que sus módulos sean personalizados.
  • Si modifico un componente central de un módulo (no una personalización, solo una corrección de errores), ¿puedo enviar ese único archivo al repositorio de módulos original?
  • (No se habla del módulo unitTest que se extenderá por todas partes)

Entonces, la pregunta es: ¿Cómo debo organizar el / los repositorio (es) / archivos / carpetas para ser eficientes?


Breve actualización / información adicional sobre la respuesta anterior: si no te gusta el enfoque de los git submodules o piensas que es demasiado difícil de entender, puedes intentarlo

  • git subtrees (ver este artículo en medio )
  • o git subrepo (alternativa más fácil a los submódulos, en Github )
  • o incluso profundice en los submódulos con " Mastering Git submodule " en medium.com

No olvide verificar si puede usar otro administrador de dependencias (como RubyGems for Ruby, Composer for PHP ...) en lugar de submódulos, sería más fácil de usar y mantener.