historial de files clon de git p4, incluido el historial de integración

tl; dr; Deseo conservar el historial de los files migrados a git, incluido el historial de integraciones anteriores. es decir, git p4 clone tal manera que git log --all --follow <file> == p4 filelog -li <file>

Versión más larga:

Tengo un proyecto en perforce que incluye files que se han movido y copydo en otros proyectos en el repository en el pasado.

 p4 filelog -l <file2> 

muestra el historial del file ( -l para la forma larga) en su position actual. Los files se mueven (se copyn) con la p4 integrate por ejemplo

 p4 integrate <file1> file2> 

Para ver el historial antes del movimiento, usa:

 p4 filelog -li <file2> 

El command equivalente de git es:

 git log --follow <file2> 

Ahora si clono parte del proyecto perforce usando:

 git p4 clone //depot/some/path/...@all . 

Obtengo el historial completo del file como lo haría para el mismo file, su location de directory actual a la perforce .

( @all una única confirmación para el file en ahora sin @all ver @all get toda la historia de los files con git-p4 )

¿Cómo obtengo el git log --follow <file2> para darme el historial completo que habría visto con el p4 filelog -li ?

Puede observar que el historial de files es less útil por sí solo que el historial del repository. Por ejemplo, un file único puede incluso no comstackr sin otros files en la versión correcta en la location relativa correcta. Sin embargo, el repository completo contiene el historial de muchos otros proyectos no relacionados que no deben includese en el repository git. No quiero podar el repository o la historia de injertos para que sea un process largo y doloroso (soy relativamente nuevo en git y quiero evitar las esquinas más oscuras por ahora).

¿Qué se necesita para agregar una opción a git p4 clone que copy el historial de files a través de integraciones para que –follow works?

Esto es muy similar a git p4: migrar el historial completo, incluido el historial de integración

A diferencia de esa pregunta, siempre moví los files dentro del repository usando la integración p4 para que el historial del file grabado por forzado permanezca intacto. Eso debería facilitar mi tarea. Aunque no estoy seguro si lo hace en la práctica.

Git funciona de forma diferente a Perforce y no rastrea copys de files ni cambia el nombre, por lo que no hay forma de importar esa información a través de git p4. En cambio, Git puede identificar los nombres y / o copys de files automáticamente al analizar los commits. Obviamente, esto requiere más procesamiento, por lo que no está habilitado por defecto.

Lo que está buscando son los arguments -M , -C y --find-copies-harder . En general, desea utilizar los dos primeros arguments en el formatting -M85 , donde el número 85 representa la cantidad de código que debe ser igual para considerar que los files son los mismos. Esto permite detectar files que fueron renombrados y también modificados en la misma confirmación. Tenga en count que si habilita -C entonces no necesita habilitar -M .

Git p4 proporciona los parameters de configuration detectCopies y detectCopiesHarder para detectar esto y enviar los cambios utilizando la p4 integrate de p4 delete lugar de la p4 delete de p4 delete y / o la p4 add .