GitConfig (@NotNull File configFile) { GitConfig emptyConfig = new GitConfig(emptyList(), emptyList(), emptyList(), new Core(null)); if (!configFile.exists() || configFile.isDirectory()) { LOG.info("No .git/config file at " + configFile.getPath()); return emptyConfig; } Ini ini; try { ini = GitConfigHelperKt.loadIniFile(configFile); } catch (IOException e) { LOG.warn("Couldn't read .git/config at" + configFile.getPath(), e); return emptyConfig; } Pair<Collection<Remote>, Collection<Url>> remotesAndUrls = parseRemotes(ini); Collection<BranchConfig> trackedInfos = parseTrackedInfos(ini); Core core = parseCore(ini); return new GitConfig(remotesAndUrls.getFirst(), remotesAndUrls.getSecond(), trackedInfos, core); }