# HG changeset patch # User Vladimir Kvashin # Date 1478201398 -10800 # Branch release82 # Node ID 1846cac018a5957df54f322398e72014ffaf0786 # Parent 404ffed5292eaa022b975ac94ffcc04a8b46d9e9 Addition fix related with VCSForbiddenFolderProvider: deprecating org.netbeans.modules.versioning.util.Utils.isForbiddenFolder(String) and changing it to isForbiddenFolder(File) diff -r 404ffed5292e -r 1846cac018a5 git.remote/src/org/netbeans/modules/git/remote/Git.java --- a/git.remote/src/org/netbeans/modules/git/remote/Git.java Wed Nov 02 23:08:27 2016 +0300 +++ b/git.remote/src/org/netbeans/modules/git/remote/Git.java Thu Nov 03 22:29:58 2016 +0300 @@ -371,7 +371,7 @@ break; } // is the folder a special one where metadata should not be looked for? - boolean forbiddenFolder = Utils.isForbiddenFolder(file.getPath()); + boolean forbiddenFolder = org.netbeans.modules.versioning.core.util.Utils.isForbiddenFolder(file); if (!forbiddenFolder && GitUtils.repositoryExistsFor(file)) { if (LOG.isLoggable(Level.FINE)) { LOG.log(Level.FINE, " found managed parent {0}", new Object[] { file }); diff -r 404ffed5292e -r 1846cac018a5 git/src/org/netbeans/modules/git/Git.java --- a/git/src/org/netbeans/modules/git/Git.java Wed Nov 02 23:08:27 2016 +0300 +++ b/git/src/org/netbeans/modules/git/Git.java Thu Nov 03 22:29:58 2016 +0300 @@ -331,7 +331,7 @@ } if (!noExceptions && VersioningSupport.isExcluded(file)) break; // is the folder a special one where metadata should not be looked for? - boolean forbiddenFolder = Utils.isForbiddenFolder(file.getAbsolutePath()); + boolean forbiddenFolder = Utils.isForbiddenFolder(file); if (!forbiddenFolder && GitUtils.repositoryExistsFor(file)) { LOG.log(Level.FINE, " found managed parent {0}", new Object[] { file }); done.clear(); // all folders added before must be removed, they ARE in fact managed by git diff -r 404ffed5292e -r 1846cac018a5 mercurial.remote/src/org/netbeans/modules/mercurial/remote/Mercurial.java --- a/mercurial.remote/src/org/netbeans/modules/mercurial/remote/Mercurial.java Wed Nov 02 23:08:27 2016 +0300 +++ b/mercurial.remote/src/org/netbeans/modules/mercurial/remote/Mercurial.java Thu Nov 03 22:29:58 2016 +0300 @@ -599,7 +599,7 @@ break; } // is the folder a special one where metadata should not be looked for? - boolean forbiddenFolder = Utils.isForbiddenFolder(file.getPath()); + boolean forbiddenFolder = org.netbeans.modules.versioning.core.util.Utils.isForbiddenFolder(file); if (!forbiddenFolder && HgUtils.hgExistsFor(file)){ if (Mercurial.LOG.isLoggable(Level.FINE)) { Mercurial.LOG.log(Level.FINE, " found managed parent {0}", new Object[] { file }); diff -r 404ffed5292e -r 1846cac018a5 mercurial/src/org/netbeans/modules/mercurial/Mercurial.java --- a/mercurial/src/org/netbeans/modules/mercurial/Mercurial.java Wed Nov 02 23:08:27 2016 +0300 +++ b/mercurial/src/org/netbeans/modules/mercurial/Mercurial.java Thu Nov 03 22:29:58 2016 +0300 @@ -569,7 +569,7 @@ } if (VersioningSupport.isExcluded(file)) break; // is the folder a special one where metadata should not be looked for? - boolean forbiddenFolder = Utils.isForbiddenFolder(file.getAbsolutePath()); + boolean forbiddenFolder = Utils.isForbiddenFolder(file); if (!forbiddenFolder && HgUtils.hgExistsFor(file)){ if (Mercurial.LOG.isLoggable(Level.FINE)) { Mercurial.LOG.log(Level.FINE, " found managed parent {0}", new Object[] { file }); diff -r 404ffed5292e -r 1846cac018a5 subversion/src/org/netbeans/modules/subversion/Subversion.java --- a/subversion/src/org/netbeans/modules/subversion/Subversion.java Wed Nov 02 23:08:27 2016 +0300 +++ b/subversion/src/org/netbeans/modules/subversion/Subversion.java Thu Nov 03 22:29:58 2016 +0300 @@ -528,7 +528,7 @@ } if (org.netbeans.modules.versioning.util.Utils.isScanForbidden(file)) break; // is the folder a special one where metadata should not be looked for? - boolean forbiddenFolder = org.netbeans.modules.versioning.util.Utils.isForbiddenFolder(file.getAbsolutePath()); + boolean forbiddenFolder = org.netbeans.modules.versioning.util.Utils.isForbiddenFolder(file); if (!forbiddenFolder && SvnUtils.hasMetadata(file)) { if (Subversion.LOG.isLoggable(Level.FINE)) { Subversion.LOG.log(Level.FINE, " found managed parent {0}", new Object[] { file }); diff -r 404ffed5292e -r 1846cac018a5 versioning.system.cvss/src/org/netbeans/modules/versioning/system/cvss/CvsVersioningSystem.java --- a/versioning.system.cvss/src/org/netbeans/modules/versioning/system/cvss/CvsVersioningSystem.java Wed Nov 02 23:08:27 2016 +0300 +++ b/versioning.system.cvss/src/org/netbeans/modules/versioning/system/cvss/CvsVersioningSystem.java Thu Nov 03 22:29:58 2016 +0300 @@ -463,7 +463,7 @@ } if (org.netbeans.modules.versioning.util.Utils.isScanForbidden(file)) break; // is the folder a special one where metadata should not be looked for? - boolean forbiddenFolder = org.netbeans.modules.versioning.util.Utils.isForbiddenFolder(file.getAbsolutePath()); + boolean forbiddenFolder = org.netbeans.modules.versioning.util.Utils.isForbiddenFolder(file); if (!forbiddenFolder && Utils.containsMetadata(file)) { LOG.log(Level.FINE, " found managed parent {0}", new Object[] { file }); topmost = file; diff -r 404ffed5292e -r 1846cac018a5 versioning.util/src/org/netbeans/modules/versioning/util/Utils.java --- a/versioning.util/src/org/netbeans/modules/versioning/util/Utils.java Wed Nov 02 23:08:27 2016 +0300 +++ b/versioning.util/src/org/netbeans/modules/versioning/util/Utils.java Thu Nov 03 22:29:58 2016 +0300 @@ -91,6 +91,7 @@ import org.netbeans.api.project.Sources; import org.netbeans.api.queries.FileEncodingQuery; import org.netbeans.api.queries.VersioningQuery; +import org.netbeans.modules.versioning.core.api.VCSFileProxy; import org.netbeans.modules.versioning.spi.VersioningSystem; import org.openide.ErrorManager; import org.openide.awt.AcceleratorBinding; @@ -298,11 +299,32 @@ * @return true if the folder identified by the given path * should be skipped when searching for metadata. * @since 1.54 + * @deprecated use org.netbeans.modules.versioning.core.Utils.isForbiddenFolder() */ public static boolean isForbiddenFolder (String folderPath) { return forbiddenFolders.contains(folderPath); } + /** + * Some folders are special and versioning should not look for metadata in + * them. Folders like /net with automount enabled may take a long time to + * answer I/O on their children, so + * VCSFileProxy.exists("/net/.git") will freeze until it + * timeouts. You should call this method before asking any I/O on children + * of this folder you are unsure to actually exist. This does not mean + * however that whole subtree should be excluded from version control, only + * that you should not look for the metadata directly in this folder. + * Returns true if the given folder is among such folders. + * + * @param folderPath path to a folder to query + * @return true if the folder identified by the given path + * should be skipped when searching for metadata. + * @since 1.54 + */ + public static boolean isForbiddenFolder (File folder) { + return org.netbeans.modules.versioning.core.Utils.isForbiddenFolder(VCSFileProxy.createFileProxy(folder)); + } + private static DataObject findDataObject(File file) { FileObject fo = FileUtil.toFileObject(file); if (fo != null) {