Note that if the deltas do not create a sensible inventory, then this
will just make things worse: do _not_ run it other than on a backup of
the repository.
import bzrlib.repository
from bzrlib import errors
from bzrlib.tsort import topo_sort
from bzrlib.versionedfile import FulltextContentFactory
r = bzrlib.repository.Repository.open('.')
r.lock_write()
r._backup_inventory()
new_inv = r._temp_inventories()
order = topo_sort(r.inventories.get_parent_map(r.inventories.keys()))
for key in order:
try:
record = r.inventories.get_record_stream([key], 'unordered',
True).next()
except errors.SHA1KnitCorrupt, e:
assert e.key == key
record = FulltextContentFactory(record.key, record.parents, None,
''.join(e.content))
new_inv.insert_record_stream([record])
r._activate_new_inventory()
After running this on a wget created copy of the repo, I get:
Script to 'fix' the sha1's.
Note that if the deltas do not create a sensible inventory, then this
will just make things worse: do _not_ run it other than on a backup of
the repository.
import bzrlib.repository versionedfile import FulltextContent Factory repository. Repository. open('. ') inventory( ) inventories( ) r.inventories. get_parent_ map(r.inventori es.keys( ))) get_record_ stream( [key], 'unordered', SHA1KnitCorrupt , e: Factory( record. key, record.parents, None, insert_ record_ stream( [record] ) new_inventory( )
from bzrlib import errors
from bzrlib.tsort import topo_sort
from bzrlib.
r = bzrlib.
r.lock_write()
r._backup_
new_inv = r._temp_
order = topo_sort(
for key in order:
try:
record = r.inventories.
True).next()
except errors.
assert e.key == key
record = FulltextContent
''.join(e.content))
new_inv.
r._activate_
After running this on a wget created copy of the repo, I get:
BzrCheckError: Internal check failed: Stored revisions missing from inventory %guile- gnome-libglade- -release- -0--patch- 2,Arch- 1:<email address hidden> %guile- gnome-libglade- -release- -0--patch- 1,Arch- 1:<email address hidden> %guile- gnome-pkg- -release- -0--patch- 12,Arch- 1:<email address hidden> %guile- gnome-pkg- -release- -0--patch- 10,Arch- 1:<email address hidden> %guile- gnome-pkg- -release- -0--patch- 11,Arch- 1:<email address hidden> %guile- gnome-glib- -release- -0--base- 0,Arch- 1:<email address hidden> %guile- gnome-gtk- -release- -0--patch- 8,Arch- 1:<email address hidden> %guile- gnome-gtk- -release- -0--patch- 9,Arch- 1:<email address hidden> %guile- gnome-gtk- -release- -0--patch- 2,Arch- 1:<email address hidden> %guile- gnome-gtk- -release- -0--patch- 3,Arch- 1:<email address hidden> %guile- gnome-gtk- -release- -0--base- 0,Arch- 1:<email address hidden> %guile- gnome-gtk- -release- -0--patch- 1,Arch- 1:<email address hidden> %guile- gnome-gtk- -release- -0--patch- 6,Arch- 1:<email address hidden> %guile- gnome-gtk- -release- -0--patch- 7,Arch- 1:<email address hidden> %guile- gnome-gtk- -release- -0--patch- 4,Arch- 1:<email address hidden> %guile- gnome-gtk- -release- -0--patch- 5,Arch- 1:<email address hidden> %guile- gnome-gtk- -release- -0--patch- 10,Arch- 1:<email address hidden> %guile- gnome-gtk- -release- -0--patch- 11,Arch- 1:<email address hidden> %guile- gnome-glib- -release- -0--patch- 7,Arch- 1:<email address hidden> %guile- gnome-glib- -release- -0--patch- 6,Arch- 1:<email address hidden> %guile- gnome-glib- -release- -0--patch- 5,Arch- 1:<email address hidden> %guile- gnome-glib- -release- -0--patch- 4,Arch- 1:<email address hidden> %guile- gnome-glib- -release- -0--patch- 3,Arch- 1:<email address hidden> %guile- gnome-glib- -release- -0--patch- 2,Arch- 1:<email address hidden> %guile- gnome-glib- -release- -0--patch- 1,Arch- 1:<email address hidden> %guile- gnome-glib- -release- -0--patch- 9,Arch- 1:<email address hidden> %guile- gnome-glib- -release- -0--patch- 8,Arch- 1:<email address hidden> %guile- gnome-pkg- -release- -0--base- 0,Arch- 1:<email address hidden> %guile- gnome-libglade- -release- -0--base- 0,Arch- 1:<email address hidden> %guile- gnome-libgnomeu i--release- -0--base- 0,Arch- 1:<email address hidden> %guile- gnome-glib- -release- -0--patch- 13,Arch- 1:<email address hidden> %guile- gnome-glib- -release- -0--patch- 12,Arch- 1:<email address hidden> %guile- gnome-glib- -release- -0--patch- 11,Arch- 1:<email address hidden> %guile- gnome-glib- -release- -0--patch- 10,Arch- 1:<email address hidden> %guile- gnome-glib- -release- -0--patch- 14,Arch- 1:<email address hidden> %guile- gnome-pkg- -release- -0--patch- 8,Arch- 1:<email address hidden> %guile- gnome-pkg- -release- -0--patch- 9,Arch- 1:<email address hidden> %guile- gnome-libgnomeu i--release- -0--patch- 1,Arch- 1:<email address hidden> %guile- gnome-pkg- -release- -0--patch- 4,Arch- 1:<email address hidden> %guile- gnome-pkg- -release- -0--patch- 5,Arch- 1:<email address hidden> %guile- gnome-pkg- -release- -0--patch- 6,Arch- 1:<email address hidden> %guile- gnome-pkg- -release- -0--patch- 7,Arch- 1:<email address hidden> %guile- gnome-pkg- -release- -0--patch- 1,Arch- 1:<email address hidden> %guile- gnome-pkg- -release- -0--patch- 2,Arch- 1:<email address hidden> %guile- gnome-pkg- -release- -0--patch- 3}
{Arch-1:<email address hidden>
I'm looking into the cause/meaning of this now.
-Rob