Browse Source

FS: Allow cloning an FS instance

This permits an application to create its own copy of FS.DETECTED
before manually setting the userHome or gitPrefix.

Bug: 337101
Change-Id: Ieea33c8d0ebdc801a4656b829d2a4b398559fd45
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
stable-0.12
Shawn O. Pearce 14 years ago
parent
commit
ae1f7947de
  1. 14
      org.eclipse.jgit/src/org/eclipse/jgit/util/FS.java
  2. 8
      org.eclipse.jgit/src/org/eclipse/jgit/util/FS_POSIX.java
  3. 13
      org.eclipse.jgit/src/org/eclipse/jgit/util/FS_POSIX_Java5.java
  4. 13
      org.eclipse.jgit/src/org/eclipse/jgit/util/FS_POSIX_Java6.java
  5. 12
      org.eclipse.jgit/src/org/eclipse/jgit/util/FS_Win32.java
  6. 12
      org.eclipse.jgit/src/org/eclipse/jgit/util/FS_Win32_Cygwin.java

14
org.eclipse.jgit/src/org/eclipse/jgit/util/FS.java

@ -110,6 +110,20 @@ public abstract class FS {
// Do nothing by default.
}
/**
* Initialize this FS using another's current settings.
*
* @param src
* the source FS to copy from.
*/
protected FS(FS src) {
userHome = src.userHome;
gitPrefix = src.gitPrefix;
}
/** @return a new instance of the same type of FS. */
public abstract FS newInstance();
/**
* Does this operating system and JRE support the execute flag on files?
*

8
org.eclipse.jgit/src/org/eclipse/jgit/util/FS_POSIX.java

@ -77,6 +77,14 @@ abstract class FS_POSIX extends FS {
return null;
}
FS_POSIX() {
super();
}
FS_POSIX(FS src) {
super(src);
}
@Override
public ProcessBuilder runInShell(String cmd, String[] args) {
List<String> argv = new ArrayList<String>(4 + args.length);

13
org.eclipse.jgit/src/org/eclipse/jgit/util/FS_POSIX_Java5.java

@ -46,6 +46,19 @@ package org.eclipse.jgit.util;
import java.io.File;
class FS_POSIX_Java5 extends FS_POSIX {
FS_POSIX_Java5() {
super();
}
FS_POSIX_Java5(FS src) {
super(src);
}
@Override
public FS newInstance() {
return new FS_POSIX_Java5(this);
}
public boolean supportsExecute() {
return false;
}

13
org.eclipse.jgit/src/org/eclipse/jgit/util/FS_POSIX_Java6.java

@ -74,6 +74,19 @@ class FS_POSIX_Java6 extends FS_POSIX {
}
}
FS_POSIX_Java6() {
super();
}
FS_POSIX_Java6(FS src) {
super(src);
}
@Override
public FS newInstance() {
return new FS_POSIX_Java6(this);
}
public boolean supportsExecute() {
return true;
}

12
org.eclipse.jgit/src/org/eclipse/jgit/util/FS_Win32.java

@ -64,6 +64,18 @@ class FS_Win32 extends FS {
&& StringUtils.toLowerCase(osDotName).indexOf("windows") != -1;
}
FS_Win32() {
super();
}
FS_Win32(FS src) {
super(src);
}
public FS newInstance() {
return new FS_Win32(this);
}
public boolean supportsExecute() {
return false;
}

12
org.eclipse.jgit/src/org/eclipse/jgit/util/FS_Win32_Cygwin.java

@ -68,6 +68,18 @@ class FS_Win32_Cygwin extends FS_Win32 {
return cygpath != null;
}
FS_Win32_Cygwin() {
super();
}
FS_Win32_Cygwin(FS src) {
super(src);
}
public FS newInstance() {
return new FS_Win32_Cygwin(this);
}
public File resolve(final File dir, final String pn) {
String w = readPipe(dir, //
new String[] { cygpath, "--windows", "--absolute", pn }, //

Loading…
Cancel
Save