2009-10-02 10 views
8

Actualmente tenemos 2 ramas:SVN cambio de base y la historia perdida

/repo/branch/current_version 
/repo/branch/next_version 

current_version es una rama donde todos los desarrolladores trabaja actualmente.

Estamos comenzando una próxima versión y creamos next_version rama desde algún punto en current_version, mientras que el trabajo en current_version aún continúa. En next_version hacemos algún desarrollo y en los próximos meses la rama se convertirá en nuestra principal, donde se realizará todo el desarrollo.

Dado que hay desarrollo en current_branch, pensamos periódicamente (digamos una vez cada 2 semanas) en rebase next_version. Esto con el fin de mantener ambas ramas sincronizadas, de modo que cuando todos los desarrolladores eventualmente descartarán current_branch y pasen a next_release, next_release contendrá todas las características de current_branch integradas y probadas.

El problema es el rebase. En realidad, el rebase está fusionando las últimas confirmaciones de current_branch a next_version. Entonces, si voy a examinar el historial de los archivos comprometidos en next_release, todo lo que veré son los commit de fusión y no el historial (commits/authors/annotation) de current_version.

¿Extraño algo?

Respuesta

20

No, no se ha perdido nada. Este es un gran problema con el uso de SVN para el control de versiones.

Me encontré con él una y otra vez en mi último trabajo. Cada vez que alguien le asignaba algo a current_branch (para seguir con su terminología), el mensaje de compromiso debería copiarse manualmente para poder usarlo en el mensaje de compromiso de fusión. Esto rápidamente se convirtió en un gran dolor.

Es por eso que el nuevo software de control de versiones ha salido con mejores capacidades de fusión (me vienen a la mente Git, Mercurial y Bazaar).


EDIT: Al parecer SVN ha solucionado este problema. SVN 1.5 y arriba incorporan merge-sensitive logs and annotations. Use la bandera --use-merge-history (-g) con svn merge y svn culpa para ver los mensajes de confirmación de la rama fusionada.

+4

@ThisSuitIsBlackNot tu comentario eliminado sobre la función svn 1.6 "Merge-Sensitive Logs and Annotationscomment" es lo que estoy buscando. Usar flag -use-merge-history (-g) junto con svn log/culpa hará el trabajo. Veo la característica presente en 1.5 también. Actualiza tu respuesta y la aceptaré :) – dimba

Cuestiones relacionadas