2010-10-26 17 views
8

(soy un nuevo usuario por fuerza, sino que han utilizado una gran cantidad de otros sistemas de control de código fuente en el pasado.)¿Cómo puedo ver si una rama contiene una corrección de errores en Perforce?

se utiliza una lista de cambios para el registro de entrada en cada corrección de errores; el comentario de la lista de cambios incluye el ID del error, por lo tanto, es fácil hacer un seguimiento cuando se ha corregido un error en una sucursal.

Sin embargo, no veo una manera fácil de encontrar todas las ramas; una corrección de error determinada ha sido fusionada en, o para encontrar todas las correcciones de errores que se han fusionado en una rama determinada.

Por lo que puedo decir, forzado no rastrea todas las ramas en las que se ha fusionado una lista de cambios. Tal como lo entiendo, cuando se realiza una fusión a la fuerza, el historial no se copia en la rama de destino, por lo que el único historial en el objetivo en el comentario en la lista de cambios se realizó en la fusión.

¿Qué me estoy perdiendo?

Respuesta

14

Perforce pistas donde las revisiones de un archivo se han integrado, pero no propaga automáticamente los comentarios de check-in con sus metadatos de seguimiento de errores.

Dada una lista de cambios en una rama en particular, puede decir si Perforce cree que la lista de cambios se ha integrado pidiendo a Perforce que integre la lista de cambios. (Estoy usando "rama" en el sentido más tradicional de control de fuente, para referirme a una rama particular del árbol de código fuente, en lugar de en el sentido específico de Perforce para indicar la ruta de integración entre estos dos árboles de código fuente). diga que ha estado trabajando en //source/project/trunk/... y tiene una lista de cambios @ 1234 que le gustaría verificar si se ha integrado en su rama de publicación //source/project/rel/.... Crear un cliente que se asigna //source/project/rel/... y ejecutar:

$ p4 integrate -n //source/project/trunk/[email protected],1234 //source/project/rel/... 

Si Perforce te dice "Todo revisión (s) ya integrado.", Lista de cambios @ 1234 se ha integrado, y que de corrección de errores debe estar disponible en la rama de lanzamiento. Si Perforce enumera los archivos que han cambiado, esos archivos no se han integrado. (También es posible que algunos archivos de una lista de cambios se integren y no otros, lo que puede ocasionar algunos problemas interesantes.)

Esto no se escala especialmente bien; debe verificar cada corrección de error en cada rama que se ocupa sobre, aunque se presta a la automatización.

Puede utilizar el comando Perforce "no admitido" interchanges para tener una idea rápida de qué listas de cambios no se han integrado de una rama a otra. (En el lenguaje de Perforce, "no compatible" significa algo así como "podría no funcionar igual en la próxima revisión, pero creemos que podría ser útil, así que lo publicaremos de todos modos"). Para ver qué listas de cambios no se han integrado desde tronco ejemplo para liberar ramas, ejecute:

$ p4 interchanges //source/project/trunk/... //source/project/rel/... 
Change 1236 on 2010/10/10 by [email protected] 'Fixed some bug you don't care about' 
Change 1235 on 2010/10/09 by [email protected]_client 'Fixed some other random bug' 

En este ejemplo, no he enumerado lista de cambios @ 1234 debido a que ya se ha integrado en la rama de lanzamiento. Un problema que he experimentado al usar interchanges es que enumerará todas las revisiones más recientes después de un cambio no integrado, incluso si las revisiones más recientes se han integrado, por lo que si está seleccionando cuidadosamente las revisiones para una rama de publicación, puede ver lista de cambios nuevamente . Utilizo interchanges como primer paso para tener una idea aproximada de lo que necesito integrar, luego miro en integrate para tener una mejor idea de lo que realmente falta.

(Perforce también admite un concepto similar de "trabajos" que permite adjuntar correcciones particulares a listas de cambios particulares, pero mi organización no las usa, así que no sé qué tan bien funcionan o si se propagan automáticamente en la integración.)

+1

Gran respuesta. Se pueden encontrar más detalles en la sección * ¿Se solucionó el error X en la línea de código Y? * De [Practical Perforce] (http://www.amazon.com/Practical-Perforce-Laura-Wingerd/dp/0596101856) (Capítulo 8) –

Cuestiones relacionadas