summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Dirk Hohndel <dirk@hohndel.org>2016-04-22 07:00:29 -0700
committerGravatar Dirk Hohndel <dirk@hohndel.org>2016-04-27 15:05:37 -0700
commit9ba090c31fd87bdec71c4e14cae3d71c4bb07eac (patch)
treeb2ef19dfac1d60060541b0b3c91db3f9fea3a8ba
parentd6b36c47cb2810921ae638a9237310052d9920ef (diff)
downloadsubsurface-9ba090c31fd87bdec71c4e14cae3d71c4bb07eac.tar.gz
git storage: init local repository
So far we didn't do that at all, we either relied on the user manually creating a local repo, or we cloned a remote repo. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
-rw-r--r--core/git-access.c14
-rw-r--r--core/git-access.h1
2 files changed, 15 insertions, 0 deletions
diff --git a/core/git-access.c b/core/git-access.c
index 2b7fa0ca2..0e012b082 100644
--- a/core/git-access.c
+++ b/core/git-access.c
@@ -429,6 +429,11 @@ static int try_to_update(git_repository *repo, git_remote *origin, git_reference
return report_error("Unable to get local or remote SHA1");
}
if (git_merge_base(&base, repo, local_id, remote_id)) {
+ // TODO:
+ // if they have no merge base, they actually are different repos
+ // so instead merge this as merging a commit into a repo - git_merge() appears to do that
+ // but needs testing and cleanup afterwards
+ //
if (is_subsurface_cloud)
goto cloud_data_error;
else
@@ -919,3 +924,12 @@ struct git_repository *is_git_repository(const char *filename, const char **bran
*branchp = branch;
return repo;
}
+
+int git_create_local_repo(const char *filename)
+{
+ git_repository *repo;
+ int ret = git_repository_init(&repo, filename, false);
+ if (ret != 0)
+ (void)report_error("Create local repo failed with error code %d", ret);
+ return ret;
+}
diff --git a/core/git-access.h b/core/git-access.h
index f098f1e8d..b8b8181fe 100644
--- a/core/git-access.h
+++ b/core/git-access.h
@@ -27,6 +27,7 @@ extern void set_git_id(const struct git_oid *);
void set_git_update_cb(int(*)(bool, const char *));
int git_storage_update_progress(bool reset, const char *text);
char *get_local_dir(const char *remote, const char *branch);
+int git_create_local_repo(const char *filename);
extern int last_git_storage_update_val;