Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarc Strapetz2010-09-01 15:14:16 +0000
committerMarc Strapetz2010-09-01 15:14:16 +0000
commita46abab244cec1dfc52af861744e1e93efd8d314 (patch)
tree44df2808c909b4af72b039ec075d9a742ed10553
parent6a05904e53bb60f96c344db33016b66f170cb9f0 (diff)
downloadjgit-a46abab244cec1dfc52af861744e1e93efd8d314.tar.gz
jgit-a46abab244cec1dfc52af861744e1e93efd8d314.tar.xz
jgit-a46abab244cec1dfc52af861744e1e93efd8d314.zip
Add FS.detect() for detection of file system abstraction.
To give the user more control on which file system abstraction should be used on Windows, FS.detect() may be configured to assume a Cygwin installation or nor.
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/util/FS.java40
1 files changed, 34 insertions, 6 deletions
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/util/FS.java b/org.eclipse.jgit/src/org/eclipse/jgit/util/FS.java
index cb5c8bda54..9e817ca770 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/util/FS.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/util/FS.java
@@ -52,16 +52,44 @@ public abstract class FS {
/** The auto-detected implementation selected for this operating system and JRE. */
public static final FS DETECTED;
- static {
+ /**
+ * Auto-detect the appropriate file system abstraction, taking into account
+ * the presence of a Cygwin installation on the system. Using jgit in
+ * combination with Cygwin requires a more elaborate (and possibly slower)
+ * resolution of file system paths.
+ *
+ * @param cygwinUsed
+ * <ul>
+ * <li><code>Boolean.TRUE</code> to assume that Cygwin is used in
+ * combination with jgit</li>
+ * <li><code>Boolean.FALSE</code> to assume that Cygwin is
+ * <b>not</b> used with jgit</li>
+ * <li><code>null</code> to auto-detect whether a Cygwin
+ * installation is present on the system and in this case assume
+ * that Cygwin is used</li>
+ * </ul>
+ *
+ * Note: this parameter is only relevant on Windows.
+ *
+ * @return detected file system abstraction
+ */
+ public static FS detect(Boolean cygwinUsed) {
if (FS_Win32.detect()) {
- if (FS_Win32_Cygwin.detect())
- DETECTED = new FS_Win32_Cygwin();
+ boolean useCygwin = (cygwinUsed == null && FS_Win32_Cygwin.detect())
+ || Boolean.TRUE.equals(cygwinUsed);
+
+ if (useCygwin)
+ return new FS_Win32_Cygwin();
else
- DETECTED = new FS_Win32();
+ return new FS_Win32();
} else if (FS_POSIX_Java6.detect())
- DETECTED = new FS_POSIX_Java6();
+ return new FS_POSIX_Java6();
else
- DETECTED = new FS_POSIX_Java5();
+ return new FS_POSIX_Java5();
+ }
+
+ static {
+ DETECTED = detect(null);
}
private final File userHome;

Back to the top