summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Dirk Hohndel <dirk@hohndel.org>2015-06-13 18:27:41 -0700
committerGravatar Dirk Hohndel <dirk@hohndel.org>2015-06-13 18:36:04 -0700
commitef85875cd006db61679b95e62fd70101c9014799 (patch)
tree13a4d8b9851675aecd16d59f2c3d1a4ef5ea6ec8
parentf6981f021022a76498b417f1a34b4a21535c1a26 (diff)
downloadsubsurface-ef85875cd006db61679b95e62fd70101c9014799.tar.gz
Cloud storage: make do_git_save available to other modules
And add a parameter that tells it whether to try to save any Subsurface data or whether to just create a branch and push it out. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
-rw-r--r--git-access.h1
-rw-r--r--save-git.c11
2 files changed, 7 insertions, 5 deletions
diff --git a/git-access.h b/git-access.h
index e1b72d100..981c19fd1 100644
--- a/git-access.h
+++ b/git-access.h
@@ -18,6 +18,7 @@ extern struct git_repository *is_git_repository(const char *filename, const char
extern int sync_with_remote(struct git_repository *repo, const char *remote, const char *branch, enum remote_transport rt);
extern int git_save_dives(struct git_repository *, const char *, const char *remote, bool select_only);
extern int git_load_dives(struct git_repository *, const char *);
+extern int do_git_save(git_repository *repo, const char *branch, const char *remote, bool select_only, bool create_empty);
extern const char *saved_git_id;
extern void clear_git_id(void);
extern void set_git_id(const struct git_oid *);
diff --git a/save-git.c b/save-git.c
index c918f012f..4e1d34957 100644
--- a/save-git.c
+++ b/save-git.c
@@ -1116,7 +1116,7 @@ static int write_git_tree(git_repository *repo, struct dir *tree, git_oid *resul
return ret;
}
-static int do_git_save(git_repository *repo, const char *branch, const char *remote, bool select_only)
+int do_git_save(git_repository *repo, const char *branch, const char *remote, bool select_only, bool create_empty)
{
struct dir tree;
git_oid id;
@@ -1127,9 +1127,10 @@ static int do_git_save(git_repository *repo, const char *branch, const char *rem
if (git_treebuilder_new(&tree.files, repo, NULL))
return report_error("git treebuilder failed");
- /* Populate our tree data structure */
- if (create_git_tree(repo, &tree, select_only))
- return -1;
+ if (!create_empty)
+ /* Populate our tree data structure */
+ if (create_git_tree(repo, &tree, select_only))
+ return -1;
if (write_git_tree(repo, &tree, &id))
return report_error("git tree write failed");
@@ -1152,7 +1153,7 @@ int git_save_dives(struct git_repository *repo, const char *branch, const char *
if (repo == dummy_git_repository)
return report_error("Unable to open git repository '%s'", branch);
- ret = do_git_save(repo, branch, remote, select_only);
+ ret = do_git_save(repo, branch, remote, select_only, false);
git_repository_free(repo);
free((void *)branch);
return ret;