return out;\r
}\r
\r
+int CGit::GetCommitDiffList(CString &rev1,CString &rev2,CTGitPathList &outputlist)\r
+{\r
+ CString cmd;\r
+ \r
+ if(rev1 == GIT_REV_ZERO || rev2 == GIT_REV_ZERO)\r
+ {\r
+ //rev1=+_T("");\r
+ if(rev1 == GIT_REV_ZERO)\r
+ cmd.Format(_T("git.exe diff -r --raw -C -M --numstat -z %s"),rev2);\r
+ else\r
+ cmd.Format(_T("git.exe diff -r -R --raw -C -M --numstat -z %s"),rev1);\r
+ }else\r
+ {\r
+ cmd.Format(_T("git.exe diff-tree -r --raw -C -M --numstat -z %s %s"),rev2,rev1);\r
+ }\r
+\r
+ BYTE_VECTOR out;\r
+ if(g_Git.Run(cmd,&out))\r
+ return -1;\r
+\r
+ outputlist.ParserFromLog(out);\r
+\r
+}\r
+\r
int CGit::GetTagList(STRING_VECTOR &list)\r
{\r
int ret;\r
CString GetFullRefName(CString shortRefName);\r
//Removes 'refs/heads/' or just 'refs'. Example: refs/heads/master -> master\r
static CString StripRefName(CString refName);\r
+\r
+ int GetCommitDiffList(CString &rev1,CString &rev2,CTGitPathList &outpathlist);\r
\r
};\r
extern void GetTempPath(CString &path);\r
\r
void CGitStatusListCtrl::Show(DWORD dwShow, const CTGitPathList& checkedList, bool bShowFolders /* = true */)\r
{\r
+ DeleteAllItems();\r
+ for(int i=0;i<checkedList.GetCount();i++)\r
+ this->AddEntry((CTGitPath *)&checkedList[i],0,i);\r
return ;\r
#if 0\r
\r
// return 0;\r
// }\r
#endif\r
- CString cmd;\r
- CString rev1=m_rev1.m_CommitHash;\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 -z %s"),m_rev2.m_CommitHash);\r
- else\r
- cmd.Format(_T("git.exe diff -r -R --raw -C -M --numstat -z %s"),m_rev1.m_CommitHash);\r
- }else\r
- {\r
- cmd.Format(_T("git.exe diff-tree -r --raw -C -M --numstat -z %s %s"),m_rev2.m_CommitHash,rev1);\r
- }\r
\r
- BYTE_VECTOR out;\r
- g_Git.Run(cmd,&out);\r
- this->m_arFileList.ParserFromLog(out);\r
- \r
+ g_Git.GetCommitDiffList(m_rev1.m_CommitHash,m_rev2.m_CommitHash,m_arFileList);\r
+ \r
CString sFilterText;\r
m_cFilter.GetWindowText(sFilterText);\r
m_cFileList.SetRedraw(false);\r
, m_bAutoLoadPuttyKey(FALSE)\r
{\r
m_pTooltip=&this->m_tooltips;\r
+ m_bInited=false;\r
}\r
\r
CSyncDlg::~CSyncDlg()\r
\r
this->LoadBranchInfo();\r
\r
+ this->m_bInited=true;\r
+ FetchOutList();\r
\r
return TRUE; // return TRUE unless you set the focus to a control\r
// EXCEPTION: OCX Property Pages should return FALSE\r
}\r
void CSyncDlg::FetchOutList()\r
{\r
+ if(!m_bInited)\r
+ return;\r
m_OutChangeFileList.Clear();\r
this->m_OutLogList.Clear();\r
\r
CString localbranch;\r
localbranch=this->m_ctrlLocalBranch.GetString();\r
\r
- if(localbranch != m_OutLocalBranch && m_OutRemoteBranch != remotebranch)\r
+ if(localbranch != m_OutLocalBranch || m_OutRemoteBranch != remotebranch)\r
{\r
m_OutLogList.ClearText();\r
m_OutLogList.FillGitLog(NULL,CGit:: LOG_INFO_STAT| CGit::LOG_INFO_FILESTATE | CGit::LOG_INFO_SHOW_MERGEDFILE,\r
&remotebranch,&localbranch);\r
+ \r
+ CString str;\r
+ if(m_OutLogList.GetItemCount() == 0)\r
+ { \r
+ str.Format(_T("No commits ahead \"%s\""),remotebranch);\r
+ m_OutLogList.ShowText(str);\r
+ this->m_ctrlStatus.SetWindowText(str);\r
+ this->m_ctrlTabCtrl.ShowTab(m_OutChangeFileList.GetDlgCtrlID()-1,FALSE);\r
+ }\r
+ else\r
+ {\r
+ str.Format(_T("%d commits ahead \"%s\""),m_OutLogList.GetItemCount(),remotebranch);\r
+ this->m_ctrlStatus.SetWindowText(str);\r
+ g_Git.GetCommitDiffList(localbranch,remotebranch,m_arOutChangeList);\r
+ m_OutChangeFileList.Show(0,this->m_arOutChangeList);\r
+ m_OutChangeFileList.SetEmptyString(CString(_T("No changed file")));\r
+ this->m_ctrlTabCtrl.ShowTab(m_OutChangeFileList.GetDlgCtrlID()-1,TRUE);\r
+ }\r
}\r
this->m_OutLocalBranch=localbranch;\r
this->m_OutRemoteBranch=remotebranch;\r
CMFCTabCtrl m_ctrlTabCtrl;\r
CBalloon m_tooltips;\r
\r
+ BOOL m_bInited;\r
+ \r
CGitLogList m_OutLogList;\r
CGitLogList m_InLogList;\r
\r
CGitStatusListCtrl m_OutChangeFileList;\r
CGitStatusListCtrl m_InChangeFileList;\r
CGitStatusListCtrl m_ConflictFileList;\r
+ CTGitPathList m_arOutChangeList;\r
\r
virtual void LocalBranchChange(){FetchOutList();};\r
virtual void RemoteBranchChange(){FetchOutList();};\r