OSDN Git Service

Fixed issue #187: Allow start new rebase after finish rebase
[tortoisegit/TortoiseGitJp.git] / src / TortoiseProc / Commands / FetchCommand.cpp
index e6bbfb9..1f544bb 100644 (file)
@@ -25,6 +25,8 @@
 #include "MessageBox.h"\r
 #include "PullFetchDlg.h"\r
 #include "ProgressDlg.h"\r
+#include "AppUtils.h"\r
+#include "RebaseDlg.h"\r
 \r
 bool FetchCommand::Execute()\r
 {\r
@@ -33,14 +35,53 @@ bool FetchCommand::Execute()
 \r
        if(dlg.DoModal()==IDOK)\r
        {\r
+               if(dlg.m_bAutoLoad)\r
+               {\r
+                       CAppUtils::LaunchPAgent(NULL,&dlg.m_RemoteURL);\r
+               }\r
+\r
                CString url;\r
                url=dlg.m_RemoteURL;\r
                CString cmd;\r
-               cmd.Format(_T("git.exe fetch \"%s\" %s"),url, dlg.m_RemoteBranchName);\r
+               cmd.Format(_T("git.exe fetch -v \"%s\" %s"),url, dlg.m_RemoteBranchName);\r
                CProgressDlg progress;\r
+\r
+               if(!dlg.m_bRebase)\r
+               {\r
+                       progress.m_changeAbortButtonOnSuccessTo=_T("&Rebase");\r
+               }else\r
+               {\r
+                       progress.m_bAutoCloseOnSuccess = true;\r
+               }\r
+\r
                progress.m_GitCmd=cmd;\r
-               if(progress.DoModal()==IDOK)\r
+               int userResponse=progress.DoModal();\r
+\r
+               if( (userResponse==IDC_PROGRESS_BUTTON1) || ( progress.m_GitStatus ==0 && dlg.m_bRebase) )\r
+               {\r
+                       CRebaseDlg dlg;\r
+                       dlg.m_PostButtonTexts.Add(_T("Email &Patch..."));\r
+                       int response = dlg.DoModal();\r
+                       if(response == IDOK)\r
+                       {\r
+                               return TRUE;\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 FALSE;\r
+                               }\r
+\r
+                               CAppUtils::SendPatchMail(cmd,out);\r
+                       }\r
                        return TRUE;\r
+               }\r
        }\r
 #if 0\r
        CCloneDlg dlg;\r