//\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
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