2011-03-21 9 views
5

He encontrado un problema con la extensión Perfarce que parece que no puedo pasar. Inicialmente se clonó parte de mi P4 depósito por:¿Puedo reconstruir el enlace Perforce/Mercurial después de un clon Perfarce abortado?

hg clone --startrev 71555 p4://perforce:1666/greg_nt_main-hg lwnthg 

Elegí un rev principio que estaba a unos pocos listas de cambios tras la revisión actual jefe - tratar un clon completo sin startrev no funcionó, pero eso es una separada problema sobre el que quizás escribiré por separado.

Durante el clon que tiene el siguiente error:

"abort:untracked file in working directory differs from requested revision on 'MAIN/apps/Win32/BenchMark/Jamfile'” 

Sin embargo, en la inspección de lo que había aparecido en mi disco, parecía que todos los archivos de hecho había sido clonado con éxito. El archivo mencionado fue idéntico al de Peforce, y la carpeta lwnthg estaba vacía antes del proceso de clonación. Un 'estado de hg' mostró una gran cantidad de archivos que aún no se habían confirmado. Supongo que porque el clon se canceló. Así que los comprometí, y todos parecían ser geniales.

Realicé algunas ediciones en mis archivos, las envié al repositorio local sin problemas. Me gustó mucho la belleza de Mercurial;)

Pero cuando llegué a empujar mis cambios de nuevo a Perforce me sale el siguiente error:

abort: no p4 changelist revision found 

I verificado que tenía un billete de entrada P4 válida, P4 estaba arriba, etc, y todo está bien.

Así que mi suposición es que Perfarce almacena en alguna parte la lista de cambios que se sincronizó por última vez desde P4, y el primer aborto ocurrió antes de que se escribiera esta información. Si intento una operación de extracción desde P4, también obtengo el mismo error. Asumiendo que mi teoría es correcta, ¿hay alguna forma de reconstruir esta información en la configuración local de Perfarce?

NOTA 'Perfarce' NO es un error tipográfico. Es el name of the Mercurial extension para vincular a Perforce. La pregunta pierde algo de su significado si la cambia a 'Perforce'. Apreciar la ayuda para tratar de aclarar la pregunta, pero siempre vale la pena verificar los hechos primero :)

+0

Trigger editores felices - tenga en cuenta la 'NOTA' al final de la pregunta :) –

Respuesta

1

Para responder a mi propia pregunta, la respuesta parece ser no.

He hecho más excavaciones y he estado en contacto con el autor original, Frank Kingswood, y la solución es garantizar las importaciones de su depósito sin errores en primer lugar. Una vez hecho esto, Perfarce funciona de manera absoluta.

El aborto original de la importación se redujo a mi uso. Después de seguir varias instrucciones que se encuentran en otros lugares, incluido Stack Overflow, intenté usar el parámetro de destino de hg clone para obtener el nombre de repositorio correcto. Pero parece que el éxito de la importación es sensible a una interacción entre la raíz de especificaciones del cliente Perforce y la carpeta de destino dada como este argumento final para hg clone.

Básicamente, asegúrese de que estas carpetas no se superpongan.

Dependiendo de los ficheros en Perforce, que puede trabajo si usted tiene un solapamiento, pero que podría estar fijándose una meta para todo un montón de problemas en el futuro.

La recomendación es mantener las carpetas separadas.Mi problema era que no quería tomar el nombre de la carpeta predeterminada de la carpeta hg como el nombre de la especificación del cliente Perforce, que es lo que hace si no proporciona una carpeta de destino. Pero, posiblemente debido a un error, si proporciona la carpeta de destino, entonces tiene para que coincida con la raíz de las especificaciones del cliente. Debido a este comportamiento, había asumido que las carpetas en realidad tenían que ser las mismas.

En Mercurial es seguro cambiar el nombre de la carpeta de nivel superior después de que se haya creado el repositorio. Entonces, si no desea que el nombre sea dictado por el nombre de la especificación del cliente de Perforce, entonces puede cambiar el nombre después. Ese es el enfoque que tomé.

Espero que esto ayude a otros a intentar sumergir los dedos de sus pies en las aguas de Mercurial.

Actualización Frank ha actualizado la extensión Perfarce para atrapar mejor esta carcasa. Obtenga lo último del Perfarce repository.

Cuestiones relacionadas