str->Append(A2W(p));\r
\r
} \r
+BOOL CGit::IsInitRepos()\r
+{\r
+ CString cmdout;\r
+ cmdout.Empty();\r
+ if(g_Git.Run(_T("git.exe rev-parse --revs-only HEAD"),&cmdout))\r
+ {\r
+ // CMessageBox::Show(NULL,cmdout,_T("TortoiseGit"),MB_OK);\r
+ return TRUE;\r
+ }\r
+ if(cmdout.IsEmpty())\r
+ return TRUE;\r
\r
+ return FALSE;\r
+}\r
int CGit::Run(CString cmd, CString* output)\r
{\r
PROCESS_INFORMATION pi;\r
return 0;\r
}\r
\r
-void CGitStatusListCtrl::Show(DWORD dwShow, DWORD dwCheck /*=0*/, bool bShowFolders /* = true */)\r
+void CGitStatusListCtrl::Show(DWORD dwShow, DWORD dwCheck /*=0*/, bool bShowFolders /* = true */,BOOL UpdateStatusList)\r
{\r
CWinApp * pApp = AfxGetApp();\r
if (pApp)\r
PrepareGroups();\r
m_nSelected = 0;\r
\r
+ if(UpdateStatusList)\r
+ {\r
+ m_arStatusArray.clear();\r
+ for(int i=0;i<this->m_StatusFileList.GetCount();i++)\r
+ {\r
+ m_arStatusArray.push_back((CTGitPath*)&m_StatusFileList[i]);\r
+ }\r
+\r
+ for(int i=0;i<this->m_UnRevFileList.GetCount();i++)\r
+ {\r
+ m_arStatusArray.push_back((CTGitPath*)&m_UnRevFileList[i]);\r
+ }\r
+\r
+ for(int i=0;i<this->m_IgnoreFileList.GetCount();i++)\r
+ {\r
+ m_arStatusArray.push_back((CTGitPath*)&m_IgnoreFileList[i]);\r
+ }\r
+ }\r
for(int i=0;i<this->m_arStatusArray.size();i++)\r
{\r
if(((CTGitPath*)m_arStatusArray[i])->m_Action & dwShow)\r
// {\r
// if ((m_dwContextMenus & SVNSLC_POPGNUDIFF)&&(wcStatus != git_wc_status_deleted)&&(wcStatus != git_wc_status_missing))\r
// {\r
- popup.AppendMenuIcon(IDSVNLC_GNUDIFF1, IDS_LOG_POPUP_GNUDIFF, IDI_DIFF);\r
+ if(!g_Git.IsInitRepos())\r
+ popup.AppendMenuIcon(IDSVNLC_GNUDIFF1, IDS_LOG_POPUP_GNUDIFF, IDI_DIFF);\r
+\r
bEntryAdded = true;\r
// }\r
// }\r
this->m_StatusFileList.AddPath(*path);\r
this->m_UnRevFileList.RemoveItem(*path);\r
this->m_IgnoreFileList.RemoveItem(*path);\r
- Show(this->m_dwShow);\r
+ Show(this->m_dwShow,0,true,true);\r
}\r
}\r
\r
return;\r
if(this->m_CurrentVersion.IsEmpty() || m_CurrentVersion== GIT_REV_ZERO)\r
{\r
- CGitDiff::Diff((CTGitPath*)GetItemData(fileindex),\r
+ if(!g_Git.IsInitRepos())\r
+ CGitDiff::Diff((CTGitPath*)GetItemData(fileindex),\r
CString(GIT_REV_ZERO),\r
GitRev::GetHead());\r
+ else\r
+ CGitDiff::DiffNull((CTGitPath*)GetItemData(fileindex),\r
+ CString(GIT_REV_ZERO));\r
}else\r
{\r
CGitDiff::Diff((CTGitPath*)GetItemData(fileindex),\r
* \param dwShow mask of file types to show. Use the GitSLC_SHOWxxx defines.\r
* \param dwCheck mask of file types to check. Use GitLC_SHOWxxx defines. Default (0) means 'use the entry's stored check status'\r
*/\r
- void Show(DWORD dwShow, DWORD dwCheck = 0, bool bShowFolders = true);\r
+ void Show(DWORD dwShow, DWORD dwCheck = 0, bool bShowFolders = true,BOOL updateStatusList=FALSE);\r
void Show(DWORD dwShow, const CTGitPathList& checkedList, bool bShowFolders = true);\r
\r
/**\r
while( pos>=0 )\r
{\r
one=out.Tokenize(_T("\n"),pos);\r
-\r
- //SetFromGit will clear all status\r
- path.SetFromGit(one);\r
- path.m_Action=action;\r
- AddPath(path);\r
+ if(!one.IsEmpty())\r
+ {\r
+ //SetFromGit will clear all status\r
+ path.SetFromGit(one);\r
+ path.m_Action=action;\r
+ AddPath(path);\r
+ }\r
}\r
}\r
return 0;\r