~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/graph.py

  • Committer: John Arbash Meinel
  • Date: 2011-05-26 08:05:45 UTC
  • mfrom: (5916 +trunk)
  • mto: This revision was merged to the branch mainline in revision 5917.
  • Revision ID: john@arbash-meinel.com-20110526080545-5tprxfczyj4bfk0o
Merge bzr.dev 5916 and make sure the right patch is applied.

Show diffs side-by-side

added added

removed removed

Lines of Context:
250
250
        common ancestor of all border ancestors, because this shows that it
251
251
        cannot be a descendant of any border ancestor.
252
252
 
253
 
        The scaling of this operation should be proportional to
 
253
        The scaling of this operation should be proportional to:
 
254
 
254
255
        1. The number of uncommon ancestors
255
256
        2. The number of border ancestors
256
257
        3. The length of the shortest path between a border ancestor and an
388
389
 
389
390
        :param unique_revision: The revision_id whose ancestry we are
390
391
            interested in.
391
 
            XXX: Would this API be better if we allowed multiple revisions on
392
 
                 to be searched here?
 
392
            (XXX: Would this API be better if we allowed multiple revisions on
 
393
            to be searched here?)
393
394
        :param common_revisions: Revision_ids of ancestries to exclude.
394
395
        :return: A set of revisions in the ancestry of unique_revision
395
396
        """
1563
1564
 
1564
1565
        The recipe allows reconstruction of the same results at a later date.
1565
1566
 
1566
 
        :return: A tuple of (search_kind_str, *details).  The details vary by
 
1567
        :return: A tuple of `(search_kind_str, *details)`.  The details vary by
1567
1568
            kind of search result.
1568
1569
        """
1569
1570
        raise NotImplementedError(self.get_recipe)
1848
1849
    """Find all revisions missing in one repo for a some specific heads."""
1849
1850
 
1850
1851
    def __init__(self, to_repo, from_repo, required_ids, if_present_ids=None,
1851
 
            find_ghosts=False):
 
1852
            find_ghosts=False, limit=None):
1852
1853
        """Constructor.
1853
1854
 
1854
1855
        :param required_ids: revision IDs of heads that must be found, or else
1858
1859
        :param if_present_ids: revision IDs of heads that may be absent in the
1859
1860
            source repository.  If present, then their ancestry not already
1860
1861
            found in other will be included in the search result.
 
1862
        :param limit: maximum number of revisions to fetch
1861
1863
        """
1862
1864
        self.to_repo = to_repo
1863
1865
        self.from_repo = from_repo
1864
1866
        self.find_ghosts = find_ghosts
1865
1867
        self.required_ids = required_ids
1866
1868
        self.if_present_ids = if_present_ids
 
1869
        self.limit = limit
1867
1870
 
1868
1871
    def __repr__(self):
1869
1872
        if len(self.required_ids) > 5:
1875
1878
        else:
1876
1879
            ifp_revs_repr = repr(self.if_present_ids)
1877
1880
 
1878
 
        return "<%s from:%r to:%r find_ghosts:%r req'd:%r if-present:%r>" % (
1879
 
            self.__class__.__name__, self.from_repo, self.to_repo,
1880
 
            self.find_ghosts, reqd_revs_repr, ifp_revs_repr)
 
1881
        return ("<%s from:%r to:%r find_ghosts:%r req'd:%r if-present:%r"
 
1882
                "limit:%r>") % (
 
1883
                self.__class__.__name__, self.from_repo, self.to_repo,
 
1884
                self.find_ghosts, reqd_revs_repr, ifp_revs_repr,
 
1885
                self.limit)
1881
1886
 
1882
1887
    def execute(self):
1883
1888
        return self.to_repo.search_missing_revision_ids(
1884
1889
            self.from_repo, revision_ids=self.required_ids,
1885
 
            if_present_ids=self.if_present_ids, find_ghosts=self.find_ghosts)
 
1890
            if_present_ids=self.if_present_ids, find_ghosts=self.find_ghosts,
 
1891
            limit=self.limit)
1886
1892
 
1887
1893
 
1888
1894
def collapse_linear_regions(parent_map):