mirror of
https://github.com/subsurface/subsurface.git
synced 2024-11-28 05:00:20 +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_commit *local_commit, *remote_commit, *base_commit;
|
||||||
git_index *merged_index;
|
git_index *merged_index;
|
||||||
git_merge_options merge_options;
|
git_merge_options merge_options;
|
||||||
|
struct membuffer msg = { 0, 0, NULL};
|
||||||
|
|
||||||
if (verbose) {
|
if (verbose) {
|
||||||
char outlocal[41], outremote[41];
|
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;
|
goto write_error;
|
||||||
if (git_tree_lookup(&merged_tree, repo, &merge_oid))
|
if (git_tree_lookup(&merged_tree, repo, &merge_oid))
|
||||||
goto write_error;
|
goto write_error;
|
||||||
if (git_signature_default(&author, repo) < 0)
|
if (get_authorship(repo, &author) < 0)
|
||||||
if (git_signature_now(&author, "Subsurface", "noemail@given") < 0)
|
goto write_error;
|
||||||
goto write_error;
|
const char *user_agent = subsurface_user_agent();
|
||||||
if (git_commit_create_v(&commit_oid, repo, NULL, author, author, NULL, "automatic merge", merged_tree, 2, local_commit, remote_commit))
|
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;
|
goto write_error;
|
||||||
if (git_commit_lookup(&commit, repo, &commit_oid))
|
if (git_commit_lookup(&commit, repo, &commit_oid))
|
||||||
goto write_error;
|
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);
|
git_signature_free(author);
|
||||||
if (verbose)
|
if (verbose)
|
||||||
fprintf(stderr, "Successfully merged repositories");
|
fprintf(stderr, "Successfully merged repositories");
|
||||||
|
free_buffer(&msg);
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
diverged_error:
|
diverged_error:
|
||||||
return report_error(translate("gettextFromC", "Remote storage and local data diverged"));
|
return report_error(translate("gettextFromC", "Remote storage and local data diverged"));
|
||||||
|
|
||||||
write_error:
|
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);
|
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);
|
int git_storage_update_progress(const char *text);
|
||||||
char *get_local_dir(const char *remote, const char *branch);
|
char *get_local_dir(const char *remote, const char *branch);
|
||||||
int git_create_local_repo(const char *filename);
|
int git_create_local_repo(const char *filename);
|
||||||
|
int get_authorship(git_repository *repo, git_signature **authorp);
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#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);
|
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)
|
if (git_signature_default(authorp, repo) == 0)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
Loading…
Reference in a new issue