OSDN Git Service

Correct format patch command -<num> argument
[tortoisegit/TortoiseGitJp.git] / src / TortoiseProc / Commands / FormatPatchCommand.cpp
index 56a5a65..eea9c39 100644 (file)
 #include "ShellUpdater.h"\r
 \r
 #include "ProgressDlg.h"\r
+#include "AppUtils.h"\r
 \r
 bool FormatPatchCommand::Execute()\r
 {\r
        CFormatPatchDlg dlg;\r
 //     dlg.m_bIsTag=TRUE;\r
-       \r
+       CString startval = parser.GetVal(_T("startrev"));\r
+       CString endval = parser.GetVal(_T("endrev"));\r
+\r
+       if( endval.IsEmpty() && (!startval.IsEmpty()))\r
+       {\r
+               dlg.m_Since=startval;\r
+               dlg.m_Radio = IDC_RADIO_SINCE;\r
+\r
+       }else if( (!endval.IsEmpty()) && (!startval.IsEmpty()))\r
+       {\r
+               dlg.m_From=startval;\r
+               dlg.m_To=endval;\r
+               dlg.m_Radio = IDC_RADIO_RANGE;\r
+       }\r
+\r
        if(dlg.DoModal()==IDOK)\r
        {\r
                CString cmd;\r
@@ -44,7 +59,7 @@ bool FormatPatchCommand::Execute()
                        range=dlg.m_Since;\r
                        break;\r
                case IDC_RADIO_NUM:\r
-                       range.Format(_T("-n%d"),dlg.m_Num);\r
+                       range.Format(_T("-%d"),dlg.m_Num);\r
                        break;\r
                case IDC_RADIO_RANGE:\r
                        range.Format(_T("%s..%s"),dlg.m_From,dlg.m_To);\r
@@ -57,11 +72,37 @@ bool FormatPatchCommand::Execute()
 \r
                CProgressDlg progress;\r
                progress.m_GitCmd=cmd;\r
-               if(progress.DoModal()==IDOK)\r
-                       return TRUE;\r
-\r
-               return TRUE;\r
+               progress.DoModal();\r
+               \r
+               CShellUpdater::Instance().AddPathForUpdate(CTGitPath(dlg.m_Dir));\r
+               CShellUpdater::Instance().Flush();\r
                \r
+               if(!progress.m_GitStatus)\r
+               {\r
+                       if(dlg.m_bSendMail)\r
+                       {\r
+                               CTGitPathList list;\r
+                               CString log=progress.m_LogText;\r
+                               int start=log.Find(cmd);\r
+                               if(start >=0)\r
+                                       CString one=log.Tokenize(_T("\n"),start);\r
+\r
+                               while(start>=0)\r
+                               {\r
+                                       CString one=log.Tokenize(_T("\n"),start);\r
+                                       one=one.Trim();\r
+                                       if(one.IsEmpty())\r
+                                               continue;\r
+                                       one.Replace(_T('/'),_T('\\'));\r
+                                       CTGitPath path;\r
+                                       path.SetFromWin(one);\r
+                                       list.AddPath(path);\r
+                               }\r
+\r
+                               CAppUtils::SendPatchMail(list);\r
+                       }\r
+               }\r
+               return !progress.m_GitStatus;\r
        }\r
        return FALSE;\r
 }\r