¿Cuál es la mejor manera de usar SVN en esta situación?

Buscando consejos sobre cómo debería usar SVN en mi desarrollo de producto.

En este momento estoy en la versión 2.2 de mi producto y he comenzado a usar SVN con eclipse para poder seguir mi código. Sin embargo, estoy por comenzar a trabajar en la versión 3 del producto, que es esencialmente idéntica a la 2.2 con algunas grandes revisiones y algunas características nuevas.

El problema es que 2.2 seguirá arreglando errores y algunas modificaciones / ajustes menores con tal vez 2-3 lanzamientos más antes de que se convierta en material de oficina y no se haga más trabajo en él – con suerte a time para la versión 3. Entonces, en este momento, si mi baul es 2.2 con una label estable en este punto, ¿a dónde voy desde aquí? Tenga en count que espero que 3 sean una bifurcación de esta label en el enlace troncal, pero como 2.2 y 3 tienen classs similares si realizo un cambio menor o arreglo de error, quiero que se vea afectado en la versión 3 en lugar de tener que implementar el corrección de errores dos veces, tanto en la v2.2 (troncal) como en la twig v3.

También vale la pena señalar que mi twig v3 puede tener twigs para características "experimentales" que pueden no entrar en la primera versión estable de ese producto en particular.

Cualquier idea sobre las mejores prácticas para esta situación sería muy apreciada.

El enfoque básico sería tener una twig svn separada para cada twig funcional del desarrollo.

Una instancia de esto sería crear una twig 2.x que será donde hará todo su desarrollo en la serie 2.2, 2.3, 2.4, …. Esto se basaría en donde se encuentre actualmente y podría usar tags para indicar cada uno de los puntos de lanzamiento. También puede generar nuevas twigs para correcciones de versiones críticas en el futuro, en caso de que surjan (p. Ej., 2.3.x). Entonces podrías continuar tu desarrollo primario en el tronco.

Por supuesto, utilizaría svn merge (como se describe en http://svnbook.networking-bean.com/en/1.5/svn.branchmerge.html ) para manejar la fusión entre sucursales, si fuera necesario. Recomiendo utilizar la última versión de Subversion (por ejemplo, 1.5), ya que las versiones anteriores requerían que rastreara manualmente los cambios que ya se habían fusionado, mientras que las versiones más nuevas manejan el seguimiento de esa información por usted.

Para manejar las correcciones de errores simples que desea fusionar hacia abajo o hacia arriba entre las twigs, puede utilizar la selección de cereza para mover esos cambios entre las twigs.

Considera este repository

     RAÍZ
     | - tronco
     | - tags
     |  `- 2.2 => copy de branches / version_2
     `- twigs
         | - version_2 => copy del tronco en 2.2
         | - version_3_experimental => copy del tronco en 2.2
         `- version_3 => copy del tronco en 2.2

Realiza todos los desarrollos para su versión 3 en el tronco y cualquier corrección de errores se realiza en la twig version_2. Si algo desarrollado para la versión 2 debe estar en la versión 3, lo fusiona en el tronco. Después, fusiona su troncal en branches / version_3. De esta forma, tu maletero seguirá creciendo según la versión 3.

Cuando hayas completado tu versión 2, crea una label de la versión_2 branche.

Espero que esto ayude.

Puede usar la combinación de svn para fusionar twigs de código.

Tu desarrollo se verá más o less así:

  branch 2.x --------------> | |bring some more | trunk 3.0 |changes if necessary trunk ---------------------------------------------------------------> 2.2 stable | | | | * incorporated | | | | | |Merge create branch periodically bring | |branch 3 back | | changes from trunk | |to trunk * * * * * | branch------------------------------------X branch ends 3 here 

Mi sugerencia es retrasar la creación de la twig 2.x justo antes de combinar 3.x con el enlace troncal. Entonces esa cantidad de fusiones puede ser disminuida.

Cualquier cambio a partir de allí se puede llevar a trunk (3.x) pero no a la inversa. Este es un enfoque típico cuando eliminas 2.x a favor de 3.x.