OSDN Git Service

merge original branch.
[tortoisegit/TortoiseGitJp.git] / src / TortoiseProc / Commands / PrevDiffCommand.cpp
index 7b3bb4c..87972e2 100644 (file)
 #include "GitStatus.h"\r
 #include "MessageBox.h"\r
 #include "ChangedDlg.h"\r
+#include "LogDlgHelper.h"\r
+#include "CommonResource.h"\r
+#include "FileDiffDlg.h"\r
 \r
 bool PrevDiffCommand::Execute()\r
 {\r
        bool bRet = false;\r
        bool bAlternativeTool = !!parser.HasKey(_T("alternative"));\r
-       if (cmdLinePath.IsDirectory())\r
+       if (this->orgCmdLinePath.IsDirectory())\r
        {\r
-               CChangedDlg dlg;\r
-               dlg.m_pathList = CTGitPathList(cmdLinePath);\r
+               CFileDiffDlg dlg;\r
+               \r
+               dlg.m_strRev1 = _T("HEAD") ;\r
+               dlg.m_strRev2 = _T("HEAD~1");\r
+\r
+               //dlg.m_pathList = CTGitPathList(cmdLinePath);\r
                dlg.DoModal();\r
                bRet = true;\r
        }\r
@@ -43,8 +50,31 @@ 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
+                       CLogCache cache;\r
+                       revs.m_pLogCache=&cache;\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.GetGitRevAt(0).m_CommitHash.ToString()) != 0);\r
+                       }\r
+\r
+                       if( revs.size() == 2 )\r
+                       {\r
+                               CGitDiff diff;\r
+                               bRet = diff.Diff(&cmdLinePath,&cmdLinePath, revs.GetGitRevAt(0).m_CommitHash.ToString(), revs.GetGitRevAt(1).m_CommitHash.ToString(), false);\r
+                       }\r
                }\r
                else\r
                {\r