mirror of
https://github.com/subsurface/subsurface.git
synced 2024-11-30 22:20:21 +00:00
cloud-storage: create consistent commit message for merges
This never made sense and I think I just forgot to complete this code when I first worked on it. Now we can see which version of Subsurface or Subsurface-mobile created a merge. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
parent
7a238b6146
commit
53fb533a99
3 changed files with 11 additions and 5 deletions
|
@ -349,6 +349,7 @@ static int try_to_git_merge(git_repository *repo, git_reference **local_p, git_r
|
|||
git_commit *local_commit, *remote_commit, *base_commit;
|
||||
git_index *merged_index;
|
||||
git_merge_options merge_options;
|
||||
struct membuffer msg = { 0, 0, NULL};
|
||||
|
||||
if (verbose) {
|
||||
char outlocal[41], outremote[41];
|
||||
|
@ -430,10 +431,12 @@ static int try_to_git_merge(git_repository *repo, git_reference **local_p, git_r
|
|||
goto write_error;
|
||||
if (git_tree_lookup(&merged_tree, repo, &merge_oid))
|
||||
goto write_error;
|
||||
if (git_signature_default(&author, repo) < 0)
|
||||
if (git_signature_now(&author, "Subsurface", "noemail@given") < 0)
|
||||
if (get_authorship(repo, &author) < 0)
|
||||
goto write_error;
|
||||
if (git_commit_create_v(&commit_oid, repo, NULL, author, author, NULL, "automatic merge", merged_tree, 2, local_commit, remote_commit))
|
||||
const char *user_agent = subsurface_user_agent();
|
||||
put_format(&msg, "Automatic merge\n\nCreated by %s\n", user_agent);
|
||||
free((void *)user_agent);
|
||||
if (git_commit_create_v(&commit_oid, repo, NULL, author, author, NULL, mb_cstring(&msg), merged_tree, 2, local_commit, remote_commit))
|
||||
goto write_error;
|
||||
if (git_commit_lookup(&commit, repo, &commit_oid))
|
||||
goto write_error;
|
||||
|
@ -450,12 +453,14 @@ static int try_to_git_merge(git_repository *repo, git_reference **local_p, git_r
|
|||
git_signature_free(author);
|
||||
if (verbose)
|
||||
fprintf(stderr, "Successfully merged repositories");
|
||||
free_buffer(&msg);
|
||||
return 0;
|
||||
|
||||
diverged_error:
|
||||
return report_error(translate("gettextFromC", "Remote storage and local data diverged"));
|
||||
|
||||
write_error:
|
||||
free_buffer(&msg);
|
||||
return report_error(translate("gettextFromC", "Remote storage and local data diverged. Error: writing the data failed (%s)"), giterr_last()->message);
|
||||
}
|
||||
|
||||
|
|
|
@ -31,6 +31,7 @@ void set_git_update_cb(int(*)(const char *));
|
|||
int git_storage_update_progress(const char *text);
|
||||
char *get_local_dir(const char *remote, const char *branch);
|
||||
int git_create_local_repo(const char *filename);
|
||||
int get_authorship(git_repository *repo, git_signature **authorp);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
|
|
|
@ -1020,7 +1020,7 @@ int update_git_checkout(git_repository *repo, git_object *parent, git_tree *tree
|
|||
return git_checkout_tree(repo, (git_object *) tree, &opts);
|
||||
}
|
||||
|
||||
static int get_authorship(git_repository *repo, git_signature **authorp)
|
||||
int get_authorship(git_repository *repo, git_signature **authorp)
|
||||
{
|
||||
if (git_signature_default(authorp, repo) == 0)
|
||||
return 0;
|
||||
|
|
Loading…
Reference in a new issue