--- a/git.remote/src/org/netbeans/modules/git/remote/Git.java Wed Nov 02 23:08:27 2016 +0300
+++ a/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 });
--- a/git/src/org/netbeans/modules/git/Git.java Wed Nov 02 23:08:27 2016 +0300
+++ a/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
--- a/mercurial.remote/src/org/netbeans/modules/mercurial/remote/Mercurial.java Wed Nov 02 23:08:27 2016 +0300
+++ a/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 });
--- a/mercurial/src/org/netbeans/modules/mercurial/Mercurial.java Wed Nov 02 23:08:27 2016 +0300
+++ a/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 });
--- a/subversion/src/org/netbeans/modules/subversion/Subversion.java Wed Nov 02 23:08:27 2016 +0300
+++ a/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 });
--- a/versioning.system.cvss/src/org/netbeans/modules/versioning/system/cvss/CvsVersioningSystem.java Wed Nov 02 23:08:27 2016 +0300
+++ a/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;
--- a/versioning.util/src/org/netbeans/modules/versioning/util/Utils.java Wed Nov 02 23:08:27 2016 +0300
+++ a/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) {