Hello Toby,

I have modified the sanity checker in the latest pin handler branch. It has now two functions to query for existing items and their parents, one function to get a list of directories that must be created in order to make the path valid and one function, that will mimic the "svnadmin load" behavoir in the sence, that it will use the provided svn dumpfile node to perform the apropriate modification on the state of the repository. I have also moved all "sanity checks" to the action handlers in the Dumpfile.pm. Actually the SanityChecker module should be called DumySvnRepository, or something like that, since it doesn't perform the checks itself. It only provides the necessary information.

The _get_svn_struct_ref_for_move function and its logic is still the heart of the module. It will query the tree and answer all questions in the exists, exists_parent and get_missing_dirs.

What I broke in this modification is the "junkpath" handling. I have no reasonable test szenario to check, how this should work, but I expect, that this is also some kind of "sanity check" within one action handler.

Also I didn't track all revisions. Only the latest revision is available for querying. All deleted directories are put aside and can be recovered by providing the path name. I expect one problem here:

Since I "load" the svn nodes to perform the modifications in my dummy-repository I can come across a situation where I need to copy-from a previous revision. Currently I use the copy-from-path to check, whether the path is available in the current state, and then I perform a lookup in the deleted path list. I expect, that this will be a problem, where someone deleted a directory and created a directory with the same name again but with a different content.

The only alternative is to track the state for each revision. But this would be an expensive task.

Hope I didn't messed up your code to much.

Best regards
Dirk

Hello Toby,

I'm working on my label handling and had some good progress. I'm now stuck with a situation where a file item carries the same label as one of the parent projects. The reason for this is, that you can label the parent and later move the label on one of the files explicitly. In order to track this and to fallback into a commit action, I need to know the state of the current repository. This is exactly what you did in your sanity checker, except, that it does not handled recursive copying, that is, if you copy a directory, only the directory is copied and not the childs. This is actually a similiar issue like the delete project issue

Additionally I need to call the sanity checker from within the _label_handler without the complete error handling.

Therefor I though about the following: would it be possible, that we move the SanityChecker into a seperate module. It should have a query interface, like "Does itempath exists/not exist", and a kind of replay interface, to perform the actions of the nodes onto the current state.

Then we both could use the sanityChecker for querying, what should happen, and finally we would apply all nodes to the checker, when we dump them into the dumpfile. In this case the captured hierarchy would be identical to the state of the repository. I just fear, that we also must take care of the complete revision mapping, since in a recover case, we must know the state of the repository at that time.

Best regards
Dirk
_______________________________________________
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
Mailing list web interface (with searchable archives):
http://dir.gmane.org/gmane.comp.version-control.subversion.vss2svn.user


_______________________________________________
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
Mailing list web interface (with searchable archives):
http://dir.gmane.org/gmane.comp.version-control.subversion.vss2svn.user

Reply via email to