I just committed a rather large change in r183 which adds the "sanity checker" to the Dumpfile.pm as I discussed earlier. I decided that Dumpfile creation is the proper place to do this because up until then it's very difficult to know exactly what the SVN repo will look like, and it also allows me to report specifically which SVN revisions were "fudged" if necessary.

I am basically keeping an in-memory hash of the entire SVN repository structure and checking each new node to make sure it makes sense in the context of existing nodes. It takes the following actions:

* If an attempt is made to re-add a file where one already exists, it performs a commit instead. * If an attempt is made to re-add an existing directory, delete/move/rename a non-existent item, etc. the action is dropped. * If an inconsistent change is attempted, such as trying to add a file as a "subitem" of another file (i.e. trying to treat a file as a directory), the item is placed in a "lost+found" directory. * If an attempt is made to add an item to a non-existent directory, that directory is created at that moment (this even works for n-depth nested directories).

Still to do:
* Use the "lost+found" directory also for invalid or unrecoverable filenames. * If an attempt is made to commit a change to a non-existent file, the action should be changed to an add.

With these changes, I was able for the first time to convert my large, 6-year repository with the "new" script! Due to our convoluted build process, that repo had *many* "traps" for the script, such creating several directories, moving those directories all into a second directory then renaming them, etc.


_______________________________________________
vss2svn-users mailing list
Project homepage: http://www.pumacode.org/projects/vss2svn/
Subscribe/Unsubscribe/Admin: 
http://lists.pumacode.org/mailman/listinfo/vss2svn-users-lists.pumacode.org

Reply via email to