def getChangesDependingOn(self, change, projects, tenant): changes = [] if not change.uris: return changes queries = set() for uri in change.uris: queries.add('message:%s' % uri) query = '(' + ' OR '.join(queries) + ')' results = self.connection.simpleQuery(query) seen = set() for result in results: for match in find_dependency_headers(result['commitMessage']): found = False for uri in change.uris: if uri in match: found = True break if not found: continue key = (str(result['number']), str(result['currentPatchSet']['number'])) if key in seen: continue seen.add(key) change = self.connection._getChange( result['number'], result['currentPatchSet']['number']) changes.append(change) return changes
def getChangesDependingOn(self, change, projects, tenant): changes = [] if not change.uris: return changes queries = set() for uri in change.uris: queries.add('message:{Depends-On: %s}' % uri) query = '(' + ' OR '.join(queries) + ')' results = self.connection.simpleQuery(query) seen = set() for result in results: for match in find_dependency_headers(result.message): found = False for uri in change.uris: if uri in match: found = True break if not found: continue key = (result.number, result.current_patchset) if key in seen: continue seen.add(key) change = self.connection._getChange(result.number, result.current_patchset) changes.append(change) return changes
def updateCommitDependencies(self, change, change_queue): # Search for Depends-On headers and find appropriate changes self.log.debug(" Updating commit dependencies for %s", change) change.refresh_deps = False dependencies = [] seen = set() for match in find_dependency_headers(change.message): self.log.debug(" Found Depends-On header: %s", match) if match in seen: continue seen.add(match) try: url = urllib.parse.urlparse(match) except ValueError: continue source = self.sched.connections.getSourceByHostname( url.hostname) if not source: continue self.log.debug(" Found source: %s", source) dep = source.getChangeByURL(match) if dep and (not dep.is_merged) and dep not in dependencies: self.log.debug(" Adding dependency: %s", dep) dependencies.append(dep) change.commit_needs_changes = dependencies
def getChangesDependingOn(self, change, projects, tenant): changes = [] if not change.uris: return changes queries = set() for uri in change.uris: queries.add('message:%s' % uri) query = '(' + ' OR '.join(queries) + ')' results = self.connection.simpleQuery(query) seen = set() for result in results: for match in find_dependency_headers(result['commitMessage']): found = False for uri in change.uris: if uri in match: found = True break if not found: continue key = (str(result['number']), str(result['currentPatchSet']['number'])) if key in seen: continue seen.add(key) change = self.connection._getChange( result['number'], result['currentPatchSet']['number']) changes.append(change) return changes
def updateCommitDependencies(self, change, change_queue): # Search for Depends-On headers and find appropriate changes self.log.debug(" Updating commit dependencies for %s", change) change.refresh_deps = False dependencies = [] seen = set() for match in find_dependency_headers(change.message): self.log.debug(" Found Depends-On header: %s", match) if match in seen: continue seen.add(match) try: url = urllib.parse.urlparse(match) except ValueError: continue source = self.sched.connections.getSourceByHostname( url.hostname) if not source: continue self.log.debug(" Found source: %s", source) dep = source.getChangeByURL(match) if dep and (not dep.is_merged) and dep not in dependencies: self.log.debug(" Adding dependency: %s", dep) dependencies.append(dep) change.commit_needs_changes = dependencies
def getChangesDependingOn(self, change, projects, tenant): """ Reverse lookup of PR depending on this one """ # TODO(fbo) No way to Query pagure to search accross projects' PRs for # a the depends-on string in PR initial message. Not a blocker # for now, let's workaround using the local change cache ! changes_dependencies = [] for cached_change_id, _change in self._change_cache.items(): for dep_header in dependson.find_dependency_headers( _change.message): if change.url in dep_header: changes_dependencies.append(_change) return changes_dependencies