List Info

Thread: SVNMoveDeleteHook eats move data




SVNMoveDeleteHook eats move data
user name
2007-03-21 09:20:37
Hello everyone!
 
I have installed subclipse 1.2.0 and writing own plugins for Eclipse. One of those plugins need to know when a file is moved around. So I wrote a IResourceChangeListener and asked the IResourceDelta if the IResource have been moved. This works fine, but not with SVN-projects. It seemes, that the MOVED_FROM and MOVED_TO flags ;are lost, when a resource is unmanaged. Moving managed resources works fine (moving it back results in lost flags again).
So I debugged and tried and after 2 days I found ;some lines at moveFile-Method of the ;SVNMoveDeleteHook:
 
                if (SVNWorkspaceRoot.getSVNFileFor(source).getStatus()
                        .isAdded()) {
                    //can't move a file that's in state added, so copy to new
                    // location
                    //remove old location, add new location
                    //fix for issue 87 -mml
                    source.copy(destination.getFullPath(), updateFlags, monitor);


                    svnClient.addFile(destination.getLocation().toFile());
                    svnClient.remove(
                            new File[] { source.getLocation().toFile() }, true);
                    tree.deletedFile(source);
                } else {
                    svnClient.move(source.getLocation().toFile(), destination
                            .getLocation().toFile(), true);

                }
                //movedFile must be done before endOperation because
                // destination file must not already exist in the workspace

                // resource tree.
                tree.movedFile(source, destination);
                destination.refreshLocal(IResource.DEPTH_ZERO, monitor);
At a first look this seems to be ok, but when you look at the IResourceTree.movedFile() method you'll find the line:

if (!source.exists())

return;

 

The movedFile method is responsible for moving Properties, Markers and setting NodeIDs (which is telling Eclipse where a Resource is moved at or from).

regards from Germany,

Steve Ulrich
Entwicklung Personalwesen
CSS GmbH

Justus-Liebig-Str. 2-4
36093 Künzell/Fulda
Germany

Internet: http://www.css.de
Fon: +49 (0)661 9392-58
Fax: +49 (0)661 9392-70
Email: css.de">Steve.Ulrichcss.de

Sitz der Gesellschaft: Künzell
Handelsregister: Amtsgericht Fulda, HRB 838
Geschäftsführer: Michael Friemel, Armin Prinz 

 
[1]

about | contact  Other archives ( Real Estate discussion Medical topics )