~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/knit.py

  • Committer: Martin Pool
  • Date: 2008-11-20 12:29:41 UTC
  • mto: This revision was merged to the branch mainline in revision 3847.
  • Revision ID: mbp@sourcefrog.net-20081120122941-vsgl27z58crm4qe1
Don't assume versions being unmentioned by iter_lines_added_or_changed implies the versions aren't present

Show diffs side-by-side

added added

removed removed

Lines of Context:
1442
1442
        is an iterator).
1443
1443
 
1444
1444
        NOTES:
1445
 
         * Lines are normalised by the underlying store: they will all have \n
 
1445
         * Lines are normalised by the underlying store: they will all have \\n
1446
1446
           terminators.
1447
1447
         * Lines are returned in arbitrary order.
 
1448
         * If a requested key did not change any lines (or didn't have any
 
1449
           lines), it may not be mentioned at all in the result.
1448
1450
 
1449
1451
        :return: An iterator over (line, key).
1450
1452
        """
1476
1478
            # change to integrate into the rest of the codebase. RBC 20071110
1477
1479
            for line in line_iterator:
1478
1480
                yield line, key
 
1481
        # If there are still keys we've not yet found, we look in the fallback
 
1482
        # vfs, and hope to find them there.  Note that if the keys are found
 
1483
        # but had no changes or no content, the fallback may not return
 
1484
        # anything.  
 
1485
        if keys and not self._fallback_vfs:
 
1486
            # XXX: strictly the second parameter is meant to be the file id
 
1487
            # but it's not easily accessible here.
 
1488
            raise RevisionNotPresent(keys, repr(self))
1479
1489
        for source in self._fallback_vfs:
1480
1490
            if not keys:
1481
1491
                break
1484
1494
                source_keys.add(key)
1485
1495
                yield line, key
1486
1496
            keys.difference_update(source_keys)
1487
 
        if keys:
1488
 
            # XXX: strictly the second parameter is meant to be the file id
1489
 
            # but it's not easily accessible here.
1490
 
            raise RevisionNotPresent(keys, repr(self))
1491
1497
        pb.update('Walking content.', total, total)
1492
1498
 
1493
1499
    def _make_line_delta(self, delta_seq, new_content):