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