Re: [PATCH 1/2] git-p4: Improve rename detection support.
From: Pete Wyckoff <hidden>
Date: 2016-06-15 22:50:30
vitor.hda@gmail.com wrote on Sun, 30 Jan 2011 23:19 +0000:
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.
I like the idea.
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]
The comparisons confuse me. detectRenames != "false" > 0 ?
How about just detectRenames == "true"?
You could rename the existing self.detectRename to add an "s" so
it all makes a bit more sense.
if not self.detectRenames:
# not explicitly set, check the config variable
b = gitConfig("git-p4.detectRenames")
if b == "true":
self.detectRenames = "-M"
if self.detectRenames:
diffOpts = "-M"
else:
diffOpts = ""
quoted hunk ↗ jump to hunk
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)
If you rename the file and also cause its perms to change (say add +x), does it still work if dest is not open? -- Pete