git-p4: simplify regex pattern generation for parsing diff-tree
It is not clear why a generator was used to create the regex used to parse git-diff-tree output; I assume an early implementation required it, but is not part of the mainline change. Simply use a lazily initialized global instead. Signed-off-by: Yang Zhao <yang.zhao@skyboxlabs.com> Reviewed-by: Ben Keene <seraphire@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Yang Zhao committed
Dec 13, 2019 at 15:52 UTC
ce425eb4e16e5038ffc322cbafc80d641b0ad5eb
1 file changed
+6
-7
git-p4.py
+6
-7
@@ -544,12 +544,7 @@ def getGitTags():
544
gitTags.add(tag)
545
return gitTags
546
547
-def diffTreePattern():
548
- # This is a simple generator for the diff tree regex pattern. This could be
549
- # a class variable if this and parseDiffTreeEntry were a part of a class.
550
- pattern = re.compile(':(\d+) (\d+) (\w+) (\w+) ([A-Z])(\d+)?\t(.*?)((\t(.*))|$)')
551
- while True:
552
- yield pattern
547
+_diff_tree_pattern = None
548
549
def parseDiffTreeEntry(entry):
550
"""Parses a single diff tree entry into its component elements.
@@ -570,7 +565,11 @@ def parseDiffTreeEntry(entry):
565
566
If the pattern is not matched, None is returned."""
567
573
- match = diffTreePattern().next().match(entry)
568
+ global _diff_tree_pattern
569
+ if not _diff_tree_pattern:
570
+ _diff_tree_pattern = re.compile(':(\d+) (\d+) (\w+) (\w+) ([A-Z])(\d+)?\t(.*?)((\t(.*))|$)')
571
+
572
+ match = _diff_tree_pattern.match(entry)
573
if match:
574
return {
575
'src_mode': match.group(1),