The _filter_revisions_touching_file_id just didn't handle the case where a parent could be referenced, but not already computed in the ancestry.
I'll put together a test, and submit it:
=== modified file 'bzrlib/log.py'
--- bzrlib/log.py 2008-03-28 03:54:40 +0000
+++ bzrlib/log.py 2008-04-18 17:37:53 +0000
@@ -479,6 +479,8 @@
if rev in weave_modifed_revisions: rev_ancestry.add(rev)
for parent in parents:
+ if parent not in ancestry: # Ghost
+ continue rev_ancestry = rev_ancestry.union(ancestry[parent]) ancestry[rev] = rev_ancestry
The fix is actually pretty trivial:
The _filter_ revisions_ touching_ file_id just didn't handle the case where a parent could be referenced, but not already computed in the ancestry.
I'll put together a test, and submit it: revisions:
rev_ ancestry. add(rev)
rev_ ancestry = rev_ancestry. union(ancestry[ parent] )
ancestry[ rev] = rev_ancestry
=== modified file 'bzrlib/log.py'
--- bzrlib/log.py 2008-03-28 03:54:40 +0000
+++ bzrlib/log.py 2008-04-18 17:37:53 +0000
@@ -479,6 +479,8 @@
if rev in weave_modifed_
for parent in parents:
+ if parent not in ancestry: # Ghost
+ continue