This is an initial attempt to add a "format-patch" command to git-p4, following on from the earlier discussion about shelving. It uses the "p4 describe" command to generate the diff content and post-processes it enough to generate git-style patches. These can be fed to tools such as patch, or "git am". This is useful for "unshelving" a P4 changelist into your git tree, since the usual git subcommands (sync, clone) cannot easily read a shelved changelist: there is no good way to get from Perforce a consistent single revision against which to generate a diff using git fast-import, since Perforce doesn't have the concept of a repo revision. By default, it leaves the depot prefix in the patch, but using the option "--strip-depot-prefix" makes it suitable for "git am". Use it like this: $ git p4 format-patch 12345 >out.patch or $ mkdir patches $ git p4 format-patch --output patches 12345 12346 or $ git p4 format-patch --strip-depot-prefix 12347 >out.patch $ git am out.patch Limitations of "p4 describe" mean that this will not work reliably with binary files. There's no easy way around this. The change makes a small attempt to at least stop on binary files, but in the case of a file marked in P4 as "text", which contains binary deltas, the file will unavoidably come out corrupted. Luke Diamand (1): git-p4: add format-patch subcommand Documentation/git-p4.txt | 33 +++++ git-p4.py | 304 +++++++++++++++++++++++++++++++++++++++++++++-- t/t9832-make-patch.sh | 135 +++++++++++++++++++++ 3 files changed, 462 insertions(+), 10 deletions(-) create mode 100755 t/t9832-make-patch.sh -- 2.15.1.272.gc310869385