La estructura del repository SVN aconseja

Tengo cierta experiencia en el uso de la subversión, pero en primer lugar necesito algunos consejos para estructurar mi repository correctamente.

Tengo varios proyectos pequeños no relacionados, pero también tengo un par de proyectos globales de los que dependen muchos de estos proyectos más pequeños. Los proyectos globales contienen bibliotecas reutilizables, etc., que es común a los otros proyectos.

¿Solo tengo un repository, pero tengo un proyecto raíz (troncal) para cada proyecto (es decir, uno para cada proyecto, incluidos los globales)?

No quiero poner todos los proyectos en la misma raíz, ya que en su mayoría no están relacionados, excepto el proyecto global.

Por el momento, todas las soluciones de los proyectos pequeños incluyen específicamente proyectos globales, lo que significa que pueden actualizar el código fuente, pero esto significa que si algo se compromete en el mundo, todos los proyectos se verán afectados. ¿Es mejor separar esto más y solo include el dll global en el proyecto? De esa manera, ¿puedo asegurarme de que solo se use esa versión de global para ese proyecto?

¡Gracias por el consejo!

Hay dos opciones bastante prácticas:

 big_project trunk branches tags little_project_1 trunk branches tags little_project_2 trunk branches tags 

O

 trunk big_project little_project_1 little_project_2 branches branch_x big_project little_project_1 little_project_2 branch_y 

Etc.

Si los proyectos tienen poco que ver entre sí, además de compartir algunas bibliotecas de utilidad comunes o algo así, me gustaría ir con la opción 1, ya que los mantiene más separados. Si están estrechamente vinculados, la opción 2 tiene la ventaja de que puede verificarlos todos con un solo check-out.

No creo que importe mucho de ninguna manera. Tenga en count que la opción 2 no lo obliga a actualizar todos los proyectos juntos: puede comprometer solo un proyecto en el enlace troncal.

Si lo único que comparten es algunas bibliotecas de utilidades, consideraría dividir estas bibliotecas en su propio proyecto, para que no tenga que absorber todo el big_project solo para get tres funciones.

Recomiendo usar directivas externas en el proyecto pequeño para incorporar las bibliotecas del gran proyecto.

La directiva externa SVN tiene algunas características que funcionan mejor cuando el externo (proyecto grande) está en el mismo repository, por lo que no recomendaría el uso de repositorys separados. Use carpetas separadas de nivel superior para cada proyecto. Como la opción 1 de Jay.

Cuando utiliza el enlace de directivas externas a una revisión específica en el proyecto grande para que los cambios en los proyectos grandes no afecten a los proyectos pequeños. Cuando un proyecto pequeño está listo para aprovechar un cambio en el gran proyecto, puede cambiar su directiva externa para vincularla a la nueva revisión.