зеркало из https://github.com/microsoft/git.git
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>
This commit is contained in:
Родитель
2e2aa8d903
Коммит
ce425eb4e1
13
git-p4.py
13
git-p4.py
|
@ -544,12 +544,7 @@ def getGitTags():
|
|||
gitTags.add(tag)
|
||||
return gitTags
|
||||
|
||||
def diffTreePattern():
|
||||
# This is a simple generator for the diff tree regex pattern. This could be
|
||||
# a class variable if this and parseDiffTreeEntry were a part of a class.
|
||||
pattern = re.compile(':(\d+) (\d+) (\w+) (\w+) ([A-Z])(\d+)?\t(.*?)((\t(.*))|$)')
|
||||
while True:
|
||||
yield pattern
|
||||
_diff_tree_pattern = None
|
||||
|
||||
def parseDiffTreeEntry(entry):
|
||||
"""Parses a single diff tree entry into its component elements.
|
||||
|
@ -570,7 +565,11 @@ def parseDiffTreeEntry(entry):
|
|||
|
||||
If the pattern is not matched, None is returned."""
|
||||
|
||||
match = diffTreePattern().next().match(entry)
|
||||
global _diff_tree_pattern
|
||||
if not _diff_tree_pattern:
|
||||
_diff_tree_pattern = re.compile(':(\d+) (\d+) (\w+) (\w+) ([A-Z])(\d+)?\t(.*?)((\t(.*))|$)')
|
||||
|
||||
match = _diff_tree_pattern.match(entry)
|
||||
if match:
|
||||
return {
|
||||
'src_mode': match.group(1),
|
||||
|
|
Загрузка…
Ссылка в новой задаче