DebugLog.log("comitter: open dir: " + commitPath);
    public boolean handleCommitPath(String commitPath, ISVNEditor commitEditor)            throws SVNException {        SVNCommitItem item = (SVNCommitItem) myCommitItems.get(commitPath);        if (item.isCopied()) {            if (item.getCopyFromURL() == null) {                SVNErrorManager.error("svn: Commit item '" + item.getFile()                        + "' has copy flag but no copyfrom URL");            } else if (item.getRevision().getNumber() < 0) {                SVNErrorManager.error("svn: Commit item '" + item.getFile()                        + "' has copy flag but an invalid revision");            }        }        SVNEvent event = null;        boolean closeDir = false;        if (item.isAdded() && item.isDeleted()) {            event = SVNEventFactory.createCommitEvent(myWCAccess.getAnchor()                    .getRoot(), item.getFile(), SVNEventAction.COMMIT_REPLACED,                    item.getKind(), null);        } else if (item.isAdded()) {            String mimeType = null;            if (item.getKind() == SVNNodeKind.FILE) {                SVNWCAccess wcAccess = SVNWCAccess.create(item.getFile());                mimeType = wcAccess.getAnchor().getProperties(                        wcAccess.getTargetName(), false).getPropertyValue(                        SVNProperty.MIME_TYPE);            }            event = SVNEventFactory.createCommitEvent(myWCAccess.getAnchor()                    .getRoot(), item.getFile(), SVNEventAction.COMMIT_ADDED,                    item.getKind(), mimeType);        } else if (item.isDeleted()) {            event = SVNEventFactory.createCommitEvent(myWCAccess.getAnchor()                    .getRoot(), item.getFile(), SVNEventAction.COMMIT_DELETED,                    item.getKind(), null);        } else if (item.isContentsModified() || item.isPropertiesModified()) {            event = SVNEventFactory.createCommitEvent(myWCAccess.getAnchor()                    .getRoot(), item.getFile(), SVNEventAction.COMMIT_MODIFIED,                    item.getKind());        }        if (event != null) {            event.setPath(item.getPath());            myWCAccess.handleEvent(event, ISVNEventHandler.UNKNOWN);        }        long rev = item.getRevision().getNumber();        long cfRev = item.getCopyFromURL() != null ? rev : -1;        if (item.isDeleted()) {            commitEditor.deleteEntry(commitPath, rev);        }        boolean fileOpen = false;        if (item.isAdded()) {            String copyFromPath = getCopyFromPath(item.getCopyFromURL());            if (item.getKind() == SVNNodeKind.FILE) {                commitEditor.addFile(commitPath, copyFromPath, cfRev);                fileOpen = true;            } else {                commitEditor.addDir(commitPath, copyFromPath, cfRev);                closeDir = true;            }        }        if (item.isPropertiesModified()) {            if (item.getKind() == SVNNodeKind.FILE) {                if (!fileOpen) {                    commitEditor.openFile(commitPath, rev);                }                fileOpen = true;            } else if (!item.isAdded()) {                // do not open dir twice.                if ("".equals(commitPath)) {                    DebugLog.log("comitter: open root: " + commitPath);                    commitEditor.openRoot(rev);                } else {                    DebugLog.log("comitter: open dir: " + commitPath);                    commitEditor.openDir(commitPath, rev);                }                closeDir = true;            }            sendPropertiedDelta(commitPath, item, commitEditor);        }        if (item.isContentsModified() && item.getKind() == SVNNodeKind.FILE) {            if (!fileOpen) {                commitEditor.openFile(commitPath, rev);            }            myModifiedFiles.put(commitPath, item);        } else if (fileOpen) {            commitEditor.closeFile(commitPath, null);        }        return closeDir;    }