OSDN Git Service

merge original branch.
[tortoisegit/TortoiseGitJp.git] / src / Git / TGitPath.cpp
index 065f350..0f59c32 100644 (file)
@@ -23,6 +23,8 @@
 #include "PathUtils.h"\r
 #include <regex>\r
 #include "git.h"\r
+#include "Globals.h"\r
+\r
 #if defined(_MFC_VER)\r
 //#include "MessageBox.h"\r
 //#include "AppUtils.h"\r
@@ -527,7 +529,7 @@ CString CTGitPath::GetRootPathString() const
 \r
 CString CTGitPath::GetFilename() const\r
 {\r
-       ATLASSERT(!IsDirectory());\r
+       //ATLASSERT(!IsDirectory());\r
        return GetFileOrDirectoryName();\r
 }\r
 \r
@@ -765,6 +767,51 @@ bool CTGitPath::HasSubmodules() const
        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
@@ -897,6 +944,8 @@ int CTGitPathList::ParserFromLsFile(BYTE_VECTOR &out,bool staged)
        CString one;\r
        CTGitPath path;\r
        CString part;\r
+       this->Clear();\r
+\r
        while(pos>=0 && pos<out.size())\r
        {\r
                one.Empty();\r
@@ -1335,6 +1384,9 @@ CTGitPath CTGitPathList::GetCommonRoot() const
        int searchStartPos = 0;\r
        while (bEqual)\r
        {\r
+               if(m_paths.empty())\r
+                       break;\r
+\r
                for (it = m_paths.begin(); it != m_paths.end(); ++it)\r
                {\r
                        if (backSlashPos == 0)\r