#include "BrowseFolder.h"\r
#include "RevisionDlg.h"\r
#include ".\filediffdlg.h"\r
+#include "gitdiff.h"\r
+#include "CommonResource.h"\r
\r
#define ID_COMPARE 1\r
#define ID_BLAME 2\r
m_rev2 = rev2;\r
\r
}\r
-\r
-#if 0\r
-void CFileDiffDlg::SetDiff(const CTGitPath& path1, GitRev rev1, const CTGitPath& path2, GitRev rev2, svn_depth_t depth, bool ignoreancestry)\r
+void CFileDiffDlg::SetDiff(CTGitPath * path, CString &hash1, CString &hash2)\r
+{\r
+ if(path!=NULL)\r
+ {\r
+ m_path1 = *path;\r
+ m_path2 = *path;\r
+ }\r
+ m_rev1.m_CommitHash = hash1;\r
+ m_rev2.m_CommitHash = hash2;\r
+}\r
+void CFileDiffDlg::SetDiff(CTGitPath * path, GitRev rev1)\r
{\r
- m_bDoPegDiff = false;\r
- m_path1 = path1;\r
- m_path2 = path2;\r
+ if(path!=NULL)\r
+ {\r
+ m_path1 = *path;\r
+ m_path2 = *path;\r
+ }\r
m_rev1 = rev1;\r
- m_rev2 = rev2;\r
- m_depth = depth;\r
- m_bIgnoreancestry = ignoreancestry;\r
+ m_rev2.m_CommitHash = _T("");\r
+ m_rev2.m_Subject = _T("Previou Version");\r
+\r
+ //this->GetDlgItem()->EnableWindow(FALSE);\r
+ \r
+ \r
}\r
-#endif\r
\r
BOOL CFileDiffDlg::OnInitDialog()\r
{\r
\r
// Start with focus on file list\r
GetDlgItem(IDC_FILELIST)->SetFocus();\r
+\r
+ if(m_rev2.m_CommitHash.IsEmpty())\r
+ m_SwitchButton.EnableWindow(FALSE);\r
return FALSE;\r
}\r
\r
#endif\r
CString cmd;\r
CString rev1=m_rev1.m_CommitHash;\r
- if(this->m_rev1.m_CommitHash == GIT_REV_ZERO )\r
+ if(this->m_rev1.m_CommitHash == GIT_REV_ZERO || this->m_rev2.m_CommitHash == GIT_REV_ZERO)\r
{\r
rev1=+_T("");\r
+ if(this->m_rev1.m_CommitHash == GIT_REV_ZERO)\r
+ cmd.Format(_T("git.exe diff -r --raw -C -M --numstat %s"),m_rev2.m_CommitHash);\r
+ else\r
+ cmd.Format(_T("git.exe diff -r -R --raw -C -M --numstat %s"),m_rev1.m_CommitHash);\r
+ }else\r
+ {\r
+ cmd.Format(_T("git.exe diff-tree -r --raw -C -M --numstat %s %s"),rev1,m_rev2.m_CommitHash);\r
}\r
- cmd.Format(_T("git.cmd diff-tree -r --raw -C -M --numstat %s %s"),rev1,m_rev2.m_CommitHash);\r
+\r
CString out;\r
g_Git.Run(cmd,&out);\r
this->m_arFileList.ParserFromLog(out);\r
\r
void CFileDiffDlg::DoDiff(int selIndex, bool blame)\r
{\r
+\r
+ CGitDiff diff;\r
+ CTGitPath* fd = m_arFilteredList[selIndex];\r
+ diff.Diff(fd, this->m_rev1.m_CommitHash, this->m_rev2.m_CommitHash, blame, FALSE);\r
+\r
#if 0\r
CFileDiffDlg::CTGitPath* fd = m_arFilteredList[selIndex];\r
\r
\r
void CFileDiffDlg::OnLvnGetInfoTipFilelist(NMHDR *pNMHDR, LRESULT *pResult)\r
{\r
-#if 0\r
+\r
LPNMLVGETINFOTIP pGetInfoTip = reinterpret_cast<LPNMLVGETINFOTIP>(pNMHDR);\r
if (pGetInfoTip->iItem >= (int)m_arFilteredList.size())\r
return;\r
\r
- CString path = m_path1.GetGitPathString() + _T("/") + m_arFilteredList[pGetInfoTip->iItem].path.GetGitPathString();\r
+ CString path = m_path1.GetGitPathString() + _T("/") + m_arFilteredList[pGetInfoTip->iItem]->GetGitPathString();\r
if (pGetInfoTip->cchTextMax > path.GetLength())\r
_tcsncpy_s(pGetInfoTip->pszText, pGetInfoTip->cchTextMax, path, pGetInfoTip->cchTextMax);\r
-#endif\r
+\r
*pResult = 0;\r
}\r
\r
temp.LoadString(IDS_LOG_POPUP_COMPARETWO);\r
popup.AppendMenu(MF_STRING | MF_ENABLED, ID_COMPARE, temp);\r
temp.LoadString(IDS_FILEDIFF_POPBLAME);\r
- popup.AppendMenu(MF_STRING | MF_ENABLED, ID_BLAME, temp);\r
+ //popup.AppendMenu(MF_STRING | MF_ENABLED, ID_BLAME, temp);\r
popup.AppendMenu(MF_SEPARATOR, NULL);\r
temp.LoadString(IDS_FILEDIFF_POPSAVELIST);\r
popup.AppendMenu(MF_STRING | MF_ENABLED, ID_SAVEAS, temp);\r
temp.LoadString(IDS_FILEDIFF_POPCLIPBOARD);\r
popup.AppendMenu(MF_STRING | MF_ENABLED, ID_CLIPBOARD, temp);\r
temp.LoadString(IDS_FILEDIFF_POPEXPORT);\r
- popup.AppendMenu(MF_STRING | MF_ENABLED, ID_EXPORT, temp);\r
+ //popup.AppendMenu(MF_STRING | MF_ENABLED, ID_EXPORT, temp);\r
int cmd = popup.TrackPopupMenu(TPM_RETURNCMD | TPM_LEFTALIGN | TPM_NONOTIFY, point.x, point.y, this, 0);\r
m_bCancelled = false;\r
switch (cmd)\r
break;\r
case ID_EXPORT:\r
{\r
+#if 0 //this funcation seem no useful\r
// export all changed files to a folder\r
CBrowseFolder browseFolder;\r
browseFolder.m_style = BIF_EDITBOX | BIF_NEWDIALOGSTYLE | BIF_RETURNFSANCESTORS | BIF_RETURNONLYFSDIRS;\r
CMessageBox::Show(NULL, IDS_ERR_THREADSTARTFAILED, IDS_APPNAME, MB_OK | MB_ICONERROR);\r
}\r
}\r
+#endif; \r
}\r
+\r
break;\r
+\r
}\r
}\r
}\r
\r
void CFileDiffDlg::OnBnClickedSwitchleftright()\r
{\r
-#if 0\r
+\r
if (m_bThreadRunning)\r
return;\r
CString sFilterString;\r
\r
m_cFileList.SetRedraw(false);\r
m_cFileList.DeleteAllItems();\r
- for (int i=0; i<(int)m_arFileList.size(); ++i)\r
+ for (int i=0; i<(int)m_arFileList.GetCount(); ++i)\r
{\r
CTGitPath fd = m_arFileList[i];\r
- if (fd.kind == svn_client_diff_summarize_kind_added)\r
- fd.kind = svn_client_diff_summarize_kind_deleted;\r
- else if (fd.kind == svn_client_diff_summarize_kind_deleted)\r
- fd.kind = svn_client_diff_summarize_kind_added;\r
- m_arFileList[i] = fd;\r
+ if (fd.m_Action == CTGitPath::LOGACTIONS_ADDED)\r
+ fd.m_Action = CTGitPath::LOGACTIONS_DELETED;\r
+ else if (fd.m_Action == CTGitPath::LOGACTIONS_DELETED)\r
+ fd.m_Action = CTGitPath::LOGACTIONS_ADDED;\r
+ ( CTGitPath)m_arFileList[i] = ( CTGitPath)fd;\r
}\r
Filter(sFilterString);\r
\r
m_rev1 = m_rev2;\r
m_rev2 = rev;\r
SetURLLabels();\r
-#endif\r
+\r
}\r
\r
void CFileDiffDlg::SetURLLabels()\r