diff options
author | Dirk Hohndel <dirk@hohndel.org> | 2015-12-27 10:04:05 -0800 |
---|---|---|
committer | Dirk Hohndel <dirk@hohndel.org> | 2015-12-27 10:06:33 -0800 |
commit | 8c1cc4524d19e05b816f3388448cacd735d64504 (patch) | |
tree | 969bc2ffb8bbe8b6c0dfa632a4393963c5774b92 | |
parent | bc200c308933ec6e57700d1dfd5628cd26d1939c (diff) | |
download | subsurface-8c1cc4524d19e05b816f3388448cacd735d64504.tar.gz |
Don't reload identical data
If we already have the same SHA loaded and no changes have been made to the
dive list then there is no point in loading the dives again.
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
-rw-r--r-- | subsurface-core/file.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/subsurface-core/file.c b/subsurface-core/file.c index 0263da457..188a24100 100644 --- a/subsurface-core/file.c +++ b/subsurface-core/file.c @@ -9,6 +9,7 @@ #include <time.h> #include "dive.h" +#include "divelist.h" #include "file.h" #include "git-access.h" #include "qthelperfromc.h" @@ -447,6 +448,14 @@ int parse_file(const char *filename) * give up here and don't send errors about git repositories */ return 0; + /* do we already have this exact state loaded ? + * get the SHA and compare with what we currently have */ + const char * sha = get_sha(git, branch); + if (same_string(sha, saved_git_id) && !unsaved_changes()) { + fprintf(stderr, "already have loaded SHA %s - don't load again\n", sha); + return 0; + } + if (git && !git_load_dives(git, branch)) return 0; |