Perforce línea de command unificada diff de una list de cambios archivada

Conozco varios ChangeList de mi amigo. Quiero pasar este número CL a un script Bash, que generará una lectura de file diff para el progtwig patch (que recreará el cambio en el repository git).

Hasta ahora tengo esto:

 function p4_shelved_cl_to_diff() { p4 describe -S -du $1 > p4_diff.patch } 

Genera el diff, pero los encabezados están en formatting p4:

 ==== //p4_repo/dir_in_repo/dir/file.cpp#123 (text) === 

mientras que deberían estar en

 --- dir/file.cpp +++ dir/file.cpp 

Entonces, lo que estoy buscando es una syntax especial de p4 (en google ampliamente, manual p4 comprobado – poca esperanza) o más bien un script sed / awk / lo que hará el cambio para mí .

Alguna idea, o tal vez alguien tiene esto ya escrito?

Esta sustitución funciona para su ejemplo:

 $ sed 's|^====.*/\([^/]*/[^#]*\).*===$|--- \1\n+++ \1|' infile --- dir/file.cpp +++ dir/file.cpp 

Funciona en líneas que comienzan y terminan con ==== (en realidad termina con === , pero creo que es solo un error tipográfico en la pregunta, y también funcionará para las líneas que terminan con ==== ).

Captura todo entre el penúltimo / y el # , luego agrega --- y +++ en líneas separadas.

Tenga en count que no he estudiado el formatting general de los encabezados de p4 diff, por lo que podría romperse en otros casos: la mejor solución general sería solucionar lo que genera los encabezados incorrectos.