perforce integrate

perforce - ¿Puedo integrar los archivos extraídos en una rama diferente a la fuerza?



integrate (6)

Estábamos trabajando en un diseño, y para eso creamos el esqueleto de las clases en nuestra rama principal. Ahora, estamos empezando a codificar, y para eso tenemos una nueva rama. Por lo tanto, sería bueno si puedo mover todos los archivos nuevos en la rama principal a la nueva rama. Sin embargo, aún no puedo registrarlos. Entonces, ¿es posible integrar la lista de cambios desprotegida? Gracias.


La respuesta fácil es: no, no puedes. Una lectura rápida de los documentos de Perforce no resultó con una cita lista para esto, desafortunadamente, pero en mi experiencia, cualquier intento de quitar la alfombra de debajo del servidor Perforce hará que se pierdan sus cambios, lo que lo dejará descontento. camper.

Realice una copia de seguridad, cree un área de trabajo nueva en la nueva rama y vuelva a aplicar los cambios, tal vez utilizando la estrategia diff / merge descrita en la respuesta de Herms.


Nunca encontré una manera de hacerlo dentro de la fuerza, pero al menos puedes automatizarlo parcialmente.

Por lo general, cuando tenía que hacer algo así, revisaba los archivos en la rama a la que quería mover las cosas, luego usaba WinMerge para modificar las ramas y copiar los cambios. Una vez hecho esto, puede revertir los cambios en la rama original y registrarlos en la nueva rama.

No es la mejor solución (sin pago / adición / eliminación automática de archivos en la nueva sucursal), pero fue el método más rápido que se me ocurrió.


Realmente no.

Por supuesto, puede simplemente abrir los archivos para editar en la nueva rama y copiar manualmente los archivos modificados desde el área de trabajo de su rama principal al espacio de trabajo de la nueva rama. Esta es probablemente la forma más fácil si solo se trata de unos pocos archivos.

Aquí hay algunas secuencias de comandos que pueden ser útiles si se trata de una gran cantidad de archivos. Por ejemplo, con el script P4Shelf puede crear un archivo de todos sus archivos modificados y luego abrirlos automáticamente en cualquier rama con los cambios restaurados.

Además, echa un vistazo a algunos otros scripts ingeniosos para Perforce de Jim Tilander.


Desde el lanzamiento 2013.1, la manera de ramificar el trabajo en progreso es shelve el trabajo y unshelve en la rama. En detalle:

  1. Deje de lado sus cambios sobresalientes:

    $ p4 shelve ... Change 182535 created with 10 open file(s). Shelving files for change 182535. edit //info.ravenbrook.com/project/mps/master/code/arenavm.c#26 # etc.

  2. Desenmascararlos en la rama (utilizando la opción -b , que mapea el nombre del archivo a través de una especificación de bifurcación):

    $ p4 unshelve -b mps/branch/2013-06-05/diag -s 182535 ... //info.ravenbrook.com/project/mps/branch/2013-06-05/diag/code/arenavm.c - must resolve //info.ravenbrook.com/project/mps/master/code/arenavm.c@=182535 before submitting # etc.

  3. Resuelva las fusiones resultantes del unshelve , utilizando la p4 resolve -as para hacer rápidamente las "seguras", y luego haciendo el resto con la p4 resolve como de costumbre.

    $ p4 resolve -as //gdr-peewit/info.ravenbrook.com/project/mps/branch/2013-06-05/diag/code/arenavm.c - copy from //info.ravenbrook.com/project/mps/master/code/arenavm.c # etc. $ p4 resolve No file(s) to resolve.

(El resultado del ejemplo proviene de un caso de uso real que ejecuté en este momento).



Para reformular la respuesta de Gareth Rees en términos simples,

p4 unshelve -b target_branchspec -s changelist

:)