private volatile Holder<File> userHome;
+ private volatile Holder<File> gitSystemConfig;
+
/**
* Constructs a file system abstraction.
*/
*/
protected FS(FS src) {
userHome = src.userHome;
+ gitSystemConfig = src.gitSystemConfig;
}
/** @return a new instance of the same type of FS. */
return new File(w);
}
+ /**
+ * @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
}
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() {