static @NotNull GitConfig read(@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);
  }
static @NotNull GitConfig read(@NotNull File configFile)