diff options
Diffstat (limited to 'meta/lib')
| -rw-r--r-- | meta/lib/oe/buildhistory_analysis.py | 51 |
1 files changed, 34 insertions, 17 deletions
diff --git a/meta/lib/oe/buildhistory_analysis.py b/meta/lib/oe/buildhistory_analysis.py index 3a5b7b6b44..3e86a46a3f 100644 --- a/meta/lib/oe/buildhistory_analysis.py +++ b/meta/lib/oe/buildhistory_analysis.py | |||
| @@ -143,22 +143,25 @@ class ChangeRecord: | |||
| 143 | out += '\n '.join(list(diff)[2:]) | 143 | out += '\n '.join(list(diff)[2:]) |
| 144 | out += '\n --' | 144 | out += '\n --' |
| 145 | elif self.fieldname in img_monitor_files or '/image-files/' in self.path: | 145 | elif self.fieldname in img_monitor_files or '/image-files/' in self.path: |
| 146 | fieldname = self.fieldname | 146 | if self.filechanges or (self.oldvalue and self.newvalue): |
| 147 | if '/image-files/' in self.path: | 147 | fieldname = self.fieldname |
| 148 | fieldname = os.path.join('/' + self.path.split('/image-files/')[1], self.fieldname) | 148 | if '/image-files/' in self.path: |
| 149 | out = 'Changes to %s:\n ' % fieldname | 149 | fieldname = os.path.join('/' + self.path.split('/image-files/')[1], self.fieldname) |
| 150 | else: | 150 | out = 'Changes to %s:\n ' % fieldname |
| 151 | if outer: | 151 | else: |
| 152 | prefix = 'Changes to %s ' % self.path | 152 | if outer: |
| 153 | out = '(%s):\n ' % self.fieldname | 153 | prefix = 'Changes to %s ' % self.path |
| 154 | if self.filechanges: | 154 | out = '(%s):\n ' % self.fieldname |
| 155 | out += '\n '.join(['%s' % i for i in self.filechanges]) | 155 | if self.filechanges: |
| 156 | out += '\n '.join(['%s' % i for i in self.filechanges]) | ||
| 157 | else: | ||
| 158 | alines = self.oldvalue.splitlines() | ||
| 159 | blines = self.newvalue.splitlines() | ||
| 160 | diff = difflib.unified_diff(alines, blines, fieldname, fieldname, lineterm='') | ||
| 161 | out += '\n '.join(list(diff)) | ||
| 162 | out += '\n --' | ||
| 156 | else: | 163 | else: |
| 157 | alines = self.oldvalue.splitlines() | 164 | out = '' |
| 158 | blines = self.newvalue.splitlines() | ||
| 159 | diff = difflib.unified_diff(alines, blines, fieldname, fieldname, lineterm='') | ||
| 160 | out += '\n '.join(list(diff)) | ||
| 161 | out += '\n --' | ||
| 162 | else: | 165 | else: |
| 163 | out = '%s changed from "%s" to "%s"' % (self.fieldname, self.oldvalue, self.newvalue) | 166 | out = '%s changed from "%s" to "%s"' % (self.fieldname, self.oldvalue, self.newvalue) |
| 164 | 167 | ||
| @@ -169,7 +172,7 @@ class ChangeRecord: | |||
| 169 | for line in chg._str_internal(False).splitlines(): | 172 | for line in chg._str_internal(False).splitlines(): |
| 170 | out += '\n * %s' % line | 173 | out += '\n * %s' % line |
| 171 | 174 | ||
| 172 | return '%s%s' % (prefix, out) | 175 | return '%s%s' % (prefix, out) if out else '' |
| 173 | 176 | ||
| 174 | class FileChange: | 177 | class FileChange: |
| 175 | changetype_add = 'A' | 178 | changetype_add = 'A' |
| @@ -508,7 +511,8 @@ def compare_siglists(a_blob, b_blob, taskdiff=False): | |||
| 508 | return '\n'.join(out) | 511 | return '\n'.join(out) |
| 509 | 512 | ||
| 510 | 513 | ||
| 511 | def process_changes(repopath, revision1, revision2='HEAD', report_all=False, report_ver=False, sigs=False, sigsdiff=False): | 514 | def process_changes(repopath, revision1, revision2='HEAD', report_all=False, report_ver=False, |
| 515 | sigs=False, sigsdiff=False, exclude_path=None): | ||
| 512 | repo = git.Repo(repopath) | 516 | repo = git.Repo(repopath) |
| 513 | assert repo.bare == False | 517 | assert repo.bare == False |
| 514 | commit = repo.commit(revision1) | 518 | commit = repo.commit(revision1) |
| @@ -601,6 +605,19 @@ def process_changes(repopath, revision1, revision2='HEAD', report_all=False, rep | |||
| 601 | elif chg.path == chg2.path and chg.path.startswith('packages/') and chg2.fieldname in ['PE', 'PV', 'PR']: | 605 | elif chg.path == chg2.path and chg.path.startswith('packages/') and chg2.fieldname in ['PE', 'PV', 'PR']: |
| 602 | chg.related.append(chg2) | 606 | chg.related.append(chg2) |
| 603 | 607 | ||
| 608 | # filter out unwanted paths | ||
| 609 | if exclude_path: | ||
| 610 | for chg in changes: | ||
| 611 | if chg.filechanges: | ||
| 612 | fchgs = [] | ||
| 613 | for fchg in chg.filechanges: | ||
| 614 | for epath in exclude_path: | ||
| 615 | if fchg.path.startswith(epath): | ||
| 616 | break | ||
| 617 | else: | ||
| 618 | fchgs.append(fchg) | ||
| 619 | chg.filechanges = fchgs | ||
| 620 | |||
| 604 | if report_all: | 621 | if report_all: |
| 605 | return changes | 622 | return changes |
| 606 | else: | 623 | else: |
