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