Fw: PATCH: git-p4 optional handling of RCS keywords [was: Re: git-p4 and keyword expansion]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



For some reason, my mail did not go through the git mailing list, I am resending. Please excuse if it is a duplicate!



----- Forwarded Message ----
> From: dhruva <dhruva@xxxxxxxxx>
> To: Simon Hausmann <simon@xxxxxx>
> Cc: GIT SCM <git@xxxxxxxxxxxxxxx>; Jing Xue <jingxue@xxxxxxxxxxxxxxxxx>
> Sent: Wednesday, 10 September, 2008 10:48:23 AM
> Subject: Re: PATCH: git-p4 optional handling of RCS keywords [was: Re: git-p4 and keyword expansion]
> 
> My earlier patch has an error... (I have almost always stumbled on first patch!)
> 
> here is the fixed one:
> 
> diff --git a/contrib/fast-import/git-p4 b/contrib/fast-import/git-p4
> index 2216cac..c67b2e5 100755
> --- a/contrib/fast-import/git-p4
> +++ b/contrib/fast-import/git-p4
> @@ -16,6 +16,9 @@ from sets import Set;
> 
> verbose = False
> 
> +# Handling of RCS keyowrds. To ensure backward compatibility, the default
> +# is to strip keywords. Default behavior is controlled here
> +kwstrip = True
> 
> def p4_build_cmd(cmd):
>      """Build a suitable p4 command line.
> @@ -975,10 +978,11 @@ class P4Sync(Command):
>                  sys.stderr.write("p4 print fails with: %s\n" % repr(stat))
>                  continue
> 
> -            if stat['type'] in ('text+ko', 'unicode+ko', 'binary+ko'):
> -                text = re.sub(r'(?i)\$(Id|Header):[^$]*\$',r'$\1$', text)
> -            elif stat['type'] in ('text+k', 'ktext', 'kxtext', 'unicode+k', 
> 'binary+k'):
> -                text = 
> re.sub(r'\$(Id|Header|Author|Date|DateTime|Change|File|Revision):[^$]*\$',r'$\1$', 
> text)
> +            if kwstrip:
> +                if stat['type'] in ('text+ko', 'unicode+ko', 'binary+ko'):
> +                    text = re.sub(r'(?i)\$(Id|Header):[^$]*\$',r'$\1$', text)
> +                elif stat['type'] in ('text+k', 'ktext', 'kxtext', 'unicode+k', 
> 'binary+k'):
> +                    text = 
> re.sub(r'\$(Id|Header|Author|Date|DateTime|Change|File|Revision):[^$]*\$',r'$\1$', 
> text)
> 
>              contents[stat['depotFile']] = text
> 
> @@ -1850,6 +1854,16 @@ def main():
>          (cmd, args) = parser.parse_args(sys.argv[2:], cmd);
>      global verbose
>      verbose = cmd.verbose
> +
> +    global kwstrip
> +    kwval = gitConfig("git-p4.kwstrip")
> +    if len(kwval) > 0:
> +       kwval = kwval.lower();
> +        if "false" == kwval:
> +            kwstrip = False
> +        elif "true" == kwval:
> +            kwstrip = True
> +
>      if cmd.needsGit:
>          if cmd.gitdir == None:
>              cmd.gitdir = os.path.abspath(".git")
> 
> 
> 
> -dhruva
> 
> 
> ----- Original Message ----
> > From: dhruva 
> > To: Simon Hausmann 
> > Cc: GIT SCM ; Jing Xue 
> > Sent: Wednesday, 10 September, 2008 10:43:26 AM
> > Subject: PATCH: git-p4 optional handling of RCS keywords [was: Re: git-p4 and 
> keyword expansion]
> > 
> > Hello,
> > I would like to submit my first patch to the git community.
> > 
> > I have introduced a new configuration option to 'git-p4' "kwstrip". If 
> enabled, 
> > the RCS keywords gets unexpanded like it is done with out the patch and 
> > disabling it explicitly retains the RCS keywords as in the original p4 source. 
> 
> > The default (in the absence) is 'false' to ensure backward compatibility. To 
> > override, you can put the following lines in your '.gitconfig' file..
> > 
> > [git-p4]
> >         kwstrip = false
> > 
> > 
> > 
> > The patch to git-p4 (based on origin/next branch):
> > 
> > diff --git a/contrib/fast-import/git-p4 b/contrib/fast-import/git-p4
> > index 2216cac..ad37d0b 100755
> > --- a/contrib/fast-import/git-p4
> > +++ b/contrib/fast-import/git-p4
> > @@ -16,6 +16,9 @@ from sets import Set;
> > 
> > verbose = False
> > 
> > +# Handling of RCS keyowrds. To ensure backward compatibility, the default
> > +# is to strip keywords. Default behavior is controlled here
> > +kwstrip = True
> > 
> > def p4_build_cmd(cmd):
> >      """Build a suitable p4 command line.
> > @@ -975,10 +978,11 @@ class P4Sync(Command):
> >                  sys.stderr.write("p4 print fails with: %s\n" % repr(stat))
> >                  continue
> > 
> > -            if stat['type'] in ('text+ko', 'unicode+ko', 'binary+ko'):
> > -                text = re.sub(r'(?i)\$(Id|Header):[^$]*\$',r'$\1$', text)
> > -            elif stat['type'] in ('text+k', 'ktext', 'kxtext', 'unicode+k', 
> > 'binary+k'):
> > -                text = 
> > 
> re.sub(r'\$(Id|Header|Author|Date|DateTime|Change|File|Revision):[^$]*\$',r'$\1$', 
> 
> > text)
> > +            if kwstrip:
> > +                if stat['type'] in ('text+ko', 'unicode+ko', 'binary+ko'):
> > +                    text = re.sub(r'(?i)\$(Id|Header):[^$]*\$',r'$\1$', text)
> > +                elif stat['type'] in ('text+k', 'ktext', 'kxtext', 
> 'unicode+k', 
> > 'binary+k'):
> > +                    text = 
> > 
> re.sub(r'\$(Id|Header|Author|Date|DateTime|Change|File|Revision):[^$]*\$',r'$\1$', 
> 
> > text)
> > 
> >              contents[stat['depotFile']] = text
> > 
> > @@ -1850,6 +1854,16 @@ def main():
> >          (cmd, args) = parser..parse_args(sys..argv[2:], cmd);
> >      global verbose
> >      verbose = cmd.verbose
> > +
> > +    global kwstrip
> > +    kwval = gitConfig("git-p4.kwstrip")
> > +    if len(kwval) > 0:
> > +       kwval = kwval.lower();
> > +        if "false" == kwval:
> > +            kwstrip = False
> > +        else if "true" == kwval:
> > +            kwstrip = True
> > +
> >      if cmd.needsGit:
> >          if cmd.gitdir == None:
> >              cmd.gitdir = os.path.abspath(".git")
> > 
> > 
> > 
> > ----- Original Message ----
> > > From: Jing Xue 
> > > To: dhruva 
> > > Cc: GIT SCM 
> > > Sent: Tuesday, 9 September, 2008 11:08:48 PM
> > > Subject: Re: git-p4 and keyword expansion
> > > 
> > > On Tue, Sep 09, 2008 at 04:44:11PM +0530, dhruva wrote:
> > > > Hello,
> > > 
> > > Hi,
> > > 
> > > > I feel the configuration must be set the first time only, when you
> > > > clone using 'git-p4 clone'. Altering it in between will be very
> > > > confusing!
> > > > Ideally, the setting must be transferred when the git repo
> > > > (cloned from git-p4) is cloned using standard git. Is it something
> > > > possible (well, I am new to git and am exploring. Any extra
> > > > information would help).
> > > >
> > > > My proposal is as follows:
> > > > 1. Add an extra command line argument to 'git-p4 clone' to either  
> > > > enable/disable keyword expansion
> > > > 2. Store that information under the .git folder in a file that is  
> > > > copied when someone clones that repo
> > > > 3. Use the stored information in future 'git-p4 sync/rebase'
> > > 
> > > Any way to make it optional would be welcome by me.
> > 
> > Done
> > 
> > 
> > > If you do come up with a "formal" patch, you might want to
> > > explicitly add Simon Hausmann to the To list, for he's the git-p4
> > > author.
> > 
> > Done
> > 
> > -dhruva
> > 
> > 
> > 
> >       Add more friends to your messenger and enjoy! Go to 
> > http://in.messenger.yahoo.com/invite/
> > 
> > --
> > To unsubscribe from this list: send the line "unsubscribe git" in
> > the body of a message to majordomo@xxxxxxxxxxxxxxx
> > More majordomo info at  http://vger.kernel.org/majordomo-info.html
> 
> 
> 
>       Unlimited freedom, unlimited storage. Get it now, on 
> http://help.yahoo.com/l/in/yahoo/mail/yahoomail/tools/tools-08.html/



      Unlimited freedom, unlimited storage. Get it now, on http://help.yahoo.com/l/in/yahoo/mail/yahoomail/tools/tools-08.html/

--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]

  Powered by Linux