OSDN Git Service

Share resource file between TortoiseGitBlame and TortoiseProc
[tortoisegit/TortoiseGitJp.git] / src / TortoiseProc / Commands / PrevDiffCommand.cpp
index 5584eea..096f494 100644 (file)
 //\r
 #include "StdAfx.h"\r
 #include "PrevDiffCommand.h"\r
-#include "ChangedDlg.h"\r
-#include "SVNDiff.h"\r
-#include "SVNStatus.h"\r
+#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
@@ -30,31 +32,52 @@ bool PrevDiffCommand::Execute()
        if (cmdLinePath.IsDirectory())\r
        {\r
                CChangedDlg dlg;\r
-               dlg.m_pathList = CTSVNPathList(cmdLinePath);\r
+               dlg.m_pathList = CTGitPathList(cmdLinePath);\r
                dlg.DoModal();\r
                bRet = true;\r
        }\r
        else\r
        {\r
-               SVNDiff diff;\r
-               diff.SetAlternativeTool(bAlternativeTool);\r
-               SVNStatus st;\r
+               CGitDiff diff;\r
+//             diff.SetAlternativeTool(bAlternativeTool);\r
+               GitStatus st;\r
                st.GetStatus(cmdLinePath);\r
-               if (st.status && st.status->entry && st.status->entry->cmt_rev)\r
+\r
+               if (1)\r
                {\r
-                       SVNDiff diff(NULL, hWndExplorer);\r
-                       bRet = diff.ShowCompare(cmdLinePath, SVNRev::REV_WC, cmdLinePath, st.status->entry->cmt_rev - 1, st.status->entry->cmt_rev);\r
+                       CString hash;\r
+                       CString logout;\r
+               \r
+                       CLogDataVector revs;\r
+                       revs.ParserShortLog(&cmdLinePath,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);\r
+                       }\r
+\r
+                       if( revs.size() == 2 )\r
+                       {\r
+                               CGitDiff diff;\r
+                               bRet = diff.Diff(&cmdLinePath, revs[0].m_CommitHash, revs[1].m_CommitHash, false);\r
+                       }\r
                }\r
                else\r
                {\r
-                       if (st.GetLastErrorMsg().IsEmpty())\r
+                       //if (st.GetLastErrorMsg().IsEmpty())\r
                        {\r
                                CMessageBox::Show(hWndExplorer, IDS_ERR_NOPREVREVISION, IDS_APPNAME, MB_ICONERROR);\r
                        }\r
-                       else\r
-                       {\r
-                               CMessageBox::Show(hWndExplorer, IDS_ERR_NOSTATUS, IDS_APPNAME, MB_ICONERROR);\r
-                       }\r
+                       //else\r
+                       //{\r
+                       //      CMessageBox::Show(hWndExplorer, IDS_ERR_NOSTATUS, IDS_APPNAME, MB_ICONERROR);\r
+                       //s}\r
                }\r
        }\r
        return bRet;\r