OSDN Git Service

Add return value handle of format patch
[tortoisegit/TortoiseGitJp.git] / src / TortoiseProc / Commands / PrevDiffCommand.cpp
index d5a3c11..4a35ea4 100644 (file)
@@ -21,6 +21,9 @@
 #include "GitDiff.h"\r
 #include "GitStatus.h"\r
 #include "MessageBox.h"\r
+#include "ChangedDlg.h"\r
+#include "LogDlgHelper.h"\r
+#include "CommonResource.h"\r
 \r
 bool PrevDiffCommand::Execute()\r
 {\r
@@ -28,10 +31,10 @@ bool PrevDiffCommand::Execute()
        bool bAlternativeTool = !!parser.HasKey(_T("alternative"));\r
        if (cmdLinePath.IsDirectory())\r
        {\r
-//             CChangedDlg dlg;\r
-//             dlg.m_pathList = CTSVNPathList(cmdLinePath);\r
-//             dlg.DoModal();\r
-//             bRet = true;\r
+               CChangedDlg dlg;\r
+               dlg.m_pathList = CTGitPathList(cmdLinePath);\r
+               dlg.DoModal();\r
+               bRet = true;\r
        }\r
        else\r
        {\r
@@ -42,8 +45,29 @@ bool PrevDiffCommand::Execute()
 \r
                if (1)\r
                {\r
-                       CGitDiff diff;\r
-                       bRet = diff.Diff(&cmdLinePath, git_revnum_t(_T("HEAD")), git_revnum_t(_T("HEAD~1")), false);\r
+                       CString hash;\r
+                       CString logout;\r
+               \r
+                       CLogDataVector revs;\r
+       \r
+                       revs.ParserShortLog(&cmdLinePath,hash,2);\r
+                       if( revs.size() == 0)\r
+                       {\r
+                               CMessageBox::Show(hWndExplorer, IDS_ERR_NOPREVREVISION, IDS_APPNAME, MB_ICONERROR);\r
+                               return FALSE;\r
+                       }\r
+\r
+                       if( revs.size() == 1 )\r
+                       {\r
+                               CGitDiff diff;\r
+                               bRet = (diff.DiffNull(&cmdLinePath,revs[0].m_CommitHash) != 0);\r
+                       }\r
+\r
+                       if( revs.size() == 2 )\r
+                       {\r
+                               CGitDiff diff;\r
+                               bRet = diff.Diff(&cmdLinePath,&cmdLinePath, revs[0].m_CommitHash, revs[1].m_CommitHash, false);\r
+                       }\r
                }\r
                else\r
                {\r