From cb4ecacedf7b2b4f28bbd1bdf39f0abadda30a18 Mon Sep 17 00:00:00 2001 From: Sup Yut Sum Date: Sun, 14 Sep 2014 15:19:10 +0800 Subject: [PATCH] Call CGit::DeleteRemoteRefs() to delete remote tags Signed-off-by: Sup Yut Sum --- src/TortoiseProc/DeleteRemoteTagDlg.cpp | 78 ++------------------------------- 1 file changed, 4 insertions(+), 74 deletions(-) diff --git a/src/TortoiseProc/DeleteRemoteTagDlg.cpp b/src/TortoiseProc/DeleteRemoteTagDlg.cpp index 73163df32..2c5bf07a3 100644 --- a/src/TortoiseProc/DeleteRemoteTagDlg.cpp +++ b/src/TortoiseProc/DeleteRemoteTagDlg.cpp @@ -144,89 +144,19 @@ void CDeleteRemoteTagDlg::OnBnClickedOk() return; } - if (g_Git.UsingLibGit2(CGit::GIT_CMD_PUSH)) - { - CSysProgressDlg sysProgressDlg; - sysProgressDlg.SetTitle(CString(MAKEINTRESOURCE(IDS_APPNAME))); - sysProgressDlg.SetLine(1, CString(MAKEINTRESOURCE(IDS_DELETING_REMOTE_REFS))); - sysProgressDlg.SetLine(2, CString(MAKEINTRESOURCE(IDS_PROGRESSWAIT))); - sysProgressDlg.SetShowProgressBar(false); - sysProgressDlg.ShowModal(this, true); - CAutoRepository repo(g_Git.GetGitRepository()); - if (!repo) - { - CMessageBox::Show(m_hWnd, CGit::GetLibGit2LastErr(_T("Could not open repository.")), _T("TortoiseGit"), MB_OK | MB_ICONERROR); - return; - } - - CStringA remoteA = CUnicodeUtils::GetUTF8(m_sRemote); - CAutoRemote remote; - if (git_remote_load(remote.GetPointer(), repo, remoteA) < 0) - { - CMessageBox::Show(m_hWnd, CGit::GetLibGit2LastErr(_T("Could not load remote.")), _T("TortoiseGit"), MB_OK | MB_ICONERROR); - return; - } - - git_remote_callbacks callbacks = GIT_REMOTE_CALLBACKS_INIT; - callbacks.credentials = CAppUtils::Git2GetUserPassword; - git_remote_set_callbacks(remote, &callbacks); - if (git_remote_connect(remote, GIT_DIRECTION_PUSH) < 0) - { - CMessageBox::Show(m_hWnd, CGit::GetLibGit2LastErr(_T("Could not connect to remote.")), _T("TortoiseGit"), MB_OK | MB_ICONERROR); - return; - } - - git_push* push = nullptr; - if (git_push_new(&push, remote) < 0) - { - CMessageBox::Show(m_hWnd, CGit::GetLibGit2LastErr(_T("Could not prepare to push.")), _T("TortoiseGit"), MB_OK | MB_ICONERROR); - return; - } - - POSITION pos = m_ctrlTags.GetFirstSelectedItemPosition(); - int index; - while ((index = m_ctrlTags.GetNextSelectedItem(pos)) >= 0) - { - CString refspec = _T(":refs/tags/") + m_taglist[index]; - if (git_push_add_refspec(push, CUnicodeUtils::GetUTF8(refspec)) < 0) - { - CMessageBox::Show(m_hWnd, CGit::GetLibGit2LastErr(_T("Could not add push refspec.")), _T("TortoiseGit"), MB_OK | MB_ICONERROR); - git_push_free(push); - return; - } - } - - if (git_push_finish(push) < 0) - { - CMessageBox::Show(m_hWnd, CGit::GetLibGit2LastErr(_T("Could not finish a push.")), _T("TortoiseGit"), MB_OK | MB_ICONERROR); - git_push_free(push); - return; - } - - git_push_free(push); - sysProgressDlg.Stop(); - BringWindowToTop(); - Refresh(); - return; - } - - CMassiveGitTask mgtPush(_T("push ") + m_sRemote, FALSE); - + STRING_VECTOR list; POSITION pos = m_ctrlTags.GetFirstSelectedItemPosition(); int index; while ((index = m_ctrlTags.GetNextSelectedItem(pos)) >= 0) - { - mgtPush.AddFile(_T(":refs/tags/") + m_taglist[index]); - } - + list.push_back(_T("refs/tags/") + m_taglist[index]); CSysProgressDlg sysProgressDlg; sysProgressDlg.SetTitle(CString(MAKEINTRESOURCE(IDS_APPNAME))); sysProgressDlg.SetLine(1, CString(MAKEINTRESOURCE(IDS_DELETING_REMOTE_REFS))); sysProgressDlg.SetLine(2, CString(MAKEINTRESOURCE(IDS_PROGRESSWAIT))); sysProgressDlg.SetShowProgressBar(false); sysProgressDlg.ShowModal(this, true); - BOOL cancel = FALSE; - mgtPush.Execute(cancel); + if (g_Git.DeleteRemoteRefs(m_sRemote, list)) + CMessageBox::Show(m_hWnd, g_Git.GetGitLastErr(_T("Could not delete remote ref."), CGit::GIT_CMD_PUSH), _T("TortoiseGit"), MB_OK | MB_ICONERROR); sysProgressDlg.Stop(); BringWindowToTop(); Refresh(); -- 2.11.4.GIT