getEntry().put(SVNProperty.TEXT_TIME, TimeUtil.formatDate(new Date(actualFile.lastModified())));
updateTextTime(actualFile);
    public void merge(boolean recursive) throws SVNException {        if (isScheduledForAddition()) {            return;        }        boolean isNewKeywords = isPropertyModified(SVNProperty.KEYWORDS);        super.merge();        // force properties file save        File basePropsFile = getAdminArea().getBasePropertiesFile(this);        if (!basePropsFile.exists()) {            // empty props, may be was not changed but not yet saved (checkout)            // empty dir props are never saved, only for files.            getAdminArea().saveBaseProperties(this, Collections.EMPTY_MAP);            getAdminArea().saveProperties(this, Collections.EMPTY_MAP);            long lastModified = getAdminArea().propertiesLastModified(this);            if (lastModified != 0) {                getEntry().put(SVNProperty.PROP_TIME, TimeUtil.formatDate(new Date(lastModified)));            } else {                getEntry().remove(SVNProperty.PROP_TIME);            }        }        File tmpBaseFile = getAdminArea().getTemporaryBaseFile(this);                File actualFile = getRootEntry().getWorkingCopyFile(this);        File baseFile = getAdminArea().getBaseFile(this);        Map keywords = computeKeywords(true);        if (!tmpBaseFile.exists() && !isScheduledForDeletion()) {            if (baseFile.exists() && (!actualFile.exists() || isNewKeywords)) {                FSUtil.copy(baseFile, actualFile, !isBinary() ? getPropertyValue(SVNProperty.EOL_STYLE) : null, isBinary() ? null : keywords, null);                getEntry().put(SVNProperty.TEXT_TIME, TimeUtil.formatDate(new Date(actualFile.lastModified())));            }            return;        }        String checksum = null;        if (isScheduledForDeletion()) {            DebugLog.log("merging deleted file: " + getPath());            DebugLog.log("tmpBaseFile: " + tmpBaseFile.getAbsolutePath());            DebugLog.log("tmpBaseFile.exists(): " + tmpBaseFile.exists());            if (tmpBaseFile.exists()) {                checksum = FSUtil.copy(tmpBaseFile, baseFile, null, createDigest());                DebugLog.log("deleted file merged: "  + getPath());            }        } else if (!isContentsModified()) {            String eolStyle = isBinary() ? null : getPropertyValue(SVNProperty.EOL_STYLE);                        checksum = FSUtil.copy(tmpBaseFile, baseFile, null, createDigest());            FSUtil.copy(baseFile, actualFile,  isBinary() ? null : eolStyle, isBinary() ? null : keywords, null);            getEntry().put(SVNProperty.TEXT_TIME, TimeUtil.formatDate(new Date(actualFile.lastModified())));        } else {            int mergeResult = SVNStatus.CONFLICTED;            File localFile = null;            if (!isBinary()) {                // try to merge                FSMerger merger = getRootEntry().getMerger();                File remote = getAdminArea().getTemporaryBaseFile(this);                File base = getAdminArea().getBaseFile(this);                    localFile = getRootEntry().createTemporaryFile(this);                File result = getRootEntry().createTemporaryFile(this);                // no need to convert eols, merger should merge just lines.                FSUtil.copy(getRootEntry().getWorkingCopyFile(this), localFile, null, computeKeywords(false), null);                mergeResult = merger.mergeFiles(base, localFile, remote, result, ".mine", ".r" + getPropertyValue(SVNProperty.COMMITTED_REVISION));                localFile.delete();                localFile = result;            }            if (mergeResult == SVNStatus.CONFLICTED) {                File newRevFile = new File(getRootEntry().getWorkingCopyFile(this).getParentFile(), getName() + ".r" + getPropertyValue(SVNProperty.COMMITTED_REVISION));                 File oldRevFile = new File(getRootEntry().getWorkingCopyFile(this).getParentFile(), getName() + ".r" + getOldRevision());                FSUtil.copy(getAdminArea().getTemporaryBaseFile(this), newRevFile, null, null, null);                FSUtil.copy(getAdminArea().getBaseFile(this), oldRevFile, null, null, null);                            setPropertyValue(SVNProperty.CONFLICT_OLD, oldRevFile.getName());                setPropertyValue(SVNProperty.CONFLICT_NEW, newRevFile.getName());                if (!isBinary()) {                    // save wc to "mine"                    File mineFile = new File(getRootEntry().getWorkingCopyFile(this).getParentFile(), getName() + ".mine");                    FSUtil.copy(getRootEntry().getWorkingCopyFile(this), mineFile, null, null, null);                    setPropertyValue(SVNProperty.CONFLICT_WRK, mineFile.getName());                }            }            if (localFile != null) {                // replace "wc" with merge result.                keywords = computeKeywords(true);                String eolStyle = getPropertyValue(SVNProperty.EOL_STYLE);                FSUtil.copy(localFile, getRootEntry().getWorkingCopyFile(this), eolStyle, keywords, null);                localFile.delete();            }            checksum = FSUtil.copy(getAdminArea().getTemporaryBaseFile(this), getAdminArea().getBaseFile(this), null, null, createDigest());        }        if (getPropertyValue(SVNProperty.CHECKSUM) == null) {            setPropertyValue(SVNProperty.CHECKSUM, checksum);        } else if (checksum != null && !checksum.equals(getPropertyValue(SVNProperty.CHECKSUM))) {            throw new SVNException(getPath() + " local checksum differs from repository.");        }        getAdminArea().deleteTemporaryBaseFile(this);    }