version-control - retroceder - revertir cambios en un archivo git
¿Hay alguna manera fácil de revertir una lista de cambios completa de P4? (6)
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?
Actualmente hago algo como esto para cada archivo en la lista de cambios:
- sincronización p4 // ruta / a / archivo n (donde "n" es la versión anterior del archivo)
- archivo de archivo cp # n
- Sincronización p4 // ruta / a / archivo
- p4 edit // ruta / a / archivo
- archivo cp # n archivo
- archivo rm # n
Como se puede imaginar, esto es bastante engorroso para una gran lista de cambios.
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 enlace proporciona detalles.
Debería ser mucho más simple de usar que las respuestas anteriores, pero aún no he tenido la oportunidad de probarlo.
Actualización Esto ahora ha sido completamente lanzado. Ver descargas Perforce .
La respuesta oficial de Perforce está en http://kb.perforce.com/UserTasks/ManagingFile..Changelists/RevertingSub..Changelists pero el procedimiento no es mucho más fácil que el que sugiere. El script sugerido por @ ya23 se ve mejor.
Esto se ve interesante. No lo he intentado personalmente.
Tengo el mismo problema cuando quiero eliminar una lista de cambios completa. entonces utilizo el siguiente script (note 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 relevantes). 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
El problema comienza cuando quieres revertir una lista de cambios completa (como un volumen) que acabas de enviar, y necesitas comenzar a revertir los archivos de # n-1 uno por uno rápidamente (porque es producción) ...
Quería apoyar la respuesta de ya23, el enlace de un script de Python, es realmente muy fácil de usar (y realmente es fácil pasar por alto su comentario)
Usted le da la revisión que desea revertir, y lo prepara todo automáticamente (n ° 1 de cada archivo y fusión y todo) ... solo lo envía.
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, lo siguiente funciona:
p4 describe -s [changelist_number] | grep // | sed "s//././. //" | sed "s/#.*//" | p4 -ztag -x - where | grep "... path " | sed "s//././. path //"
Aquí hay posibles ubicaciones para obtener las herramientas de línea de comandos de Unix en un entorno de Windows:
http://sourceforge.net/projects/getgnuwin32/?source=typ_redirect http://unxutils.sourceforge.net/