2010-01-29 11 views
9

Me gustaría saber cómo acelerar la resolución automática forzosa al hacer la integración (combine la suya y la suya si no hay conflictos).¿Cómo acelerar la resolución automática?

Actualmente se tardan horas para ~ 5000 archivos cuando se ejecuta utilizando un servidor proxy, incluso si el servidor proxy tiene los archivos precapturados.

También la interfaz p4v no le da ninguna pista sobre el progreso de la tarea, no sabe si finalizará en un segundo o el próximo año.

+0

"Resolver automáticamente (sin fusionar)" - el algoritmo más simple posible, entonces ¿por qué es tan LENTO? Creo que el problema es que Perforce hace todo por la red, por lo que hace 5000 solicitudes en secuencia o algo estúpido. –

Respuesta

1

Supongo que podría hacer la resolución desde la línea de comandos, lo que podría darle una idea de que todavía está avanzando, y no lo bloquearía de otro trabajo en P4V.

0

Si sabe de antemano que con seguridad sea unidireccional, tal vez podría intentar forzar la aceptación de la versión "suya" o "suya". Ver "p4 help resolve" desde la línea de comandos, específicamente las opciones "-at" y "-ay".

No estoy seguro de si realmente rendirá algún beneficio de rendimiento o no, pero es bastante fácil de probar (y hacer algunos benchmarking).

2

5000 archivos no es mucho para resolver, para un servidor moderadamente potente.

¿Son sus archivos binarios de tamaño significativo? si sus 5000 archivos son binarios, autoresolve los sumará a su hdd local para compararlos con la suma de comprobación en el servidor (no el proxy, que solo le transmite la información o los archivos), y esto puede ralentizarlo.

Si sabe de antemano que está intentando una resolución unidireccional (coma la suya en su disco rígido o ingiera la suya del servidor), puede use the 'accept yours' or 'accept theirs' options to autoresolve y omitir la operación de suma de comprobación. Desde la línea de comandos, eso sería "resolver p4" con la opción "-ay" o "-at", respectivamente.

También puede contactar a su administrador de DB forzosa y hacer que registre las acciones del servidor. Tal vez hay acciones que se ejecutan cuando realiza la integración y la resolución que contienen bloqueos de archivos, lo que hace que gire y espere hasta que se liberen los bloqueos. Consulte la referencia para 'p4 monitor show -a'.

Por ejemplo, en nuestra oficina, es común en un lunes por la mañana que todos en la oficina se integren a sus sucursales privadas y se resuelvan.

+0

Para suma de comprobación, pocos gigabytes de datos cada vez no son rápidos de todos modos. ¿Hay alguna forma de hacer que forzosamente use solo el tiempo de modificación de los archivos? En el 99.999% de los casos, los archivos no se modifican sin cambiar su fecha/hora. – sorin

+0

Perforce no tiene una manera fácil de hacerlo. Si no desea detectar los cambios y solo utiliza los tiempos mod de archivos para determinar si los vuelve a escribir, tendrá que crear un script o programar algo para obtener la noción de la base de datos forzosa de cuándo se envió un archivo frente al tiempo de modificación de el archivo en tu disco duro. El valor de modtime de su espacio de trabajo de cliente también puede cambiar el tiempo de modulación de los archivos sincronizados, así que tenga cuidado si sigue esa ruta. – Epu

2

También estoy teniendo un problema similar al trabajar con un proxy en el otro lado del mundo. He realizado algunos experimentos y el problema no parece verse afectado por el tamaño del archivo o el método de resolución (accept-theirs, etc.) al menos para archivos pequeños.

Supongo que hay algunos costos de ida y vuelta por archivo, ya que el tiempo de resolución total es bastante constante independientemente de si desglobo el comando en comandos de resolución individuales por archivo, los batch por grupos de archivos o los resuelvo toda la lista de cambios. En mi caso, la sobrecarga es de aproximadamente 1 segundo por archivo para> 10k archivos.

Actualmente estoy solucionando el problema al iniciar sesión en una máquina virtual ubicada junto con el servidor remoto y realizar la resolución desde allí. A continuación, puede enviar desde la VM y luego sincronizar normalmente. Como necesito ejecutar pruebas localmente antes de enviar, guardo los archivos en la máquina virtual y luego los guardo en mi máquina local. Esto tampoco es terriblemente rápido, pero parece mejor.

Por lo tanto, no es una solución para el problema, pero una solución viable en mi caso que ahorra horas.

Cuestiones relacionadas