git-importer/lib/tree_builder.py
Stephan Kulow d17e60a608 Add another table to store linked_revs
We need to create fake revisions when packages were touched that are
linked themselves
2022-10-26 14:20:28 +02:00

40 lines
1.4 KiB
Python

from lib.db_revision import DBRevision
from lib.request import Request
class TreeBuilder:
def __init__(self, db):
self.db = db
def filtered_revisions(self, project, package):
revisions = DBRevision.all_revisions(self.db, project, package)
revisions.sort()
ret = []
prev = None
for rev in revisions:
print(rev, rev.files_hash(self.db))
if rev.broken:
continue
if prev and prev.files_hash(self.db) == rev.files_hash(self.db):
continue
ret.append(rev)
prev = rev
return ret
def build(self, package):
factory_revisions = self.filtered_revisions("openSUSE:Factory", package)
source_revisions = dict()
for rev in factory_revisions:
print(rev, rev.files_hash(self.db))
if rev.request_id:
req = Request.find(self.db, rev.request_id)
print(" ", req)
key = f"{req.source_project}/{req.source_package}"
if key not in source_revisions:
source_revisions[key] = self.filtered_revisions(
req.source_project, req.source_package
)
for rev2 in source_revisions.get(key):
if rev2.files_hash(self.db) == rev.files_hash(self.db):
print(" ", rev2)