#include "MessageBox.h"\r
#include "ImportPatchDlg.h"\r
#include "PathUtils.h"\r
+#include "RebaseDlg.h"\r
+\r
// CSyncDlg dialog\r
\r
IMPLEMENT_DYNAMIC(CSyncDlg, CResizableStandAloneDialog)\r
this->m_GitCmdList.clear();\r
\r
this->UpdateData();\r
- UpateCombox();\r
+ UpdateCombox();\r
\r
m_oldHash = g_Git.GetHash(CString(_T("HEAD")));\r
\r
}\r
\r
}\r
+\r
+ ///Fetch\r
+ if(CurrentEntry == 1 || CurrentEntry ==2 ) //Fetch\r
+ {\r
+ cmd.Format(_T("git.exe fetch %s \"%s\" %s"),\r
+ force,\r
+ m_strURL,\r
+ this->m_strRemoteBranch);\r
+ if(CurrentEntry == 1) \r
+ m_CurrentCmd = GIT_COMMAND_FETCH;\r
+ else\r
+ m_CurrentCmd = GIT_COMMAND_FETCHANDREBASE;\r
+ m_GitCmdList.push_back(cmd);\r
+\r
+ m_pThread = AfxBeginThread(ProgressThreadEntry, this, THREAD_PRIORITY_NORMAL,0,CREATE_SUSPENDED);\r
+ if (m_pThread==NULL)\r
+ {\r
+ // ReportError(CString(MAKEINTRESOURCE(IDS_ERR_THREADSTARTFAILED)));\r
+ }\r
+ else\r
+ {\r
+ m_pThread->m_bAutoDelete = TRUE;\r
+ m_pThread->ResumeThread();\r
+ }\r
+ }\r
+\r
+\r
\r
}\r
\r
}\r
}\r
\r
+void CSyncDlg::FetchComplete()\r
+{\r
+ EnableControlButton(true);\r
+ SwitchToInput();\r
+ this->FetchOutList(true);\r
+\r
+ ShowTab(IDC_CMD_LOG);\r
+ if( (!this->m_GitCmdStatus) && this->m_CurrentCmd == GIT_COMMAND_FETCHANDREBASE)\r
+ {\r
+ CRebaseDlg dlg;\r
+ dlg.m_PostButtonText=_T("Email &Patch...");\r
+ int response = dlg.DoModal();\r
+ if(response == IDOK)\r
+ {\r
+ return ;\r
+ }\r
+\r
+ if(response == IDC_REBASE_POST_BUTTON)\r
+ {\r
+ CString cmd,out;\r
+ cmd.Format(_T("git.exe format-patch -o \"%s\" %s..%s"),\r
+ g_Git.m_CurrentDir,\r
+ dlg.m_Upstream,dlg.m_Branch);\r
+ if(g_Git.Run(cmd,&out,CP_ACP))\r
+ {\r
+ CMessageBox::Show(NULL,out,_T("TortoiseGit"),MB_OK|MB_ICONERROR);\r
+ return ;\r
+ }\r
+\r
+ CAppUtils::SendPatchMail(cmd,out);\r
+ }\r
+ }\r
+}\r
\r
void CSyncDlg::OnBnClickedButtonPush()\r
{\r
// TODO: Add your control notification handler code here\r
this->UpdateData();\r
\r
+ if(this->m_strURL.IsEmpty())\r
+ {\r
+ CMessageBox::Show(NULL,_T("URL can't Empty"),_T("TortoiseGit"),MB_OK|MB_ICONERROR);\r
+ return;\r
+ }\r
+\r
this->m_regPushButton=this->m_ctrlPush.GetCurrentEntry();\r
this->SwitchToRun();\r
this->m_bAbort=false;\r
CString force;\r
CString all;\r
\r
- UpateCombox();\r
+ UpdateCombox();\r
\r
switch (m_ctrlPush.GetCurrentEntry())\r
{\r
this->AddOthersToAnchor();\r
// TODO: Add extra initialization here\r
\r
- this->m_ctrlPush.AddEntry(CString(_T("Push")));\r
- this->m_ctrlPush.AddEntry(CString(_T("Push tags")));\r
+ this->m_ctrlPush.AddEntry(CString(_T("Pus&h")));\r
+ this->m_ctrlPush.AddEntry(CString(_T("Push ta&gs")));\r
///this->m_ctrlPush.AddEntry(CString(_T("Push All")));\r
\r
this->m_ctrlPull.AddEntry(CString(_T("&Pull")));\r
- this->m_ctrlPull.AddEntry(CString(_T("&Fetch")));\r
- this->m_ctrlPull.AddEntry(CString(_T("Fetch&&Rebase")));\r
+ this->m_ctrlPull.AddEntry(CString(_T("Fetc&h")));\r
+ this->m_ctrlPull.AddEntry(CString(_T("Fetch&&Re&base")));\r
\r
\r
WorkingDir.Replace(_T(':'),_T('_'));\r
\r
EnableSaveRestore(_T("SyncDlg"));\r
\r
+ this->m_ctrlURL.LoadHistory(CString(_T("Software\\TortoiseGit\\History\\SyncURL\\"))+WorkingDir, _T("url"));\r
+ \r
+ m_ctrlURL.SetCurSel(0);\r
+ m_ctrlRemoteBranch.SetCurSel(0);\r
+\r
this->LoadBranchInfo();\r
\r
this->m_bInited=true;\r
{\r
PullComplete();\r
}\r
+ if(this->m_CurrentCmd == GIT_COMMAND_FETCH || this->m_CurrentCmd == GIT_COMMAND_FETCHANDREBASE)\r
+ {\r
+ FetchComplete();\r
+ }\r
}\r
\r
if(lParam != 0)\r
\r
CAppUtils::LaunchApplication(proc,IDS_ERROR_CANNON_FIND_TORTOISEPROC,false);\r
}\r
+\r
+void CSyncDlg::OnOK()\r
+{\r
+ // TODO: Add your specialized code here and/or call the base class\r
+ UpdateCombox();\r
+ m_ctrlURL.SaveHistory();\r
+ SaveHistory();\r
+ __super::OnOK();\r
+}\r