On Thu, Dec 16, 2010 at 05:03:00PM +0100, Rainer Dorsch wrote: > Hello, > > I see here a strange behavior of subversion: > > I have a local modification: > > > $ svn diff > Index: README > =================================================================== > --- README (revision 929) > +++ README (working copy) > @@ -10,3 +10,4 @@ > Contains project administration documents for the project like the project > plan > - att > att traces > + > $ > > I try to commit the change > > $ svn commit -m "minor change" > Sending README > Transmitting file data .svn: Commit failed (details follow): > svn: database disk image is malformed > svn: database disk image is malformed > $ > > And get an error back. > > $ svn diff > Index: README > =================================================================== > --- README (revision 929) > +++ README (working copy) > @@ -10,3 +10,4 @@ > Contains project administration documents for the project like the project > plan > - att > att traces > + > $ > > But the repository has the change(!), and I can update > > $ svn update > G README > Updated to revision 930. > $ > > Then my local diff is gone > > $ svn diff > $ > > > I found several posts discussing the > > svn: database disk image is malformed > > issue. The best solution is saw is to dump the repository and create a new > one > from the dump. > > Is there an easier way to fix the problem in a robust manner? Does maybe even > svn provide some fix scripts?
This error message is coming from sqlite, not from Subversion. You probably have a broken sqlite database in the repository. The only place I can think of where sqlite is used in FSFS is the rep-cache.db file. Have you got rep-sharing enabled on the repository? See the file repos/db/fsfs.conf. You can safely disable rep-sharing. Maybe this will get rid of the error. If it does, try to recover the rep-sharing.db using sqlite (though I don't know how you could do that). If you cannot recover rep-cache.db, move it out of the way and Subversion will create a new rep-cache.db sqlite database. But it will be empty. Representation sharing is not required for a commit to succeed. This would explain why you see a successful commit in spite of the error. Stefan