[merge][#295350] fix another "revision not present" in stacked repositories
Martin Pool
mbp at canonical.com
Thu Nov 20 12:33:39 GMT 2008
This is a rolled-up patch of stacking fixes but the new part is this.
I think the comments are pretty self-explanatory.
=== modified file 'bzrlib/knit.py'
--- bzrlib/knit.py 2008-11-20 03:47:45 +0000
+++ bzrlib/knit.py 2008-11-20 12:26:18 +0000
@@ -1442,9 +1442,11 @@
is an iterator).
NOTES:
- * Lines are normalised by the underlying store: they will all have \n
+ * Lines are normalised by the underlying store: they will all have \\n
terminators.
* Lines are returned in arbitrary order.
+ * If a requested key did not change any lines (or didn't have any
+ lines), it may not be mentioned at all in the result.
:return: An iterator over (line, key).
"""
@@ -1476,6 +1478,14 @@
# change to integrate into the rest of the codebase. RBC 20071110
for line in line_iterator:
yield line, key
+ # If there are still keys we've not yet found, we look in the fallback
+ # vfs, and hope to find them there. Note that if the keys are found
+ # but had no changes or no content, the fallback may not return
+ # anything.
+ if keys and not self._fallback_vfs:
+ # XXX: strictly the second parameter is meant to be the file id
+ # but it's not easily accessible here.
+ raise RevisionNotPresent(keys, repr(self))
for source in self._fallback_vfs:
if not keys:
break
@@ -1484,10 +1494,6 @@
source_keys.add(key)
yield line, key
keys.difference_update(source_keys)
- if keys:
- # XXX: strictly the second parameter is meant to be the file id
- # but it's not easily accessible here.
- raise RevisionNotPresent(keys, repr(self))
pb.update('Walking content.', total, total)
def _make_line_delta(self, delta_seq, new_content):
--
Martin <http://launchpad.net/~mbp/>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 20081120-295350-iter-changes-stacked.diff
Type: text/x-diff
Size: 45418 bytes
Desc: not available
Url : https://lists.ubuntu.com/archives/bazaar/attachments/20081120/ebbcb239/attachment-0001.bin
More information about the bazaar
mailing list