6

Digamos que trabajas en un proyecto grande con múltiples características dirigidas en cada lanzamiento. Es posible que tengamos diferentes ramas de características (en el VCS) para cada desarrollo de características. Pero después de que toda la rama de características se fusiona y la integración se realiza, digamos que una de las funciones se descarta (esto ocurre con más frecuencia en nuestra organización de lo que se podría imaginar). ¿Hay alguna manera de deshacer una característica en este punto? Lo que solemos hacer es descubrir todos los cambios de código y deshacer manualmente. ¿Tiene algún proceso/mejores prácticas que ayudarán a reducir este esfuerzo? Para el registro, tenemos un proyecto de Java con subversión como el VCS.¿Qué debe hacer si una característica se descarta en el último momento?

+0

Combinar una característica a la vez no es una opción. – rerun

Respuesta

5

Depende del motivo por el que se ha caído.

Si "en el último momento" es durante las pruebas del sistema, y ​​no desea repetirlo, entonces diría que simplemente deshabilita la función y la envía de todos modos.

Hemos hecho esto en el pasado; eliminar la característica puede ser demasiado arriesgado en términos de crear errores adicionales. Si ya no desea la función (por ejemplo, el requisito se ha eliminado o se ha decidido que la implementación es incorrecta), probablemente sea mejor en términos de riesgo simplemente desactivarlo con un mínimo de cambios de código.

Es decir, eliminar u ocultar los elementos de la interfaz de usuario que habilitan la función, y los usuarios no sabrán que está allí (siempre que esté desactivada de manera predeterminada).

Afortunadamente, durante una futura versión, habrá una oportunidad para refactorizar esa parte del código y eliminar la característica o reintroducirla correctamente.

+0

Casi a la derecha (pero aún +1). Deshabilitar, * RE-TEST *, luego enviar. Desactivar con el mínimo cambio necesario para desactivar la función. En un sistema basado en GUI, esto podría ser tan simple como deshabilitar o eliminar un elemento del menú. En otros sistemas, necesita averiguar el cambio mínimo ... – Mawg

+0

Bueno, aún tendrá que hacer algunas pruebas adicionales del sistema después de que la característica esté deshabilitada, principalmente para verificar las regresiones introducidas al deshabilitar la función (por ejemplo, ¿Deshabilitó accidentalmente? alguna otra característica) y para asegurarse de que la función esté realmente desactivada. – MarkR

1

Si está utilizando TortoiseSVN como cliente, tiene un "cambio de versión desde esta revisión" en el menú contextual.

Simplemente muestre el registro en la copia de trabajo y elija la revisión que desea fusionar de forma inversa (en el caso, la revisión que representa dónde se fusionó en la rama de características).

alt text http://img64.imageshack.us/img64/9053/svnreversemerge.png

De lo contrario, se puede hacer un reverso de fusión desde la línea de comandos. La fusión inversa crea una nueva revisión que es la revisión HEAD menos los cambios de la revisión que fusionó en reversa, por lo que siempre se puede "revertir el reverso". SVN es genial de esa manera.

+0

El problema con esto es que habrás realizado cambios como resultado de QA/UAT después de haber integrado la función, por lo que tendrás una reversión muy desordenada. Es mucho más seguro desactivar la función, si es posible, y especialmente si tiene dudas sobre si la característica volverá más adelante (honestamente, si sus clientes asignan el tiempo de codificación a una función y luego cambian de opinión en esta fecha tardía, es probable que cambien de opinión la próxima semana). –

Cuestiones relacionadas