@ -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 ;