diff options
-rw-r--r-- | org.eclipse.jgit/src/org/eclipse/jgit/util/FS.java | 28 | ||||
-rw-r--r-- | org.eclipse.jgit/src/org/eclipse/jgit/util/SystemReader.java | 2 |
2 files changed, 29 insertions, 1 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 557aa8e03e..a46dc33cdb 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/util/FS.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/util/FS.java @@ -157,6 +157,8 @@ public abstract class FS { private volatile Holder<File> userHome; + private volatile Holder<File> gitSystemConfig; + /** * Constructs a file system abstraction. */ @@ -172,6 +174,7 @@ public abstract class FS { */ protected FS(FS src) { userHome = src.userHome; + gitSystemConfig = src.gitSystemConfig; } /** @return a new instance of the same type of FS. */ @@ -548,6 +551,31 @@ public abstract class FS { } /** + * @return the currently used path to the system-wide Git configuration + * file or {@code null} if none has been set. + * @since 4.0 + */ + public File getGitSystemConfig() { + if (gitSystemConfig == null) { + gitSystemConfig = new Holder<File>(discoverGitSystemConfig()); + } + return gitSystemConfig.value; + } + + /** + * Set the path to the system-wide Git configuration file to use. + * + * @param configFile + * the path to the config file. + * @return {@code this} + * @since 4.0 + */ + public FS setGitSystemConfig(File configFile) { + gitSystemConfig = new Holder<File>(configFile); + return this; + } + + /** * @param grandchild * @return the parent directory of this file's parent directory or * {@code null} in case there's no grandparent directory diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/util/SystemReader.java b/org.eclipse.jgit/src/org/eclipse/jgit/util/SystemReader.java index 04a7051a72..b4233b6ccd 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/util/SystemReader.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/util/SystemReader.java @@ -89,7 +89,7 @@ public abstract class SystemReader { } public FileBasedConfig openSystemConfig(Config parent, FS fs) { - File configFile = fs.discoverGitSystemConfig(); + File configFile = fs.getGitSystemConfig(); if (configFile == null) { return new FileBasedConfig(null, fs) { public void load() { |