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