2008-11-18 12 views
10

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.¿Puedo integrar archivos retirados en una rama diferente en forzada

Respuesta

0

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

Normalmente, cuando tengo que hacer algo así, reviso los archivos de la rama en la que quiero mover las cosas, luego uso 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 comprobación automática/agregar/eliminar archivos en la nueva rama), pero fue el método más rápido que se me ocurrió.

-1

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.

+0

Vea el enlace anterior sobre el trabajo de bifurcación en progreso. –

0

No realmente.

Puede, por supuesto, simplemente abrir los archivos para editar en la nueva bifurcación y copiar manualmente los archivos cambiados del área de trabajo de su rama principal al espacio de trabajo de la nueva sucursal. Esta es probablemente la forma más fácil si solo se trata de unos pocos archivos.

Here son algunas secuencias de comandos que pueden ser útiles si se trata de una gran cantidad de archivos. P. ej., 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 other nifty scripts para Perforce por Jim Tilander.

10

El sitio web de soporte de Perforce explica cómo hacerlo: Perforce Knowledge Base: Branching work in progress. Sería más agradable si fuera un solo paso que no requiriera ejecutar ocho comandos diferentes.

+0

Esta es la respuesta correcta: lo he hecho y es muy fácil. –

+0

@ user38703: márquelo como la respuesta correcta si lo es. –

+2

Me sorprende que git se vuelva flojo por ser "difícil de usar" cuando el equivalente en p4 de "git rebase" es de unos 15 comandos. – RJFalconer

6

Desde el lanzamiento 2013.1, la forma de trabajo de la bifurcación en progreso es shelve el trabajo y unshelve en la sucursal. En detalle:

  1. Dejar de lado los cambios pendientes:

    $ 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. Unshelve ellos en la rama (usando la opción -b, que mapea el nombre del archivo a través de una especificación de rama):

    $ 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/[email protected]=182535 before submitting 
    # etc. 
    
  3. Resuelva cualquier fusión resultante de unshelve, usando p4 resolve -as para hacer rápidamente las "seguras", y luego doi ng el resto con 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. 
    

(La salida del ejemplo es un caso de uso real, me encontré hace un momento.)

0

reformular respuesta Gareth Rees anteriormente en términos simples,

p4 unshelve -b target_branchspec -s changelist 

:)

Cuestiones relacionadas