mirror of
https://github.com/subsurface/subsurface.git
synced 2025-01-31 19:23:24 +00:00
Cloud storage: clean up error propagation
We were falling of the end of a number of functions that were supposed to return 0 on success or an error. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
parent
0c5ea57f1c
commit
9ec155fad0
2 changed files with 14 additions and 8 deletions
19
git-access.c
19
git-access.c
|
@ -199,6 +199,8 @@ static int try_to_update(git_repository *repo, git_remote *origin, git_reference
|
|||
|
||||
static int check_remote_status(git_repository *repo, git_remote *origin, const char *branch, enum remote_transport rt)
|
||||
{
|
||||
int error = 0;
|
||||
|
||||
git_reference *local_ref, *remote_ref;
|
||||
|
||||
if (git_branch_lookup(&local_ref, repo, branch, GIT_BRANCH_LOCAL))
|
||||
|
@ -215,15 +217,16 @@ static int check_remote_status(git_repository *repo, git_remote *origin, const c
|
|||
opts.callbacks.credentials = credential_ssh_cb;
|
||||
else if (rt == RT_HTTPS)
|
||||
opts.callbacks.credentials = credential_https_cb;
|
||||
git_remote_push(origin, &refspec, &opts);
|
||||
error = git_remote_push(origin, &refspec, &opts);
|
||||
#else
|
||||
git_remote_push(origin, &refspec, NULL);
|
||||
error = git_remote_push(origin, &refspec, NULL);
|
||||
#endif
|
||||
} else {
|
||||
try_to_update(repo, origin, local_ref, remote_ref, rt);
|
||||
error = try_to_update(repo, origin, local_ref, remote_ref, rt);
|
||||
git_reference_free(remote_ref);
|
||||
}
|
||||
git_reference_free(local_ref);
|
||||
return error;
|
||||
}
|
||||
|
||||
int sync_with_remote(git_repository *repo, const char *remote, const char *branch, enum remote_transport rt)
|
||||
|
@ -265,12 +268,14 @@ int sync_with_remote(git_repository *repo, const char *remote, const char *branc
|
|||
error = git_remote_fetch(origin, NULL, NULL, NULL);
|
||||
#endif
|
||||
// NOTE! A fetch error is not fatal, we just report it
|
||||
if (error)
|
||||
if (error) {
|
||||
report_error("Unable to fetch remote '%s'", remote);
|
||||
else
|
||||
check_remote_status(repo, origin, branch, rt);
|
||||
|
||||
error = 0;
|
||||
} else {
|
||||
error = check_remote_status(repo, origin, branch, rt);
|
||||
}
|
||||
git_remote_free(origin);
|
||||
return error;
|
||||
}
|
||||
|
||||
static git_repository *update_local_repo(const char *localdir, const char *remote, const char *branch, enum remote_transport rt)
|
||||
|
|
|
@ -1142,9 +1142,10 @@ int do_git_save(git_repository *repo, const char *branch, const char *remote, bo
|
|||
if (prefs.cloud_background_sync) {
|
||||
/* now sync the tree with the cloud server */
|
||||
if (strstr(remote, "https://cloud.subsurface-divelog.org")) {
|
||||
sync_with_remote(repo, remote, branch, RT_HTTPS);
|
||||
return sync_with_remote(repo, remote, branch, RT_HTTPS);
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
int git_save_dives(struct git_repository *repo, const char *branch, const char *remote, bool select_only)
|
||||
|
|
Loading…
Add table
Reference in a new issue