subir - Estructura de carpetas para muchos proyectos en un repositorio SVN?
subir proyecto a svn (6)
Acabo de crear un repositorio SVN de Google Code para almacenar mis proyectos escolares y tareas, y para permitir una fácil transferencia entre la escuela y el hogar.
Sus directorios predeterminados que crea son:
https://simucal-projects.googlecode.com/svn/trunk/
https://simucal-projects.googlecode.com/svn/tags/
https://simucal-projects.googlecode.com/svn/branches/
Nunca he usado un repositorio para más de un proyecto, pero después de leer: ¿ Un repositorio svn o muchos? Decidí tener un único repositorio para todos mis proyectos escolares al azar.
¿Debería simplemente replicar la estructura de carpetas anterior, pero para cada proyecto?
https://simucal-projects.googlecode.com/svn/projectA/trunk/
https://simucal-projects.googlecode.com/svn/projectA/tags/
https://simucal-projects.googlecode.com/svn/projectA/branches/https://simucal-projects.googlecode.com/svn/projectB/trunk/
https://simucal-projects.googlecode.com/svn/projectB/tags/
https://simucal-projects.googlecode.com/svn/projectB/branches/
¿Esto es lo que hacen las personas de proyectos múltiples en un solo puesto?
Eso es lo que uso para el control de fuente de mi casa.
Donde solo tengo un repositorio principal.
Repositorio / Proyecto1 / Troncal
Repository / Project1 / Tags
Repositorio / Proyecto1 / SucursalesRepositorio / Proyecto2 / Troncal
Repository / Project2 / Tags
Repositorio / Proyecto2 / Sucursales
Me gusta esta estructura, es muy fácil hacer referencia a los proyectos y mantener la integridad.
No hay una respuesta clara a esta pregunta, ya que depende de lo que mejor se adapte a sus proyectos.
- Utilizaría / projectA / trunk layout si hubiera un gran desarrollo por proyecto y todo debe separarse ya que no hay mucha conexión entre ellos (componentes / proyectos que son independientes). Sin embargo, también podría usar un repositorio SVN por proyecto. Recuerde que no podrá verificar todos los proyectos usando svn co http: //..../svn/ porque esto también obtendrá todas las etiquetas y ramas de todos los proyectos, no solo del tronco.
- / trunk / projectA sin duda sería mejor si sus proyectos / componentes pertenecen estrechamente y necesita etiquetarlos y ramificarlos desde la misma revisión (como una biblioteca que pertenece muy de cerca al proyecto principal). También puede usar svn co http: //.../svn/trunk/ para obtener todos los proyectos en su última revisión troncal si lo desea.
Desde un punto de vista de mantenimiento, casi siempre preferiría la segunda manera; pero si sus proyectos crecen y pueden prolongarse, sería mejor usar repositorios separados por proyecto.
Además de eso: compruebe si realmente necesita los servicios de Google Code para su tarea porque su propósito es apoyar OSS. Siempre puedes usar SVN localmente o incluso a través de SSH, por lo que también puedes poner tus repositorios en una memoria USB o en alguna computadora a la que se pueda acceder de forma remota; realmente no necesitas alojamiento para eso. También podría haber problemas de privacidad.
Si insistes en tener solo un repositorio (estoy en el campo NO ME PUEDO) y te dedicas a la bifurcación, entonces creo que lo que propones es bueno. Pero, de nuevo, considero que un repositorio SVN es igual a un proyecto.
Tienes dos opciones para esto. El que ya mencionaste, y es tener un tronco para cada proyecto (opción 1):
https://simucal-projects.googlecode.com/svn/projectA/trunk/
https://simucal-projects.googlecode.com/svn/projectA/tags/
https://simucal-projects.googlecode.com/svn/projectA/branches/
https://simucal-projects.googlecode.com/svn/projectB/trunk/
https://simucal-projects.googlecode.com/svn/projectB/tags/
https://simucal-projects.googlecode.com/svn/projectB/branches/
La opción 2 sería tener un tronco con cada proyecto como una subcarpeta en el tronco:
https://simucal-projects.googlecode.com/svn/trunk/projectA/
https://simucal-projects.googlecode.com/svn/tags/projectA/
https://simucal-projects.googlecode.com/svn/branches/projectA/
https://simucal-projects.googlecode.com/svn/trunk/projectB/
https://simucal-projects.googlecode.com/svn/tags/projectB/
https://simucal-projects.googlecode.com/svn/branches/projectB/
La ventaja de la opción 1 es que puede bifurcar y etiquetar cada proyecto de forma independiente. Esto es deseable si necesita implementar cada proyecto por separado.
La opción 2 es deseable si todos los proyectos se implementan juntos. Esto se debe a que solo debe etiquetar el repositorio una vez durante la implementación.
Como está utilizando Subversion para proyectos escolares, debe preguntarse si alguna vez necesitará etiquetar su trabajo. También puede preguntarse si alguna vez necesita crear ramas (es probable que desee si desea experimentar un poco). También deberá preguntarse si está contento de ramificar TODO su trabajo como uno solo, de si prefiere la flexibilidad de ramificar cada proyecto de forma independiente.
La regla de oro que siempre sigo: conectar todo lo que desplegamos juntos.
(Por cierto, puede tener muchas troncales en el mismo repositorio, esto es casi equivalente a tener una troncal en múltiples repositorios, excepto que cada repositorio mantiene su propio contador de revisiones y no puede fusionarse entre repositorios).
Un ejemplo de la vida real: el repositorio de Apache Projects.
Uno de los principales objetivos que rastrea con el diseño de la carpeta (en el control de versiones) es la gestión de control de acceso.
Si hay necesidad de separar el equipo de Develop (que trabaja en Trunk) y Maintain team (que trata con Branches), esta estructura es buena:
/trunk
/Project1
/Project2
/branches
/Project1
/Project2
/tags
/Project1
/Project2
Y si queremos permitir el acceso de cada proyecto a un grupo de usuarios específico, esta estructura es buena:
/Project1
/trunk
/branches
/tags
/Project2
/trunk
/branches
/tags