static struct git_repository *get_remote_repo(const char *localdir, const char *remote, const char *branch) { struct stat st; enum remote_transport rt = url_to_remote_transport(remote); if (verbose > 1) { fprintf(stderr, "git_remote_repo: accessing %s\n", remote); } git_storage_update_progress(translate("gettextFromC", "Synchronising data file")); /* Do we already have a local cache? */ if (!subsurface_stat(localdir, &st)) { if (!S_ISDIR(st.st_mode)) { if (is_subsurface_cloud) (void)cleanup_local_cache(remote, branch); else report_error("local git cache at '%s' is corrupt", localdir); return NULL; } return update_local_repo(localdir, remote, branch, rt); } else { /* We have no local cache yet. * Take us temporarly online to create a local and * remote cloud repo. */ git_repository *ret; bool glo = git_local_only; git_local_only = false; ret = create_local_repo(localdir, remote, branch, rt); git_local_only = glo; return ret; } /* all normal cases are handled above */ return 0; }
static struct git_repository *get_remote_repo(const char *localdir, const char *remote, const char *branch) { struct stat st; enum remote_transport rt; /* figure out the remote transport */ if (strncmp(remote, "ssh://", 6) == 0) rt = RT_SSH; else if (strncmp(remote, "https://", 8) == 0) rt = RT_HTTPS; else rt = RT_OTHER; if (verbose > 1) { fprintf(stderr, "git storage: accessing %s\n", remote); } /* Do we already have a local cache? */ if (!stat(localdir, &st)) { if (!S_ISDIR(st.st_mode)) { if (is_subsurface_cloud) (void)cleanup_local_cache(remote, branch); else report_error("local git cache at '%s' is corrupt"); return NULL; } return update_local_repo(localdir, remote, branch, rt); } return create_local_repo(localdir, remote, branch, rt); }
static struct git_repository *get_remote_repo(const char *localdir, const char *remote, const char *branch) { struct stat st; enum remote_transport rt; /* figure out the remote transport */ if (strncmp(remote, "ssh://", 6) == 0) rt = RT_SSH; else if (strncmp(remote, "https://", 8) == 0) rt = RT_HTTPS; else rt = RT_OTHER; /* Do we already have a local cache? */ if (!stat(localdir, &st)) { if (!S_ISDIR(st.st_mode)) { report_error("local git cache at '%s' is corrupt"); return NULL; } return update_local_repo(localdir, remote, branch, rt); } return create_local_repo(localdir, remote, branch, rt); }