Browse Source

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.
stable-0.9
Marc Strapetz 15 years ago
parent
commit
a46abab244
  1. 40
      org.eclipse.jgit/src/org/eclipse/jgit/util/FS.java

40
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. */ /** The auto-detected implementation selected for this operating system and JRE. */
public static final FS DETECTED; 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.detect()) {
if (FS_Win32_Cygwin.detect()) boolean useCygwin = (cygwinUsed == null && FS_Win32_Cygwin.detect())
DETECTED = new FS_Win32_Cygwin(); || Boolean.TRUE.equals(cygwinUsed);
if (useCygwin)
return new FS_Win32_Cygwin();
else else
DETECTED = new FS_Win32(); return new FS_Win32();
} else if (FS_POSIX_Java6.detect()) } else if (FS_POSIX_Java6.detect())
DETECTED = new FS_POSIX_Java6(); return new FS_POSIX_Java6();
else else
DETECTED = new FS_POSIX_Java5(); return new FS_POSIX_Java5();
}
static {
DETECTED = detect(null);
} }
private final File userHome; private final File userHome;

Loading…
Cancel
Save