* [PATCH v2 0/2] Improvements to rename and copy detection
@ 2011-02-20 1:18 Vitor Antunes
2011-02-20 1:18 ` [PATCH v2 1/2] git-p4: Improve rename detection support Vitor Antunes
2011-02-20 1:18 ` [PATCH v2 2/2] git-p4: Add copy " Vitor Antunes
0 siblings, 2 replies; 4+ messages in thread
From: Vitor Antunes @ 2011-02-20 1:18 UTC (permalink / raw)
To: Junio C Hamano; +Cc: Vitor Antunes, Pete Wyckoff, Tor Arvid Lund, git
I'm resending this set of patches because the last set I prepared did not
contain the correct patches. This new set should make everything clearer.
Included are the changes proposed by Pete and Tor, as well as Pete's
acknowledge of both patches.
Vitor Antunes (2):
git-p4: Improve rename detection support
git-p4: Add copy detection support
contrib/fast-import/git-p4 | 35 +++++++++++++++++++++++++++++++----
1 files changed, 31 insertions(+), 4 deletions(-)
--
1.7.4.1
^ permalink raw reply [flat|nested] 4+ messages in thread
* [PATCH v2 1/2] git-p4: Improve rename detection support
2011-02-20 1:18 [PATCH v2 0/2] Improvements to rename and copy detection Vitor Antunes
@ 2011-02-20 1:18 ` Vitor Antunes
2011-02-21 9:40 ` Tor Arvid Lund
2011-02-20 1:18 ` [PATCH v2 2/2] git-p4: Add copy " Vitor Antunes
1 sibling, 1 reply; 4+ messages in thread
From: Vitor Antunes @ 2011-02-20 1:18 UTC (permalink / raw)
To: Junio C Hamano; +Cc: Vitor Antunes, Pete Wyckoff, Tor Arvid Lund, git
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.
Rename "detectRename" variable to "detectRenames" to make it more coherent with
the description in git man pages, which always use plural.
Signed-off-by: Vitor Antunes <vitor.hda@gmail.com>
Acked-by: Pete Wyckoff <pw@padd.com>
---
contrib/fast-import/git-p4 | 19 +++++++++++++++----
1 files changed, 15 insertions(+), 4 deletions(-)
diff --git a/contrib/fast-import/git-p4 b/contrib/fast-import/git-p4
index a92beb6..b0da28a 100755
--- a/contrib/fast-import/git-p4
+++ b/contrib/fast-import/git-p4
@@ -543,13 +543,13 @@ class P4Submit(Command):
self.options = [
optparse.make_option("--verbose", dest="verbose", action="store_true"),
optparse.make_option("--origin", dest="origin"),
- optparse.make_option("-M", dest="detectRename", action="store_true"),
+ optparse.make_option("-M", dest="detectRenames", action="store_true"),
]
self.description = "Submit changes from git to the perforce depot."
self.usage += " [name of git branch to submit into perforce depot]"
self.interactive = True
self.origin = ""
- self.detectRename = False
+ self.detectRenames = False
self.verbose = False
self.isWindows = (platform.system() == "Windows")
@@ -613,7 +613,16 @@ 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]
+
+ if not self.detectRenames:
+ # If not explicitly set check the config variable
+ self.detectRenames = gitConfig("git-p4.detectRenames").lower() == "true"
+
+ if self.detectRenames:
+ diffOpts = "-M"
+ else:
+ diffOpts = ""
+
diff = read_pipe_lines("git diff-tree -r %s \"%s^\" \"%s\"" % (diffOpts, id, id))
filesToAdd = set()
filesToDelete = set()
@@ -640,8 +649,10 @@ 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']):
+ p4_system("edit \"%s\"" % (dest))
filesToChangeExecBit[dest] = diff['dst_mode']
os.unlink(dest)
editedFiles.add(dest)
--
1.7.4.1
^ permalink raw reply related [flat|nested] 4+ messages in thread
* [PATCH v2 2/2] git-p4: Add copy detection support
2011-02-20 1:18 [PATCH v2 0/2] Improvements to rename and copy detection Vitor Antunes
2011-02-20 1:18 ` [PATCH v2 1/2] git-p4: Improve rename detection support Vitor Antunes
@ 2011-02-20 1:18 ` Vitor Antunes
1 sibling, 0 replies; 4+ messages in thread
From: Vitor Antunes @ 2011-02-20 1:18 UTC (permalink / raw)
To: Junio C Hamano; +Cc: Vitor Antunes, Pete Wyckoff, Tor Arvid Lund, git
Add new config options:
git-p4.detectCopies - Enable copy detection.
git-p4.detectCopiesHarder - Find copies harder.
The detectCopies option should be set to a true/false value.
The detectCopiesHarder option should be set to true/false value.
P4Submit can now process diff-tree C status and integrate files accordingly.
Signed-off-by: Vitor Antunes <vitor.hda@gmail.com>
Acked-by: Pete Wyckoff <pw@padd.com>
---
contrib/fast-import/git-p4 | 16 ++++++++++++++++
1 files changed, 16 insertions(+), 0 deletions(-)
diff --git a/contrib/fast-import/git-p4 b/contrib/fast-import/git-p4
index b0da28a..1b1fc76 100755
--- a/contrib/fast-import/git-p4
+++ b/contrib/fast-import/git-p4
@@ -623,6 +623,12 @@ class P4Submit(Command):
else:
diffOpts = ""
+ if gitConfig("git-p4.detectCopies").lower() == "true":
+ diffOpts += " -C"
+
+ if gitConfig("git-p4.detectCopiesHarder").lower() == "true":
+ diffOpts += " --find-copies-harder"
+
diff = read_pipe_lines("git diff-tree -r %s \"%s^\" \"%s\"" % (diffOpts, id, id))
filesToAdd = set()
filesToDelete = set()
@@ -646,6 +652,16 @@ class P4Submit(Command):
filesToDelete.add(path)
if path in filesToAdd:
filesToAdd.remove(path)
+ elif modifier == "C":
+ src, dest = diff['src'], diff['dst']
+ p4_system("integrate -Dt \"%s\" \"%s\"" % (src, dest))
+ if diff['src_sha1'] != diff['dst_sha1']:
+ p4_system("edit \"%s\"" % (dest))
+ if isModeExecChanged(diff['src_mode'], diff['dst_mode']):
+ p4_system("edit \"%s\"" % (dest))
+ filesToChangeExecBit[dest] = diff['dst_mode']
+ os.unlink(dest)
+ editedFiles.add(dest)
elif modifier == "R":
src, dest = diff['src'], diff['dst']
p4_system("integrate -Dt \"%s\" \"%s\"" % (src, dest))
--
1.7.4.1
^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [PATCH v2 1/2] git-p4: Improve rename detection support
2011-02-20 1:18 ` [PATCH v2 1/2] git-p4: Improve rename detection support Vitor Antunes
@ 2011-02-21 9:40 ` Tor Arvid Lund
0 siblings, 0 replies; 4+ messages in thread
From: Tor Arvid Lund @ 2011-02-21 9:40 UTC (permalink / raw)
To: Vitor Antunes; +Cc: Junio C Hamano, Pete Wyckoff, git
On Sun, Feb 20, 2011 at 2:18 AM, Vitor Antunes <vitor.hda@gmail.com> wrote:
> 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.
> Rename "detectRename" variable to "detectRenames" to make it more coherent with
> the description in git man pages, which always use plural.
>
> Signed-off-by: Vitor Antunes <vitor.hda@gmail.com>
> Acked-by: Pete Wyckoff <pw@padd.com>
Acked-by: Tor Arvid Lund <torarvid@gmail.com>
> ---
> contrib/fast-import/git-p4 | 19 +++++++++++++++----
> 1 files changed, 15 insertions(+), 4 deletions(-)
>
> diff --git a/contrib/fast-import/git-p4 b/contrib/fast-import/git-p4
> index a92beb6..b0da28a 100755
> --- a/contrib/fast-import/git-p4
> +++ b/contrib/fast-import/git-p4
> @@ -543,13 +543,13 @@ class P4Submit(Command):
> self.options = [
> optparse.make_option("--verbose", dest="verbose", action="store_true"),
> optparse.make_option("--origin", dest="origin"),
> - optparse.make_option("-M", dest="detectRename", action="store_true"),
> + optparse.make_option("-M", dest="detectRenames", action="store_true"),
> ]
> self.description = "Submit changes from git to the perforce depot."
> self.usage += " [name of git branch to submit into perforce depot]"
> self.interactive = True
> self.origin = ""
> - self.detectRename = False
> + self.detectRenames = False
> self.verbose = False
> self.isWindows = (platform.system() == "Windows")
>
> @@ -613,7 +613,16 @@ 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]
> +
> + if not self.detectRenames:
> + # If not explicitly set check the config variable
> + self.detectRenames = gitConfig("git-p4.detectRenames").lower() == "true"
> +
> + if self.detectRenames:
> + diffOpts = "-M"
> + else:
> + diffOpts = ""
> +
> diff = read_pipe_lines("git diff-tree -r %s \"%s^\" \"%s\"" % (diffOpts, id, id))
> filesToAdd = set()
> filesToDelete = set()
> @@ -640,8 +649,10 @@ 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']):
> + p4_system("edit \"%s\"" % (dest))
> filesToChangeExecBit[dest] = diff['dst_mode']
> os.unlink(dest)
> editedFiles.add(dest)
> --
> 1.7.4.1
>
>
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2011-02-21 9:40 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-02-20 1:18 [PATCH v2 0/2] Improvements to rename and copy detection Vitor Antunes
2011-02-20 1:18 ` [PATCH v2 1/2] git-p4: Improve rename detection support Vitor Antunes
2011-02-21 9:40 ` Tor Arvid Lund
2011-02-20 1:18 ` [PATCH v2 2/2] git-p4: Add copy " Vitor Antunes
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).