summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Dirk Hohndel <dirk@hohndel.org>2015-12-27 10:04:05 -0800
committerGravatar Dirk Hohndel <dirk@hohndel.org>2015-12-27 10:06:33 -0800
commit8c1cc4524d19e05b816f3388448cacd735d64504 (patch)
tree969bc2ffb8bbe8b6c0dfa632a4393963c5774b92
parentbc200c308933ec6e57700d1dfd5628cd26d1939c (diff)
downloadsubsurface-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.c9
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;