private async Task Pull()
        {
            var branch = (Projeto.LocalBranch)DetailView.GetFocusedRow();

            if (branch == null)
            {
                return;
            }
            using (new DlgAguarde(this, "Aguarde", "Fazendo pull do branch seelcionado."))
            {
                try
                {
                    await Task.Run(() => branch.Pull());
                }
                catch (LibGit2SharpException x)
                {
                    if (x.Message.Contains("unsupported URL protocol") &&
                        MessageBox.Show
                        (
                            "Não foi possivel realizar a operação pois o repositório usa um protocolo não suportado.\n " +
                            "Deseja converter o repositório para https e tentar novamente?",
                            "Atenção",
                            MessageBoxButtons.YesNo,
                            MessageBoxIcon.Warning
                        ) == DialogResult.Yes)
                    {
                        var projeto = ((Projeto)gridProjetos.GetFocusedRow());
                        projeto.ConverterParaHttps();
                        await Pull();
                    }
                    else
                    {
                        DlgErro.Erro(this, x,
                                     "Falha ao tentar fazer o pull.\n"
                                     );
                    }
                }
            }
        }
 public async Task Fetch()
 {
     using (new DlgAguarde(this, "Fetch", "Baixando atualizações dos repositórios"))
     {
         var projeto = ((Projeto)gridProjetos.GetFocusedRow());
         if (projeto == null)
         {
             return;
         }
         try
         {
             await projeto.Fetch();
         }
         catch (LibGit2SharpException x)
         {
             if (x.Message.Contains("unsupported URL protocol") &&
                 MessageBox.Show
                 (
                     "Não foi possivel realizar a operação pois o repositório usa um protocolo não suportado.\n " +
                     "Deseja converter o repositório para https e tentar novamente?",
                     "Atenção",
                     MessageBoxButtons.YesNo,
                     MessageBoxIcon.Warning
                 ) == DialogResult.Yes)
             {
                 projeto.ConverterParaHttps();
                 await Fetch();
             }
             else
             {
                 DlgErro.Erro(this, x,
                              "Falha ao tentar fazer o fetch.\n"
                              );
             }
         }
     }
 }
        private async Task Push(Projeto projeto)
        {
            using (new DlgAguarde(this, "Push", "Subindo commits para o servidor remoto."))
            {
                try
                {
                    await projeto.Push();
                }
                catch (LibGit2SharpException x)
                {
                    if (x.Message.Contains("unsupported URL protocol") &&
                        MessageBox.Show
                        (
                            "Não foi possivel realizar a operação pois o repositório usa um protocolo não suportado.\n " +
                            "Deseja converter o repositório para https e tentar novamente?",
                            "Atenção",
                            MessageBoxButtons.YesNo,
                            MessageBoxIcon.Warning
                        ) == DialogResult.No)
                    {
                        return;
                    }

                    projeto.ConverterParaHttps();
                    await projeto.Push();
                }
                catch (Exception x)
                {
                    DlgErro.Erro(this, x,
                                 "Falha ao tentar fazer o push dos commits.\n" +
                                 "Verifique se o usuário e senha estão configurados corretamente.\n" +
                                 "Atualmente conexões ssh não são suportadas."
                                 );
                }
            }
        }