DebugLog.log("iterating entries...");
    public void commit(String target, SVNCommitInfo info, Map wcPropChanges,            boolean removeLock, boolean recursive) throws SVNException {        DebugLog                .log("commit is called on " + getRoot() + ", target: " + target);        SVNLog log = getLog(0);        //        String checksum = null;        if (!"".equals(target)) {            File baseFile = getBaseFile(target, true);            SVNFileType baseType = SVNFileType.getType(baseFile);            if (baseType == SVNFileType.NONE) {                baseFile = getBaseFile(target, false);                baseType = SVNFileType.getType(baseFile);            }            if (baseType == SVNFileType.FILE) {                checksum = SVNFileUtil.computeChecksum(baseFile);            }            recursive = false;        } else {        }        Map command = new HashMap();        if (info != null) {            command.put(SVNLog.NAME_ATTR, target);            command.put(SVNProperty                    .shortPropertyName(SVNProperty.COMMITTED_REVISION), Long                    .toString(info.getNewRevision()));            command.put(SVNProperty                    .shortPropertyName(SVNProperty.COMMITTED_DATE), TimeUtil                    .formatDate(info.getDate()));            command.put(SVNProperty.shortPropertyName(SVNProperty.LAST_AUTHOR),                    info.getAuthor());            log.addCommand(SVNLog.MODIFY_ENTRY, command, false);            command.clear();        }        if (checksum != null) {            command.put(SVNLog.NAME_ATTR, target);            command.put(SVNProperty.shortPropertyName(SVNProperty.CHECKSUM),                    checksum);            log.addCommand(SVNLog.MODIFY_ENTRY, command, false);            command.clear();        }        if (removeLock) {            command.put(SVNLog.NAME_ATTR, target);            log.addCommand(SVNLog.DELETE_LOCK, command, false);            command.clear();        }        command.put(SVNLog.NAME_ATTR, target);        command.put(SVNLog.REVISION_ATTR, info == null ? null : Long                .toString(info.getNewRevision()));        log.addCommand(SVNLog.COMMIT, command, false);        command.clear();        if (wcPropChanges != null && !wcPropChanges.isEmpty()) {            for (Iterator propNames = wcPropChanges.keySet().iterator(); propNames                    .hasNext();) {                String propName = (String) propNames.next();                String propValue = (String) wcPropChanges.get(propName);                command.put(SVNLog.NAME_ATTR, target);                command.put(SVNLog.PROPERTY_NAME_ATTR, propName);                command.put(SVNLog.PROPERTY_VALUE_ATTR, propValue);                log.addCommand(SVNLog.MODIFY_WC_PROPERTY, command, false);                command.clear();            }        }        log.save();        runLogs();        if (recursive) {            SVNEntries entries = getEntries();            DebugLog.log("iterating entries...");            for (Iterator ents = entries.entries(true); ents.hasNext();) {                SVNEntry entry = (SVNEntry) ents.next();                if ("".equals(entry.getName())) {                    continue;                }                if (entry.getKind() == SVNNodeKind.DIR) {                    SVNDirectory childDir = getChildDirectory(entry.getName());                    if (childDir != null) {                        childDir.commit("", info, null, removeLock, true);                    }                } else {                    commit(entry.getName(), info, null, removeLock, false);                }            }        }    }