summaryrefslogtreecommitdiffstats
path: root/core/file.c
diff options
context:
space:
mode:
authorGravatar Dirk Hohndel <dirk@hohndel.org>2016-04-05 22:51:09 -0700
committerGravatar Dirk Hohndel <dirk@hohndel.org>2016-04-05 22:57:16 -0700
commit3555cadb77ca25fcf4883a5f1506e83222d6b29d (patch)
tree41c397e941e99d9aa052890dc18a6ded40ffb40c /core/file.c
parent8b670c3f3f937ca7b491e3e44f462a86b1509f53 (diff)
downloadsubsurface-3555cadb77ca25fcf4883a5f1506e83222d6b29d.tar.gz
QML UI: don't fetch the remote twice when loading
We first check the sha to see if we want to load at all. But at that point we already have the repository and the branch and we have synced with the remote. So when we decide that we need to reload from storage, we don't need to repeat those steps, instead we can go directly to the git load. For that to work we need to pass the repository pointer and the branch name back to the caller so that we can directly call git_load_dives(). Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Diffstat (limited to 'core/file.c')
-rw-r--r--core/file.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/core/file.c b/core/file.c
index 685fa82a7..52c93a719 100644
--- a/core/file.c
+++ b/core/file.c
@@ -435,13 +435,17 @@ static int parse_file_buffer(const char *filename, struct memblock *mem)
return parse_xml_buffer(filename, mem->buffer, mem->size, &dive_table, NULL);
}
-int check_git_sha(const char *filename)
+int check_git_sha(const char *filename, struct git_repository **git_p, const char **branch_p)
{
struct git_repository *git;
const char *branch = NULL;
char *current_sha = strdup(saved_git_id);
git = is_git_repository(filename, &branch, NULL, false);
+ if (git_p)
+ *git_p = git;
+ if (branch_p)
+ *branch_p = branch;
if (prefs.cloud_git_url &&
strstr(filename, prefs.cloud_git_url)
&& git == dummy_git_repository) {