[PATCH 1/2] git-p4: Improve rename detection support.
From: Vitor Antunes <hidden>
Date: 2016-06-15 22:50:28
Subsystem:
the rest · Maintainer:
Linus Torvalds
Only open files for edit after integrating if the SHA1 of source and destination differ from each other. Add git config option detectRenames to allow permanent rename detection. This options should be set to a true/false value. Signed-off-by: Vitor Antunes <redacted> --- contrib/fast-import/git-p4 | 11 +++++++++-- 1 files changed, 9 insertions(+), 2 deletions(-)
diff --git a/contrib/fast-import/git-p4 b/contrib/fast-import/git-p4
index 04ce7e3..9fb480a 100755
--- a/contrib/fast-import/git-p4
+++ b/contrib/fast-import/git-p4@@ -613,7 +613,13 @@ class P4Submit(Command): def applyCommit(self, id): print "Applying %s" % (read_pipe("git log --max-count=1 --pretty=oneline %s" % id)) - diffOpts = ("", "-M")[self.detectRename] + + detectRenames = gitConfig("git-p4.detectRenames") + if len(detectRenames) and detectRenames.lower() != "false" > 0: + diffOpts = "-M" + else: + diffOpts = ("", "-M")[self.detectRename] + diff = read_pipe_lines("git diff-tree -r %s \"%s^\" \"%s\"" % (diffOpts, id, id)) filesToAdd = set() filesToDelete = set()
@@ -640,7 +646,8 @@ class P4Submit(Command): elif modifier == "R": src, dest = diff['src'], diff['dst'] p4_system("integrate -Dt \"%s\" \"%s\"" % (src, dest)) - p4_system("edit \"%s\"" % (dest)) + if diff['src_sha1'] != diff['dst_sha1']: + p4_system("edit \"%s\"" % (dest)) if isModeExecChanged(diff['src_mode'], diff['dst_mode']): filesToChangeExecBit[dest] = diff['dst_mode'] os.unlink(dest)
--
1.7.2.3