2010-09-28 17 views
7

Quiero una solución rápida que no requiera la sincronización forzada que colocará un directorio específico en su estado de repositorio original.Perforce sincronización rápida de un directorio a un estado limpio

  • mismos archivos pueden ser removidos de disco
  • mismos archivos se pueden añadir desde el disco
  • algunos archivos pueden ser modificados en el disco
  • algunos archivos pueden ser marcados para la eliminación, adición o modificación en forzosamente

Todo lo que quiero es estar seguro de que después de ejecutar el comando no tendré ninguno de estos.

p4 -f sync no es una opción, necesito una solución más rápida que minimice el uso de redes.

Por si alguien pregunta, el proxy forzado está fuera de discusión.

sí sé que una solución parcial es:

p4 diff -sd -se //clientspec/dir/... | p4 -x - revert

El problema es que esto no elimina los archivos añadidos a las vías de acceso anteriores que no están en Perforce - archivos que quiero ser removido de disco.

Además, necesito una solución multiplataforma o multiplataforma: tiene que funcionar en Windows, OS X y Linux.

Respuesta

0

Si tiene Unix/Linux esto puede funcionar.

En Perforce puede "Conciliar Trabajar sin conexión" a través de P4V, como se ve here oa través de la línea de comandos como visto here. Ya hace esto último como cubiertos en su pregunta, ya que revierte los archivos editados y eliminados. Los archivos agregados son más complicados. El segundo enlace hará que hagas lo siguiente.

find . -type f -print | p4 -x - add 
find . -type l -print | p4 -x - add 

para añadir archivos y enlaces simbólicos en Unix

La parte difícil es la eliminación física de los archivos que haya añadido. Esto no es bonito, pero creo que funcionaría. p4 abierto | grep agregar | corte -f1 -d "#" | p4 -x- donde | cut -d -f3""

Luego hay que hacer un

p4 revert directory/... 

o hacer algo similar a la anterior, cuando la eliminación de archivos.

0

Lo necesitaba para un servidor de compilación con svn. Lo que hice al final fue:

  • actualización del área de trabajo
  • eliminar el antiguo “construir carpeta” si hay una
  • Xcopy el espacio de trabajo a la carpeta “construir”
  • de crear la versión en la "carpeta de compilación"

De esa manera, sabía que no había nada para una vieja estructura.

2

Otro fragmento de Unix/Linux que se debe eliminar todos los archivos que nunca han sido rastreados por Perforce:

find . -type f | p4 -x- files 2>&1 | sed -n -e 's/ - no such file(s).//p' | xargs -d '\n' rm

+0

Lo anterior eliminará todos los archivos que están abiertos para agregar ... – John

5

Perforce ha añadido un nuevo comando "P4 limpias" en 2014,1 que hace exactamente lo que busca para, al restablecer el espacio de trabajo a su estado #have:

  • nuevo no ficheros en Perforce se eliminarán
  • archivos modificados fuera del control Perforce será rese t
  • archivos borrados fuera del control Perforce será restaurado

El comando es un alias de "p4 conciliar -w" y utiliza el hashsum de los archivos para determinar su estado en su espacio de trabajo.

Cuestiones relacionadas