Cómo estructurar el repository SVN dentro del directory de sucursales

Estoy familiarizado con la estructura clásica / trunk / branches / tags para un repository SVN, pero parece que hay muy pocos consejos sobre cómo estructurar el repository dentro de eso, especialmente las twigs.

Digamos que el nivel superior de mi tree fuente es un proyecto llamado P. La parte troncal del repository es fácil, es solo tronco / P porque solo hay un tronco.

Para las tags, puedo estructurarlas de acuerdo con el número de versión, así que tendría

tags/v3/v3.2/v3.2.7/P tags/v3/v3.3/v3.3.1/P 

etcétera etcétera.

Para las sucursales, es más complicado. Normalmente tendré una twig "última estable v3.2" pero también podría tener twigs activas para 3.2. Por supuesto, también tendré twigs de características para el tronco, y parece lógico mantenerlas separadas de las twigs de características para otras versiones. Entonces, una opción para la estructura de repo sería:

 branches/3.2/stable/P branches/3.2/feature1/P branches/trunk/feature2/P 

Sin embargo, parece un poco extraño tener una carpeta llamada tronco dentro de una twig.

Supongo que mucha gente diría que nunca se debe hacer un desarrollo de funciones lo suficientemente significativo como para requerir una twig, a less que esa twig sea directamente del tronco. En ese caso, las únicas twigs serían las twigs de características y todas las tags también serían del tronco. Lamentablemente, no tengo ese lujo porque tengo que admitir una serie de versiones antiguas para clientes que (por una razón u otra) no pueden actualizarse a la última.

Ha estructurado su repository de proyectos múltiples hacia atrás desde la configuration recomendada . Debería poner el tronco, las tags y las twigs DENTRO del proyecto P en lugar de al revés.

Creo que tiene muy poco sentido pegar tus tags en sub-tags como esa. ¿Qué esperas ganar al hacerlo de esa manera? No se referiría a una versión publicada como 3 / 3.1 / 3.1.1. Usted se referiría a él simplemente como 3.1.1. Entonces, ¿por qué nombrar sus tags utilizando el método anterior?

Las sucursales tienen un poco más de sentido, y puedo ver a dónde vas con eso, pero creo que aún recomendaría no hacer carpetas anidadas. Creo que debería desarrollar una característica o una corrección de errores en una twig (preferiblemente fuera de la línea troncal, pero eso no es tan importante) y luego transferirla a la otra twig que lo necesita usando una sola revisión de combinación. Entonces solo necesita una twig "feature1" y "feature2" en lugar de especificar de dónde viene. El historial debe indicar de dónde procede y Mergeinfo en cada twig / tronco debe indicarle si cada twig tiene o no la function.