summaryrefslogtreecommitdiff
path: root/contrib/fast-import/git-p4
diff options
context:
space:
mode:
authorLibravatar Simon Hausmann <simon@lst.de>2007-05-20 16:33:21 +0200
committerLibravatar Simon Hausmann <simon@lst.de>2007-05-20 16:33:21 +0200
commit47a130b7bf74b8f61d9fee01f5dbb745d8f44b29 (patch)
tree1e956c6da626d696789ab4435420bb8029c32013 /contrib/fast-import/git-p4
parentOops, not only /set/ gitdir on clone, also set it /correctly/ :) (diff)
downloadtgif-47a130b7bf74b8f61d9fee01f5dbb745d8f44b29.tar.xz
Use git format-patch and git apply --apply when extracting patches from git and
applying them to a Perforce checkout. This should make it possible to apply git commits with binary files that cannot be handled by path. Signed-off-by: Simon Hausmann <simon@lst.de>
Diffstat (limited to 'contrib/fast-import/git-p4')
-rwxr-xr-xcontrib/fast-import/git-p413
1 files changed, 8 insertions, 5 deletions
diff --git a/contrib/fast-import/git-p4 b/contrib/fast-import/git-p4
index 80d966fb30..0b1df09cb8 100755
--- a/contrib/fast-import/git-p4
+++ b/contrib/fast-import/git-p4
@@ -213,10 +213,13 @@ class P4Submit(Command):
else:
die("unknown modifier %s for %s" % (modifier, path))
- diffcmd = "git diff-tree -p --diff-filter=ACMRTUXB \"%s^\" \"%s\"" % (id, id)
- patchcmd = diffcmd + " | patch -p1"
+ diffcmd = "git format-patch -k --stdout \"%s^\"..\"%s\"" % (id, id)
+ patchcmd = diffcmd + " | git apply "
+ tryPatchCmd = diffcmd + "--check -"
+ applyPatchCmd = diffcmd + "--check --apply -"
+ print mypopen(diffcmd).read()
- if os.system(patchcmd + " --dry-run --silent") != 0:
+ if os.system(tryPatchCmd) != 0:
print "Unfortunately applying the change failed!"
print "What do you want to do?"
response = "x"
@@ -226,7 +229,7 @@ class P4Submit(Command):
print "Skipping! Good luck with the next patches..."
return
elif response == "a":
- os.system(patchcmd)
+ os.system(applyPatchCmd)
if len(filesToAdd) > 0:
print "You may also want to call p4 add on the following files:"
print " ".join(filesToAdd)
@@ -239,7 +242,7 @@ class P4Submit(Command):
print "Patch saved to patch.txt in %s !" % self.clientPath
die("Please resolve and submit the conflict manually and continue afterwards with git-p4 submit --continue")
- system(patchcmd)
+ system(applyPatchCmd)
for f in filesToAdd:
system("p4 add %s" % f)