git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH 6/6] git-p4: Resolve RCS keywords in binary

From
Luke Diamand <luke@diamand.org>
Date
Dec 10, 2021, 07:57 UTC
Message-ID
<CAE5ih7_gvbOwvoO4deqDm_8Nk9XWzrdHGHEsgdiEb7+7YxtGwg@mail.gmail.com>
In-Reply-To
<20211209201029.136886-7-jholdsworth@nvidia.com>
On Thu, 9 Dec 2021 at 20:11, Joel Holdsworth <jholdsworth@nvidia.com> wrote:
Show 16 quoted lines
>
> Signed-off-by: Joel Holdsworth <jholdsworth@nvidia.com>
> ---
>  git-p4.py | 31 ++++++++++---------------------
>  1 file changed, 10 insertions(+), 21 deletions(-)
>
> diff --git a/git-p4.py b/git-p4.py
> index c362a5fa38..87e6685eb6 100755
> --- a/git-p4.py
> +++ b/git-p4.py
> @@ -46,6 +46,9 @@
>
>  p4_access_checked = False
>
> +re_ko_keywords = re.compile(rb'\$(Id|Header)(:[^$\n]+)?\$')
> +re_k_keywords = re.compile(rb'\$(Id|Header|Author|Date|DateTime|Change|File|Revision)(:[^$\n]+)?\$')

I'm not sure what's going on here, but it does not look like just turning off support for python2.x.

Show 47 quoted lines
> +
>  def p4_build_cmd(cmd):
>      """Build a suitable p4 command line.
>
> @@ -532,20 +535,12 @@ def p4_type(f):
>  #
>  def p4_keywords_regexp_for_type(base, type_mods):
>      if base in ("text", "unicode", "binary"):
> -        kwords = None
>          if "ko" in type_mods:
> -            kwords = 'Id|Header'
> +            return re_ko_keywords
>          elif "k" in type_mods:
> -            kwords = 'Id|Header|Author|Date|DateTime|Change|File|Revision'
> +            return re_k_keywords
>          else:
>              return None
> -        pattern = r"""
> -            \$              # Starts with a dollar, followed by...
> -            (%s)            # one of the keywords, followed by...
> -            (:[^$\n]+)?     # possibly an old expansion, followed by...
> -            \$              # another dollar
> -            """ % kwords
> -        return pattern
>      else:
>          return None
>
> @@ -2035,11 +2030,10 @@ def applyCommit(self, id):
>                  kwfiles = {}
>                  for file in editedFiles | filesToDelete:
>                      # did this file's delta contain RCS keywords?
> -                    pattern = p4_keywords_regexp_for_file(file)
> +                    regexp = p4_keywords_regexp_for_file(file)
>
> -                    if pattern:
> +                    if regexp:
>                          # this file is a possibility...look for RCS keywords.
> -                        regexp = re.compile(pattern, re.VERBOSE)
>                          for line in read_pipe_lines(["git", "diff", "%s^..%s" % (id, id), file]):
>                              if regexp.search(line):
>                                  if verbose:
> @@ -2968,14 +2962,9 @@ def streamOneP4File(self, file, contents):
>              print("\nIgnoring apple filetype file %s" % file['depotFile'])
>              return
>
> -        # Note that we do not try to de-mangle keywords on utf16 files,
> -        # even though in theory somebody may want that.

This comment appears to have been stripped out, does that mean that we now *do* try to demangle keywords on utf16?

Show 15 quoted lines
> -        pattern = p4_keywords_regexp_for_type(type_base, type_mods)
> -        if pattern:
> -            regexp = re.compile(pattern, re.VERBOSE)
> -            text = ''.join(c.decode() for c in contents)
> -            text = regexp.sub(r'$\1$', text)
> -            contents = [text.encode()]
> +        regexp = p4_keywords_regexp_for_type(type_base, type_mods)
> +        if regexp:
> +            contents = [regexp.sub(rb'$\1$', c) for c in contents]
>
>          if self.largeFileSystem:
>              (git_mode, contents) = self.largeFileSystem.processContent(git_mode, relPath, contents)
> --
> 2.33.0
>
Previous: Joel HoldsworthNext: Joel Holdsworth
Message 17 of 31 in “Transition git-p4.py to support Python 3 only”
  1. 0/6 Transition git-p4.py to support Python 3 onlyJoel Holdsworth, Dec 9, 2021
  2. 1/6 git-p4: Always pass cmd arguments to subprocess as a python listsJoel Holdsworth, Dec 9, 2021
  3. Junio C HamanoDec 9, 2021
  4. 2/6 git-p4: Don't print shell commands as python listsJoel Holdsworth, Dec 9, 2021
  5. 3/6 git-p4: Removed support for Python 2Joel Holdsworth, Dec 9, 2021
  6. Junio C HamanoDec 9, 2021
  7. rsbecker@nexbridge.comDec 9, 2021
  8. David AguilarDec 10, 2021
  9. Joel HoldsworthDec 10, 2021
  10. 4/6 git-p4: Decode byte strings before printingJoel Holdsworth, Dec 9, 2021
  11. Junio C HamanoDec 9, 2021
  12. Fabian StelzerDec 10, 2021
  13. Joel HoldsworthDec 10, 2021
  14. Joel HoldsworthDec 10, 2021
  15. 5/6 git-p4: Eliminate decode_stream and encode_streamJoel Holdsworth, Dec 9, 2021
  16. 6/6 git-p4: Resolve RCS keywords in binaryJoel Holdsworth, Dec 9, 2021
  17. Luke DiamandDec 10, 2021
  18. Joel HoldsworthDec 10, 2021
  19. Ævar Arnfjörð BjarmasonDec 10, 2021
  20. Joel HoldsworthDec 10, 2021
  21. Ævar Arnfjörð BjarmasonDec 10, 2021
  22. Junio C HamanoDec 10, 2021
  23. rsbecker@nexbridge.comDec 10, 2021
  24. Elijah NewrenDec 11, 2021
  25. Luke DiamandDec 12, 2021
  26. Luke DiamandDec 10, 2021
  27. Joel HoldsworthDec 10, 2021
  28. Luke DiamandDec 11, 2021
  29. Joel HoldsworthDec 13, 2021
  30. Junio C HamanoDec 13, 2021
  31. Joel HoldsworthDec 13, 2021

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.