2008-12-01 20 views
13

Digamos que revisé una lista de cambios (en Perforce) con muchos archivos y me gustaría revertir toda la lista de cambios. ¿Hay alguna manera fácil de "revertir" toda la lista de cambios de una sola vez?¿Hay alguna manera fácil de revertir una lista de cambios completa de P4?

Actualmente hago algo como esto para cada archivo en la lista de cambios:

  • p4 sincronización // ruta/a/archivo # n (donde "n" es la versión anterior del archivo)
  • archivo cp archivo # n
  • p4 sincronización // ruta/a/archivo
  • p4 edit // ruta/a/archivo
  • cp archivo archivo # n
  • archivo rm # n

Como se puede imaginar, esto es bastante engorroso para una gran lista de cambios.

Respuesta

10

Las respuestas publicadas proporcionan respuestas correctas, pero tenga en cuenta también que hay una opción de menú real en P4V para hacer esto por usted ahora. Está en la última versión beta de 2008.2, por lo que debería ser lanzada oficialmente la próxima semana o tres.

Este link da detalles.

Debe ser mucho más fácil de usar que las respuestas anteriores, pero todavía no he tenido la oportunidad de probarlo.

Actualización Esto ha sido completamente liberado. Ver Perforce downloads.

+0

Gracias Greg - ¡Voy a probar el cliente beta! –

+0

Acabo de probar esta versión beta de P4V y puedo confirmar que tiene una función de "devolver la lista de cambios enviada" que hace exactamente esto. Dado que esta es una característica oficial de Perforce en lugar de un script de terceros, creo que esto debería aceptarse como la respuesta oficial. –

3

This parece interesante. No lo he intentado personalmente.

+0

Gracias - me probé y funcionó muy bien! Si bien no pude lograr que la integración P4V funcionara en mi Mac, ejecutar el script a través de la línea de comando funcionó bien. –

+0

En caso de que la publicación de blog a la que vinculó caiga, aquí hay un enlace directo al script en Google Code: http://code.google.com/p/p4scripts/source/browse/trunk/src/p4revert.py –

+0

También , una nota: la secuencia de comandos python está (actualmente) guardada en formato DOS, por lo que deberá convertir a terminaciones de línea de Unix para que funcione correctamente en sistemas basados ​​en Unix, como Linux y OS X. –

0

Tengo el mismo problema cuando quiero eliminar una lista de cambios completa. así que utilizo el siguiente script (observe que también borra la estantería de la lista de cambios y la lista de cambios. Si solo quiere revertir, copie las líneas correspondientes). Además, asegúrese de que sed se aplique a su versión de p4.

#!/bin/bash 

set -e 

if [[ $# -ne 1 ]]; then 
echo "usage: $(basename $0) changelist" 
    exit 1 
fi 

CHANGELIST=$1 

#make sure changelist exist. 
p4 describe -s $CHANGELIST > /dev/null # set -e will exit automatically if fails 

p4 shelve -d -c $CHANGELIST 2> /dev/null || true # changelist can be shelveless 
files_to_revert=$(p4 opened 2> /dev/null | grep "change $CHANGELIST" | sed "s/#.*//g") 
if [[ -n "$files_to_revert" ]]; then 
    p4 revert $files_to_revert 
fi 
p4 change -d $CHANGELIST 
+1

Finalmente lo subí con algunos otros scripts de p4 - https://github.com/arnonzilca/p4u –

0

El problema comienza cuando se desea revertir una lista de cambios completo (como un bulto) que ha acaba de enviar, y que necesita para empezar a revertir los archivos de # n-1, uno por uno rápido (porque es de producción) ...

quería apoyar ya23 de respuesta- el enlace de un script en Python - es realmente muy fácil de usar (y muy fácil de perder su comentario)

le das la revisión que desea restaurar, y lo prepara todo de forma automática (n ° 1 de cada archivo, & fusionándose y todo) ... solo envía.

1

Por alguna razón, el paso awk no funciona para mí. Me estoy ejecutando desde un entorno Windows con herramientas de línea de comando emuladas de Unix.Sin embargo, la siguiente no trabajo:

p4 describe -s [changelist_number] | grep // | sed "s/\.\.\. //" | sed "s/#.*//" | p4 -ztag -x - where | grep "... path " | sed "s/\.\.\. path //" 

Éstos son posibles ubicaciones para obtener herramientas de línea de comandos de Unix en un entorno Windows:

http://sourceforge.net/projects/getgnuwin32/?source=typ_redirect http://unxutils.sourceforge.net/

Cuestiones relacionadas