]> Git Repo - u-boot.git/blame - tools/patman/commit.py
Merge https://gitlab.denx.de/u-boot/custodians/u-boot-usb
[u-boot.git] / tools / patman / commit.py
CommitLineData
83d290c5 1# SPDX-License-Identifier: GPL-2.0+
0d24de9d
SG
2# Copyright (c) 2011 The Chromium OS Authors.
3#
0d24de9d
SG
4
5import re
6
7# Separates a tag: at the beginning of the subject from the rest of it
ed922275 8re_subject_tag = re.compile('([^:\s]*):\s*(.*)')
0d24de9d
SG
9
10class Commit:
11 """Holds information about a single commit/patch in the series.
12
13 Args:
14 hash: Commit hash (as a string)
15
16 Variables:
17 hash: Commit hash
18 subject: Subject line
19 tags: List of maintainer tag strings
20 changes: Dict containing a list of changes (single line strings).
21 The dict is indexed by change version (an integer)
22 cc_list: List of people to aliases/emails to cc on this commit
5c8fdd91 23 notes: List of lines in the commit (not series) notes
833e4192
DA
24 change_id: the Change-Id: tag that was stripped from this commit
25 and can be used to generate the Message-Id.
0d24de9d
SG
26 """
27 def __init__(self, hash):
28 self.hash = hash
29 self.subject = None
30 self.tags = []
31 self.changes = {}
32 self.cc_list = []
102061bd 33 self.signoff_set = set()
5c8fdd91 34 self.notes = []
833e4192 35 self.change_id = None
0d24de9d
SG
36
37 def AddChange(self, version, info):
38 """Add a new change line to the change list for a version.
39
40 Args:
41 version: Patch set version (integer: 1, 2, 3)
42 info: Description of change in this version
43 """
44 if not self.changes.get(version):
45 self.changes[version] = []
46 self.changes[version].append(info)
47
48 def CheckTags(self):
49 """Create a list of subject tags in the commit
50
51 Subject tags look like this:
52
0d99fe0f 53 propounder: fort: Change the widget to propound correctly
0d24de9d 54
0d99fe0f
SG
55 Here the tags are propounder and fort. Multiple tags are supported.
56 The list is updated in self.tag.
0d24de9d
SG
57
58 Returns:
59 None if ok, else the name of a tag with no email alias
60 """
61 str = self.subject
62 m = True
63 while m:
64 m = re_subject_tag.match(str)
65 if m:
66 tag = m.group(1)
67 self.tags.append(tag)
68 str = m.group(2)
69 return None
70
71 def AddCc(self, cc_list):
72 """Add a list of people to Cc when we send this patch.
73
74 Args:
75 cc_list: List of aliases or email addresses
76 """
77 self.cc_list += cc_list
102061bd
SG
78
79 def CheckDuplicateSignoff(self, signoff):
80 """Check a list of signoffs we have send for this patch
81
82 Args:
83 signoff: Signoff line
84 Returns:
85 True if this signoff is new, False if we have already seen it.
86 """
87 if signoff in self.signoff_set:
88 return False
89 self.signoff_set.add(signoff)
90 return True
This page took 0.248836 seconds and 4 git commands to generate.