diff -r eae2c2dd7d6b masterfs/src/org/netbeans/modules/masterfs/filebasedfs/utils/FileInfo.java --- a/masterfs/src/org/netbeans/modules/masterfs/filebasedfs/utils/FileInfo.java Fri Feb 07 06:26:38 2014 +0000 +++ b/masterfs/src/org/netbeans/modules/masterfs/filebasedfs/utils/FileInfo.java Mon Feb 10 14:40:38 2014 +0100 @@ -51,6 +51,8 @@ import org.netbeans.modules.masterfs.filebasedfs.naming.FileNaming; import org.netbeans.modules.masterfs.filebasedfs.naming.NamingFactory; import org.openide.filesystems.FileObject; +import org.openide.filesystems.FileUtil; +import org.openide.util.Utilities; public final class FileInfo { @@ -170,7 +172,8 @@ public boolean isConvertibleToFileObject() { if (isConvertibleToFileObject == -1) { - isConvertibleToFileObject = (isSupportedFile() && exists()) ? 1 : 0; + isConvertibleToFileObject = (isSupportedFile() && exists() && + (!Utilities.isMac() || getFile().equals(FileUtil.normalizeFile(getFile())))) ? 1 : 0; } return (isConvertibleToFileObject == 1) ? true : false; diff -r eae2c2dd7d6b openide.filesystems/src/org/openide/filesystems/FileChangeImpl.java --- a/openide.filesystems/src/org/openide/filesystems/FileChangeImpl.java Fri Feb 07 06:26:38 2014 +0000 +++ b/openide.filesystems/src/org/openide/filesystems/FileChangeImpl.java Mon Feb 10 14:40:38 2014 +0100 @@ -241,7 +241,9 @@ } static FileChangeListener removeFileChangeListenerImpl(Logger logger, FileChangeListener listener, File path) { - assert path.equals(FileUtil.normalizeFile(path)) : "Need to normalize " + FileUtil.toDebugString(path) + "!"; + assert (Utilities.isMac() + ? path.toString().equalsIgnoreCase(FileUtil.normalizeFile(path).toString()) + : path.equals(FileUtil.normalizeFile(path))) : "Need to normalize " + FileUtil.toDebugString(path) + "!"; logger.log(Level.FINE, "removeFileChangeListener {0} @ {1}", new Object[]{listener, path}); synchronized (holders) { Map f2H = holders.get(listener); diff -r eae2c2dd7d6b versioning.core/src/org/netbeans/modules/versioning/core/api/VCSFileProxy.java --- a/versioning.core/src/org/netbeans/modules/versioning/core/api/VCSFileProxy.java Fri Feb 07 06:26:38 2014 +0000 +++ b/versioning.core/src/org/netbeans/modules/versioning/core/api/VCSFileProxy.java Mon Feb 10 14:40:38 2014 +0100 @@ -165,7 +165,7 @@ try { VCSFileProxyOperations fileProxyOperations = getFileProxyOperations(fileObject.getFileSystem()); if (fileProxyOperations == null) { - File file = FileUtil.toFile(fileObject); + File file = toFile(fileObject); if(file != null) { final VCSFileProxy p = createFileProxy(file); p.isDirectory = fileObject.isFolder(); @@ -494,4 +494,19 @@ VCSFileProxyOperations getFileProxyOperations() { return proxy; } + + /** + * Get a File instance for a FileObject. Workaround for bug 240180. + * + * @param fo FileObject instance. + * @return Associated File instance. + */ + private static File toFile(FileObject fo) { + Object fileAtt = fo.getAttribute("java.io.File"); //NOI18N + if (fileAtt instanceof File) { + return (File) fileAtt; + } else { + return FileUtil.toFile(fo); + } + } }