Acabo de presentar SVN en nuestra empresa para nuestros proyectos de Visual Studio y creé un repositorio que se parece a esto ("solución" es una solución Visual Studio que contiene proyectos 1..n):Estructura de directorios de trabajo para el repositorio SVN Visual Studio
/solution1/trunk/projectA/...
/projectB/...
/solution2/trunk/projectC/...
/customerX/solution3/trunk/projectD/...
/solution4/trunk/projectE/...
/projectF/...
Ahora, tengo dos opciones para estructurar los directorios de trabajo locales:
Opción a: Deje la caja de usuario cada solución por separado utilizando AnkhSVN, dando lugar a una estructura como esta:
/solution1/projectA/...
/projectB/...
/solution2/projectC/...
/solution3/projectD/...
/solution4/projectE/...
/projectF/...
o esto, si le digo al usuario crear manualmente un subdirectorio cliente X:
/solution1/projectA/...
/projectB/...
/solution2/projectC/...
/customerX/solution3/projectD/...
/customerX/solution4/projectE/...
/projectF/...
Ventaja: El usuario puede obtener sólo las soluciones que realmente necesita. Desventaja: cada solución necesita ser revisada/actualizada por separado.
Opción B: Dile al usuario a la comprobación del repositorio completo utilizando TortoiseSVN, dando lugar a una estructura que es exactamente el mismo que el repositorio:
/solution1/trunk/projectA/...
/projectB/...
/solution2/trunk/projectC/...
/customerX/solution3/trunk/projectD/...
/solution4/trunk/projectE/...
/projectF/...
Ventaja: Es muy fácil "SVN actualizar todo ". Desventaja: el usuario también tiene una copia local de todas las ramas y etiquetas.
PREGUNTA: Dado que algunos proyectos son compartidos entre las soluciones (digamos, por ejemplo, que ProjectA es una biblioteca que también es utilizado por solution3), tenemos que arreglar una estructura de directorios, para asegurarse de que las rutas relativas en la solución, los archivos son correctos. ¿Qué opción recomienda y por qué?
EDIT: Gracias por todas sus respuestas excelentes, en particular para mencionar svn:externals
y para destacar la importancia de un buen diseño del repositorio. Terminé actualizar mi repositorio estructura:
/trunk/solution1/projectA/...
/projectB/...
/solution2/projectC/...
/customerX/solution3/projectD/...
-svn:external to projectA
/solution4/projectE/...
/projectF/...
que asegura que un desarrollador que trabaja en solution3 sólo necesidades de revisar solution3 (y no solución1) y la solución se puede comprobar a cabo en cualquier directorio , es decir, el directorio de trabajo no necesita una estructura fija.
Buena pregunta, por cierto ... – David