From 417e895356327688587afe90b2542657d8d00e77 Mon Sep 17 00:00:00 2001 From: Al Poole Date: Mon, 19 Mar 2018 23:38:01 +0000 Subject: [PATCH] scm: store scm credentials and fix UI stash and commit. First, make sure the project stores user/email for SCM (again!). Also allow user to change the user/email > once. Add a check to stash (from menu) for credentials also. This allows us to change the remote user and email more than once. Also it ensures that --- src/bin/edi_main.c | 6 ++++++ src/bin/screens/edi_settings.c | 13 ++++++++++++ src/lib/edi_scm.c | 36 ++++++++++++++++++++++++++++------ 3 files changed, 49 insertions(+), 6 deletions(-) diff --git a/src/bin/edi_main.c b/src/bin/edi_main.c index f09447d..dcebd8a 100644 --- a/src/bin/edi_main.c +++ b/src/bin/edi_main.c @@ -1120,6 +1120,12 @@ static void _edi_menu_scm_stash_cb(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) { + if (!_edi_project_credentials_check()) + { + _edi_project_credentials_missing(); + return; + } + edi_screens_message_confirm(_edi_main_win, _("Are you sure you wish to stash these changes?"), _edi_scm_stash_do_cb, NULL); } diff --git a/src/bin/screens/edi_settings.c b/src/bin/screens/edi_settings.c index 05b2795..f63cacc 100644 --- a/src/bin/screens/edi_settings.c +++ b/src/bin/screens/edi_settings.c @@ -614,6 +614,15 @@ _edi_settings_project_remote_cb(void *data EINA_UNUSED, Evas_Object *obj, elm_object_disabled_set(entry, EINA_TRUE); } +static void _edi_settings_scm_credentials_set(const char *user_fullname, const char *user_email) +{ + if (!edi_scm_enabled()) + return; + + if (user_fullname && user_fullname[0] && user_email && user_email[0]) + edi_scm_credentials_set(user_fullname, user_email); +} + static void _edi_settings_project_email_cb(void *data EINA_UNUSED, Evas_Object *obj, void *event EINA_UNUSED) @@ -627,6 +636,8 @@ _edi_settings_project_email_cb(void *data EINA_UNUSED, Evas_Object *obj, _edi_project_config->user_email = eina_stringshare_add(elm_object_text_get(entry)); _edi_project_config_save(); + + _edi_settings_scm_credentials_set(_edi_project_config->user_fullname, _edi_project_config->user_email); } static void @@ -642,6 +653,8 @@ _edi_settings_project_name_cb(void *data EINA_UNUSED, Evas_Object *obj, _edi_project_config->user_fullname = eina_stringshare_add(elm_object_text_get(entry)); _edi_project_config_save(); + + _edi_settings_scm_credentials_set(_edi_project_config->user_fullname, _edi_project_config->user_email); } static Evas_Object * diff --git a/src/lib/edi_scm.c b/src/lib/edi_scm.c index 8ec5d2b..b79d13e 100644 --- a/src/lib/edi_scm.c +++ b/src/lib/edi_scm.c @@ -434,8 +434,16 @@ _edi_scm_git_remote_name_get(void) if (!engine) return NULL; - if (!_remote_name) - _remote_name = _edi_scm_exec_response("git config --get user.name"); + if (_remote_name) + free(_remote_name); + + _remote_name = _edi_scm_exec_response("git config --get user.name"); + + if (_remote_name && !_remote_name[0]) + { + free(_remote_name); + _remote_name = NULL; + } return _remote_name; } @@ -449,8 +457,16 @@ _edi_scm_git_remote_email_get(void) if (!engine) return NULL; - if (!_remote_email) - _remote_email = _edi_scm_exec_response("git config --get user.email"); + if (_remote_email) + free(_remote_email); + + _remote_email = _edi_scm_exec_response("git config --get user.email"); + + if (_remote_email && !_remote_email[0]) + { + free(_remote_email); + _remote_email = NULL; + } return _remote_email; } @@ -464,8 +480,16 @@ _edi_scm_git_remote_url_get(void) if (!engine) return NULL; - if (!_remote_url) - _remote_url = _edi_scm_exec_response("git remote get-url origin"); + if (_remote_url) + free(_remote_url); + + _remote_url = _edi_scm_exec_response("git remote get-url origin"); + + if (_remote_url && !_remote_url[0]) + { + free(_remote_url); + _remote_url = NULL; + } return _remote_url; }