+bool CTGitPath::HasSubmodules() const\r
+{\r
+ return !g_GitAdminDir.GetSuperProjectRoot(GetWinPathString()).IsEmpty();\r
+}\r
+\r
+int CTGitPath::GetAdminDirMask() const\r
+{\r
+ int status = 0;\r
+ CString topdir,path;\r
+ if(!g_GitAdminDir.HasAdminDir(GetWinPathString(),&topdir))\r
+ {\r
+ return status;\r
+ }\r
+\r
+ status |= ITEMIS_INSVN|ITEMIS_FOLDERINSVN;\r
+\r
+ path=topdir;\r
+ path+=_T("\\");\r
+ path+=g_GitAdminDir.GetAdminDirName();\r
+ path+=_T("\\refs\\stash");\r
+ if( PathFileExists(path) )\r
+ status |= ITEMIS_STASH;\r
+ \r
+ path=topdir;\r
+ path+=_T("\\");\r
+ path+=g_GitAdminDir.GetAdminDirName();\r
+ path+=_T("\\svn");\r
+ if( PathFileExists(path) )\r
+ status |= ITEMIS_GITSVN;\r
+\r
+ path=topdir;\r
+ path+=_T("\\.gitmodules");\r
+ if( PathFileExists(path) )\r
+ status |= ITEMIS_SUBMODULE;\r
+\r
+ return status;\r
+}\r
+\r
+bool CTGitPath::HasStashDir() const\r
+{\r
+ CString topdir;\r
+ if(!g_GitAdminDir.HasAdminDir(GetWinPathString(),&topdir))\r
+ {\r
+ return false;\r
+ }\r
+ topdir+=_T("\\");\r
+ topdir+=g_GitAdminDir.GetAdminDirName();\r
+ topdir+=_T("\\refs\stash");\r
+ return PathFileExists(topdir);\r
+}\r
+bool CTGitPath::HasGitSVNDir() const\r
+{\r
+ CString topdir;\r
+ if(!g_GitAdminDir.HasAdminDir(GetWinPathString(),&topdir))\r
+ {\r
+ return false;\r
+ }\r
+ topdir+=_T("\\");\r
+ topdir+=g_GitAdminDir.GetAdminDirName();\r
+ topdir+=_T("\\svn");\r
+ return PathFileExists(topdir);\r
+}\r
+bool CTGitPath::HasAdminDir(CString *ProjectTopDir) const\r
+{\r
+ if (m_bHasAdminDirKnown)\r
+ {\r
+ if (ProjectTopDir)\r
+ *ProjectTopDir = m_sProjectRoot;\r
+ return m_bHasAdminDir;\r
+ }\r
+\r
+ EnsureBackslashPathSet();\r
+ m_bHasAdminDir = g_GitAdminDir.HasAdminDir(m_sBackslashPath, IsDirectory(), &m_sProjectRoot);\r
+ m_bHasAdminDirKnown = true;\r
+ if (ProjectTopDir)\r
+ *ProjectTopDir = m_sProjectRoot;\r
+ return m_bHasAdminDir;\r
+}\r
+\r