2009-02-22 7 views
7

Tengo una mezcla de proyectos pequeños y grandes en SVN. Algunos de ellos son tan pequeños que nunca me puedo imaginar ramificándome o etiquetándome.¿Debería tener carpetas de ramas, etiquetas y troncales incluso para proyectos pequeños?

Por lo tanto, en caso de que todavía se adhieren a la Convención carpeta tronco/rama/etiqueta, aunque estoy bastante seguro de los directorios rama/etiqueta irán sin usar por los proyectos más pequeños? Siento que podría ser excesivo.

pensamientos sobre esto?

+0

@KingNestor, editó su título para reflejar un poco mejor lo que está pidiendo. Buena pregunta sin embargo! – mmcdole

Respuesta

19

Para responder la pregunta en su título directamente: no, no es necesario. Los repositorios SVN se pueden organizar en cualquier estructura de carpetas que elija.

Habiendo dicho esto, es probable que sea una buena idea poner todo en una carpeta de troncales por ahora, de modo que si más adelante cambia de opinión y decide que la ramificación o el etiquetado serían útiles, puede agregar una rama/etiqueta carpetas fácilmente, sin tener que mover todo alrededor.

+1

Por supuesto, en SVN es fácil mover directorios después del hecho. Entonces, si no los incluye ahora y decide que los necesita más adelante, en realidad no es un gran problema. –

2

Son convención, entonces, ¿qué tiene de malo agregarlas? Si su proyecto llega al punto donde los necesita, entonces es mucho más fácil tenerlos en su lugar desde el principio que tratar de agregarlos después del hecho.

6

Utilizo los directorios branch/tag/trunk en Subversion incluso para proyectos triviales. Es prácticamente cero y vale la pena en consistencia. Siempre sé cómo se va a diseñar mi proyecto si alguna vez necesito hacer un pago.

0

En mi repositorio SVN tengo un solo tronco/rama/etiqueta de directorio. Puse todos mis proyectos en el enlace troncal y organizo mi rama y etiqueto directorios por separado en función de los proyectos que realmente alcanzan un estado etiquetable. La Convención podría sugerir el uso de un directorio de rama/etiqueta/troncal para cada proyecto, sin embargo, eso puede ser poco práctico si no se espera que se etiquete y bifurque.

Incluso los proyectos personales pueden beneficiarse de etiquetado infrecuentes y la ramificación antes principales reescrituras o después de un largo paréntesis.

0

Típicamente (o bastante obviamente), la ramificación/etiquetado son extremadamente útiles en equipos, donde muchos codificadores estarán trabajando con la fuente al mismo tiempo. Cada codificador trabaja en su propia sucursal, por lo que no hay riesgo de que se salve el trabajo de otra persona.

Como desarrollador de un solo hombre-ejército, he encontrado todavía ramificación/etiquetado útil cuando:

  1. que necesita para tomar una rama experimental sin renunciar a la fuente de trabajo actual. Lo fusionaré nuevamente si el código experimental es mejor.

  2. Si tengo varios componentes separados, puede ser útil etiquetar cada uno con un nombre que denote el número de versión del proyecto y ponerlos en una carpeta de etiquetas nombrada después del proyecto. Esto ayuda a mantener las pestañas cuando desea volver a la versión 1.0.5.10 y necesita saber qué cambió en el componente Foo. Las notas de compromiso pueden no ser lo suficientemente informativas.

0

En mi experiencia, la organización 'trunk/branch/tag' es un diseño muy bien utilizado para el control de código fuente. Lo he visto implementado en varias organizaciones diferentes que utilizan diferentes herramientas (ClearCase, SVN, CVS, por nombrar algunas). La configuración de ClearCase con la que actualmente trabajo es un poco más sofisticada (¿intrincada?), Pero, en general, sigue un diseño muy similar.

Aunque no es necesario en SVN, recomendaría acostumbrarme a este tipo de diseño, incluida la fusión a/desde diferentes ramas y el tronco.

Para proyectos personales, considero que el etiquetado es un medio valioso para preservar lanzamientos finales e inmutables. Por lo general, las sucursales están reservadas para tangentes experimentales, así que no destruiré la versión más reciente (estable) de mi código antes de que comience la realidad.

Cuestiones relacionadas