mirror of
				https://github.com/subsurface/subsurface.git
				synced 2025-02-19 22:16:15 +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) | ||||
| 			goto write_error; | ||||
| 	if (git_commit_create_v(&commit_oid, repo, NULL, author, author, NULL, "automatic merge", merged_tree, 2, local_commit, remote_commit)) | ||||
| 	if (get_authorship(repo, &author) < 0) | ||||
| 		goto write_error; | ||||
| 	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…
	
	Add table
		Add a link
		
	
		Reference in a new issue