diff options
author | Dirk Hohndel <dirk@hohndel.org> | 2020-04-10 17:19:51 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-04-10 17:19:51 -0700 |
commit | 61f9c4114e076e77f75db48611283209b33e4202 (patch) | |
tree | 5d959c312b5d6651e16c8cca0c5c80b1f032ee72 /core | |
parent | 42c974edd73b48520a5f0d4579510c39a56902c5 (diff) | |
parent | 53fb533a99eef94d5df1a5258bc23ec123f59d6d (diff) | |
download | subsurface-61f9c4114e076e77f75db48611283209b33e4202.tar.gz |
Merge pull request #2737 from Subsurface-divelog/libgitCleanup
Libgit cleanup
Diffstat (limited to 'core')
-rw-r--r-- | core/android.cpp | 3 | ||||
-rw-r--r-- | core/dive.h | 6 | ||||
-rw-r--r-- | core/git-access.c | 17 | ||||
-rw-r--r-- | core/git-access.h | 1 | ||||
-rw-r--r-- | core/ios.cpp | 5 | ||||
-rw-r--r-- | core/macos.c | 6 | ||||
-rw-r--r-- | core/save-git.c | 23 | ||||
-rw-r--r-- | core/unix.c | 30 | ||||
-rw-r--r-- | core/windows.c | 3 |
9 files changed, 18 insertions, 76 deletions
diff --git a/core/android.cpp b/core/android.cpp index b86f2e557..d1a1570fb 100644 --- a/core/android.cpp +++ b/core/android.cpp @@ -53,9 +53,6 @@ bool subsurface_ignore_font(const char *font) return false; } -void subsurface_user_info(struct user_info *user) -{ /* Encourage use of at least libgit2-0.20 */ } - static const char *system_default_path_append(const char *append) { // Qt appears to find a working path for us - let's just go with that diff --git a/core/dive.h b/core/dive.h index 04d90a997..13de360ed 100644 --- a/core/dive.h +++ b/core/dive.h @@ -310,12 +310,6 @@ extern int save_dive_sites_logic(const char *filename, const struct dive_site *s struct membuffer; extern void save_one_dive_to_mb(struct membuffer *b, struct dive *dive, bool anonymize); -struct user_info { - char *name; - char *email; -}; - -extern void subsurface_user_info(struct user_info *); extern void subsurface_console_init(void); extern void subsurface_console_exit(void); extern bool subsurface_user_is_root(void); diff --git a/core/git-access.c b/core/git-access.c index 3688cb90c..961c9b271 100644 --- a/core/git-access.c +++ b/core/git-access.c @@ -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]; @@ -359,11 +360,7 @@ static int try_to_git_merge(git_repository *repo, git_reference **local_p, git_r } git_merge_init_options(&merge_options, GIT_MERGE_OPTIONS_VERSION); -#if !LIBGIT2_VER_MAJOR && LIBGIT2_VER_MINOR > 23 merge_options.flags = GIT_MERGE_FIND_RENAMES; -#else - merge_options.tree_flags = GIT_MERGE_TREE_FIND_RENAMES; -#endif merge_options.file_favor = GIT_MERGE_FILE_FAVOR_UNION; merge_options.rename_threshold = 100; if (git_commit_lookup(&local_commit, repo, local_id)) { @@ -434,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; @@ -454,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); } diff --git a/core/git-access.h b/core/git-access.h index 19cdde46a..8e20395a4 100644 --- a/core/git-access.h +++ b/core/git-access.h @@ -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 } diff --git a/core/ios.cpp b/core/ios.cpp index d54f2b4b8..b8fe7227e 100644 --- a/core/ios.cpp +++ b/core/ios.cpp @@ -37,11 +37,6 @@ bool subsurface_ignore_font(const char*) return false; } -void subsurface_user_info(struct user_info *) -{ - // We use of at least libgit2-0.20 -} - static const char *system_default_path_append(const char *append) { // Qt appears to find a working path for us - let's just go with that diff --git a/core/macos.c b/core/macos.c index dc07dc7b6..0ee7c1952 100644 --- a/core/macos.c +++ b/core/macos.c @@ -20,12 +20,6 @@ #include <zip.h> #include <sys/stat.h> -void subsurface_user_info(struct user_info *info) -{ - UNUSED(info); - /* Nothing, let's use libgit2-20 on MacOS */ -} - /* macos defines CFSTR to create a CFString object from a constant, * but no similar macros if a C string variable is supposed to be * the argument. We add this here (hardcoding the default allocator diff --git a/core/save-git.c b/core/save-git.c index 2b6b7c29a..2d58f931a 100644 --- a/core/save-git.c +++ b/core/save-git.c @@ -1021,25 +1021,18 @@ 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 LIBGIT2_VER_MAJOR || LIBGIT2_VER_MINOR >= 20 if (git_signature_default(authorp, repo) == 0) return 0; + +#ifdef SUBSURFACE_MOBILE +#define APPNAME "Subsurface-mobile" +#else +#define APPNAME "Subsurface" #endif - /* try to fetch the user info from the OS, otherwise use default values. */ - struct user_info user = { .name = NULL, .email = NULL }; - subsurface_user_info(&user); - if (!user.name || !*user.name) - user.name = strdup("Subsurface"); - if (!user.email) - user.email = strdup("subsurface-app-account@subsurface-divelog.org"); - - /* git_signature_default() is too recent */ - int ret = git_signature_now(authorp, user.name, user.email); - free((void *)user.name); - free((void *)user.email); - return ret; + return git_signature_now(authorp, APPNAME, "subsurface-app-account@subsurface-divelog.org"); +#undef APPNAME } static void create_commit_message(struct membuffer *msg, bool create_empty) diff --git a/core/unix.c b/core/unix.c index 5106278a2..bcac33ff3 100644 --- a/core/unix.c +++ b/core/unix.c @@ -34,36 +34,6 @@ bool subsurface_ignore_font(const char *font) return false; } -void subsurface_user_info(struct user_info *user) -{ - struct passwd *pwd = getpwuid(getuid()); - const char *username = getenv("USER"); - - if (pwd) { - if (!empty_string(pwd->pw_gecos)) { - user->name = strdup(pwd->pw_gecos); - // We only want the name, not the office or phone number - char *c = user->name; - while (*c) { - if (*c == ',') { - *c = '\0'; - break; - } - ++c; - } - } - if (!username) - username = pwd->pw_name; - } - if (!empty_string(username)) { - char hostname[64]; - struct membuffer mb = {}; - gethostname(hostname, sizeof(hostname)); - put_format(&mb, "%s@%s", username, hostname); - user->email = detach_cstring(&mb); - } -} - static const char *system_default_path_append(const char *append) { const char *home = getenv("HOME"); diff --git a/core/windows.c b/core/windows.c index 4ca0c621a..37f4d3a63 100644 --- a/core/windows.c +++ b/core/windows.c @@ -23,9 +23,6 @@ const char current_system_divelist_default_font[] = "Segoe UI"; const char *system_divelist_default_font = non_standard_system_divelist_default_font; double system_divelist_default_font_size = -1; -void subsurface_user_info(struct user_info *user) -{ /* Encourage use of at least libgit2-0.20 */ } - extern bool isWin7Or8(); void subsurface_OS_pref_setup(void) |