2011-11-22 18 views
16

El proyecto Plone consta de 192 repositorios diferentes: https://github.com/plone/Usando git para un proyecto con muchos, muchos repos

Durante el desarrollo, a veces 2 o 4 o 10 repos diferentes tendrán que ser tocado para corregir un error o implementar una característica. Sería muy bueno si todos estos pueden ser ramificados juntos y se fusionaron (por ejemplo, una solicitud de extracción cierre issueX contiene compromete a repo1, repo2 y repo3).

Las versiones requieren que todo el conjunto de repos se bifurque y etiquete.

Pre-git, un lanzamiento fue definido por un archivo que enumera los números de revisión svn de todos los módulos que componen el lanzamiento. ¿Git nos da una forma más simplificada de trabajar?

A primera vista, parece que "colosales," podría ser aplicable:

puede definir más específicamente las relaciones entre los proyectos con las etiquetas y ramas en los proyectos colosales,

http://progit.org/book/ch6-6.html#superprojects " Git/Submódulos y Superproyectos "parece confirmar esto, pero sigue siendo impreciso (no trata las etiquetas o ramas). http://en.wikibooks.org/wiki/Git/Submodules_and_Superprojects

Otra herramienta que suena relevante es de mr Joey Hess:

La mr (1) de comandos puede comprobación, actualización o realizar otras acciones en un conjunto de repositorios como si fueran un solo repositorio combinado.

http://kitenet.net/~joey/code/mr/ (me habría preocupado de que esto se traduciría en 192 ramas diferentes que pasan a tener el mismo nombre, en lugar de 1 rama que une todos los repositorios.)

Esta pregunta parece relevante: Is anyone really using git super/subprojects? uno estados respuesta:

nuestro proyecto (bitweaver, un sistema de gestión de contenidos) es un sistema altamente modular , con cerca de 160 repositorios - http:. // github.com/bitweaver/"

Eso suena como nuestro caso. Cita "limitaciones severas" con submódulos y recomienda mercurial. Parece que mr podría ayudar a lidiar con eso ("ejecutar comandos git en todos los directorios en el superrepo").

+1

Incluso si este es un debate muy interesante y ya está en las listas de correo plone últimamente (busque "git" en http://plone.org/support/forums), desafortunadamente su pregunta no es una pregunta real. Así que por favor participe en la discusión apropiada de ml. –

+0

Estoy participando en la discusión allí.¿Por qué crees que esta pregunta no es real? ¿Crees que no hay una forma general de usar git para muchos proyectos de reportes? –

+0

No me malinterpreten, mi punto no es el asunto de la pregunta. Mi punto es que "solo debe hacer preguntas prácticas y que respondan según los problemas reales que enfrenta. Las preguntas abiertas y habladas disminuyen la utilidad de nuestro sitio y eliminan otras preguntas de la página principal" (http://stackoverflow.com/faq # dontask). –

Respuesta

0

Usaría los submódulos de git en un repositorio "all". Además, considere "git slave" si encuentra trabajo que abarca muchos repositorios. Eso puede ahorrar mucho esfuerzo.

+2

Wichert Akkerman respondió en la lista de correo: "(a) [los submódulos] son ​​difíciles de usar y están muy poco documentados. No me considero un completo imbécil y, sin embargo, nunca he podido actualizar un submódulo existente para apuntar a un nuevo compromiso después de estudiar toda la documentación existente. Esto será un factor decisivo para muchos de nuestros commiters. (b) por submódulos de diseño apuntan a una única confirmación en lugar de una rama, lo que significa que no son muy útil para obtener código continuamente actualizado. Esto podría arreglarse en una futura versión de git, pero eso no nos ayuda ahora ". –

+0

No son tan malos. Los uso a diario sin problemas. Siéntete libre de hacerme un seguimiento cada vez que necesites ayuda. El control de versiones de lo que usa como biblioteca no siempre es trivial, sin importar las herramientas que use. –

+0

@JeanJordaan No hay forma de actualizar el archivo a una versión más nueva sin editarlo también. Para actualizar el submódulo a una versión más nueva simplemente "cd" a su directorio y luego simplemente 'git checkout ...' También es una buena idea que el submódulo apunte a commit en lugar de branch, ya que las ramas pueden cambiar: "Hoy revisé este proyecto y simplemente se colgó, pero no he cambiado nada desde 3 meses. Probablemente este submódulo se refería a la rama, pero no sé qué revisión probamos por última vez antes de detener el desarrollo ". – MBO

1

¿Por qué no echar un vistazo a the repo tool que es utilizado por android?

+0

Eso se ve interesante. Android usa 'repo', bitweaver usa' supergit', y 'mr' también suena similar. –

Cuestiones relacionadas