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
This commit is contained in:
Al Poole 2018-03-19 23:38:01 +00:00
parent ca25dea2d8
commit 417e895356
3 changed files with 49 additions and 6 deletions

View File

@ -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);
}

View File

@ -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 *

View File

@ -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;
}