svn: Forma correcta de corregir errores críticos cuando se trabaja en una twig

Cuando quiero agregar una nueva característica a nuestro proyecto, creo una twig para esa característica. Cada vez que la function está completa, fusiono la twig en el tronco.

Sin embargo, a veces tengo que resolver errores críticos en la twig en la que estoy trabajando. La corrección de errores se debe aplicar de inmediato, por lo que hago la corrección directamente en el tronco y confirmo el cambio.

Por lo general, también necesito que se corrija el error en la twig en la que estoy trabajando (para evitar encontrarlo mientras trabajo en la function de twig), así que simplemente copio el código fijo de los files del tronco y lo pego en la twig código para replace el código con errores.

Mis preguntas son: ¿hay alguna forma en SVN para actualizar files de twigs específicos de files troncales más nuevos? Además, ¿cree que habría una forma adecuada de abordar los errores críticos?

EDITAR: ¿Es posible hacerlo con el cliente TortoiseSVN?

Entonces, ¿cómo estás haciendo la corrección?

¿Lo estás arreglando en tu twig de características y combinándolo en el tronco?

Si es así:

Puede especificar revisiones específicas que desee fusionar en otra twig. Por ejemplo, si corrigió el error en la revisión 1001 en la sucursal, desea fusionar solo esa revisión.

Es posible que también necesite usar la bandera --reintegrate . Esto se usa cuando fusionas información de vuelta a la twig padre. Por ejemplo, si su bifurcación proviene del --reintegrate troncal y está fusionando información de la bifurcación con el --reintegrate troncal, utiliza la opción --reintegrate .

Si ya ha modificado el código en el --record-only troncal y simplemente desea registrar la combinación , puede usar la opción --record-only . Esto registra que el cambio en la twig se incorporó al tronco, pero en realidad no realiza la fusión.


O bien, ¿hay alguna solución en el tronco y quieres eso en tu twig de características?

Si es así, quiere usar la syntax de combinación normal. De hecho, debería fusionarse temprano y, a menudo, desde el enlace troncal a su sucursal, para que tenga el código más reciente en su twig de características.

De nuevo, si aplica manualmente el parche a su twig de características, realice una svn merge pero use la opción --record-only . Esto le permite a Subversion marcar la corrección como fusionada en la twig, pero en realidad no preforma una fusión. Esto evita que una fusión posterior trate de arreglar su arreglo.

El objective de una twig de funciones no es permitirle ingresar a una cueva y a un progtwig, sino evitar que una característica afecte la construcción mientras la característica se encuentra en un estado inestable. Desanimo las twigs de características. Quiero que los desarrolladores sean cuidadosos y realicen pequeños cambios para asegurarse de que la creación sea buena. También quiero que su desarrollo sea visible para todo el equipo. Si crea una bifurcación desde el enlace troncal, luego fusiona el código nuevamente en el --use-merge-history troncal, no verá el historial en la sucursal con el svn log less que también lo haga --use-merge-history , y luego el logging se --use-merge-history un poco desorderado .

Cada vez que creas una twig, terminas con problemas de fusión, especialmente si la twig es una twig convergente como una twig de características. El desarrollador debe fusionar constantemente el tronco en su twig y luego intentar fusionar su trabajo nuevamente en el tronco. Aunque, en teoría, la fusión completa de una twig a otra debería ser una copy simple (si el desarrollador ha mantenido su twig actualizada), generalmente terminamos con un montón de conflictos de fusión.

La única vez que aprobaré una twig de características es si el trabajo sobre ella afectará la capacidad del código para ser construido y probado. Incluso agregar una característica nueva importante rara vez lo hace si se hace con cuidado (como debería). La bifurcación de funciones generalmente se reserva cuando el código se está refactorizando o se está volviendo a trabajar una parte central de la base del código.

De acuerdo con esta página , puede usar svn merge para ir de troncal a sucursal si aplica la syntax correcta.

Algo como lo siguiente:

 svn merge -r 1001:1002 https://svn.dev.your/repo/trunk/src . 

Donde 1001 es la versión anterior a la que desea fusionar, 1002 es la versión de lo que desea fusionar y la URL correspondiente a su troncal.

¿Crees que habría una forma adecuada de abordar los errores críticos?

Creo que hay una forma adecuada ahora. Si me preguntas cómo resolveré este problema, pensaré en

  • Crear una bifurcación desde el tronco para la corrección de errores
  • … codifica y se compromete en una sucursal
  • fusionar twig en el tronco y en su twig de características