~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/remote.py

  • Committer: Robert Collins
  • Date: 2009-07-30 04:27:05 UTC
  • mto: This revision was merged to the branch mainline in revision 4579.
  • Revision ID: robertc@robertcollins.net-20090730042705-450o2abhbh9ta3nq
Fix fetching from smart servers where there is a chain of stacked repositories rather than a single stacking point. (Robert Collins, bug #406597)

Show diffs side-by-side

added added

removed removed

Lines of Context:
1733
1733
        if (self.from_repository._fallback_repositories and
1734
1734
            self.to_format._fetch_order == 'topological'):
1735
1735
            return self._real_stream(self.from_repository, search)
1736
 
        return self.missing_parents_chain(search, [self.from_repository] +
1737
 
            self.from_repository._fallback_repositories)
 
1736
        sources = []
 
1737
        seen = set()
 
1738
        repos = [self.from_repository]
 
1739
        while repos:
 
1740
            repo = repos.pop(0)
 
1741
            if repo in seen:
 
1742
                continue
 
1743
            seen.add(repo)
 
1744
            repos.extend(repo._fallback_repositories)
 
1745
            sources.append(repo)
 
1746
        return self.missing_parents_chain(search, sources)
1738
1747
 
1739
1748
    def _real_stream(self, repo, search):
1740
1749
        """Get a stream for search from repo.