, m_nSortedColumn(-1)\r
, m_sNoPropValueText(MAKEINTRESOURCE(IDS_STATUSLIST_NOPROPVALUE))\r
{\r
+ m_FileLoaded=0;\r
m_critSec.Init();\r
}\r
\r
BOOL CGitStatusListCtrl::GetStatus ( const CTGitPathList& pathList\r
, bool bUpdate /* = FALSE */\r
, bool bShowIgnores /* = false */\r
+ , bool bShowUnRev\r
, bool bShowUserProps /* = false */)\r
{\r
-#if 0\r
Locker lock(m_critSec);\r
+ int mask= CGitStatusListCtrl::FILELIST_MODIFY;\r
+ if(bShowIgnores)\r
+ mask|= CGitStatusListCtrl::FILELIST_IGNORE;\r
+ if(bShowUnRev)\r
+ mask|= CGitStatusListCtrl::FILELIST_UNVER;\r
+ this->UpdateFileList(mask,bUpdate,(CTGitPathList*)&pathList);\r
+\r
+#if 0\r
+ \r
int refetchcounter = 0;\r
BOOL bRet = TRUE;\r
Invalidate();\r
int nListItems = GetItemCount();\r
for (int i=0; i<nListItems; ++i)\r
{\r
- const CTGitPath& baseDirectory = GetListEntry(i)->GetPath().GetDirectory();\r
+ CTGitPath& baseDirectory = *(CTGitPath*)this->GetItemData(i);\r
if(commonBaseDirectory.IsEmpty())\r
{\r
commonBaseDirectory = baseDirectory;\r
}\r
}\r
\r
-int CGitStatusListCtrl::UpdateFileList(git_revnum_t hash)\r
+int CGitStatusListCtrl::UpdateFileList(git_revnum_t hash,CTGitPathList *list)\r
{\r
CString out;\r
this->m_bBusy=TRUE;\r
if(hash == GIT_REV_ZERO)\r
{\r
- CString cmd(_T("git.cmd diff-index --raw HEAD --numstat -C -M"));\r
- g_Git.Run(cmd,&out);\r
+ int count = 0;\r
+ if(list == NULL)\r
+ count = 1;\r
+ else\r
+ count = list->GetCount();\r
+\r
+ for(int i=0;i<count;i++)\r
+ { \r
+ CString cmdout;\r
+ CString cmd;\r
+ if(list == NULL)\r
+ cmd=(_T("git.cmd diff-index --raw HEAD --numstat -C -M"));\r
+ else\r
+ cmd.Format(_T("git.cmd diff-index --raw HEAD --numstat -C -M -- \"%s\""),(*list)[i].GetGitPathString());\r
+\r
+ g_Git.Run(cmd,&cmdout);\r
+\r
+ out+=cmdout;\r
+ }\r
+\r
+\r
this->m_StatusFileList.ParserFromLog(out);\r
}\r
for(int i=0;i<m_StatusFileList.GetCount();i++)\r
this->m_bBusy=FALSE;\r
return 0;\r
}\r
-int CGitStatusListCtrl::UpdateUnRevFileList()\r
+int CGitStatusListCtrl::UpdateUnRevFileList(CTGitPathList *List)\r
{\r
- this->m_UnRevFileList.FillUnRev(CTGitPath::LOGACTIONS_UNVER);\r
+ this->m_UnRevFileList.FillUnRev(CTGitPath::LOGACTIONS_UNVER,List);\r
for(int i=0;i<m_UnRevFileList.GetCount();i++)\r
{\r
CTGitPath * gitpatch=(CTGitPath*)&m_UnRevFileList[i];\r
return 0;\r
}\r
\r
-int CGitStatusListCtrl::UpdateIgnoreFileList()\r
+int CGitStatusListCtrl::UpdateIgnoreFileList(CTGitPathList *List)\r
{\r
- this->m_IgnoreFileList.FillUnRev(CTGitPath::LOGACTIONS_UNVER|CTGitPath::LOGACTIONS_IGNORE);\r
+ this->m_IgnoreFileList.FillUnRev(CTGitPath::LOGACTIONS_UNVER|CTGitPath::LOGACTIONS_IGNORE,List);\r
for(int i=0;i<m_IgnoreFileList.GetCount();i++)\r
{\r
CTGitPath * gitpatch=(CTGitPath*)&m_IgnoreFileList[i];\r
}\r
return 0;\r
}\r
-int CGitStatusListCtrl::UpdateFileList(int mask,bool once)\r
+int CGitStatusListCtrl::UpdateFileList(int mask,bool once,CTGitPathList *List)\r
{\r
if(mask&CGitStatusListCtrl::FILELIST_MODIFY)\r
{\r
if(once || (!(m_FileLoaded&CGitStatusListCtrl::FILELIST_MODIFY)))\r
{\r
- UpdateFileList(GIT_REV_ZERO);\r
+ UpdateFileList(git_revnum_t(GIT_REV_ZERO),List);\r
m_FileLoaded|=CGitStatusListCtrl::FILELIST_MODIFY;\r
}\r
}\r
{\r
if(once || (!(m_FileLoaded&CGitStatusListCtrl::FILELIST_UNVER)))\r
{\r
- UpdateUnRevFileList();\r
+ UpdateUnRevFileList(List);\r
m_FileLoaded|=CGitStatusListCtrl::FILELIST_UNVER;\r
}\r
}\r