From: Tor Arvid Lund Date: Mon, 21 Feb 2011 09:40:32 GMT Subject: Re: [PATCH v2 1/2] git-p4: Improve rename detection support Message-ID: In-Reply-To: <1298164705-5366-2-git-send-email-vitor.hda@gmail.com> On Sun, Feb 20, 2011 at 2:18 AM, Vitor Antunes 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 > Acked-by: Pete Wyckoff Acked-by: Tor Arvid Lund > --- >  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 > >