OSDN Git Service

All configurations (Release/Debug and x86/x64) can be built properly.
[tortoisegit/TortoiseGitJp.git] / src / Git / TGitPath.cpp
index af6a4ab..7c7e43c 100644 (file)
@@ -102,6 +102,9 @@ int CTGitPath::ParserAction(BYTE action)
                m_Action|= LOGACTIONS_DELETED;\r
        if(action == 'H')\r
                m_Action|= LOGACTIONS_CACHE;\r
+       if(action == 'C' )\r
+               m_Action|= LOGACTIONS_COPY;\r
+\r
        return m_Action;\r
 }\r
 void CTGitPath::SetFromGit(const char* pPath)\r
@@ -125,6 +128,18 @@ void CTGitPath::SetFromGit(const char* pPath, bool bIsDirectory)
        m_bIsDirectory = bIsDirectory;\r
 }\r
 \r
+void CTGitPath::SetFromGit(const TCHAR* pPath, bool bIsDirectory)\r
+{\r
+       Reset();\r
+       if (pPath)\r
+       {\r
+               m_sFwdslashPath = pPath;\r
+               SanitizeRootPath(m_sFwdslashPath, true);\r
+       }\r
+       m_bDirectoryKnown = true;\r
+       m_bIsDirectory = bIsDirectory;\r
+}\r
+\r
 void CTGitPath::SetFromGit(const CString& sPath,CString *oldpath)\r
 {\r
        Reset();\r
@@ -729,8 +744,25 @@ bool CTGitPath::HasAdminDir() const
                return m_bHasAdminDir;\r
 \r
        EnsureBackslashPathSet();\r
-       m_bHasAdminDir = g_GitAdminDir.HasAdminDir(m_sBackslashPath, IsDirectory());\r
+       m_bHasAdminDir = g_GitAdminDir.HasAdminDir(m_sBackslashPath, IsDirectory(), &m_sProjectRoot);\r
+       m_bHasAdminDirKnown = true;\r
+       return m_bHasAdminDir;\r
+}\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
@@ -908,6 +940,7 @@ int CTGitPathList::FillUnRev(int action,CTGitPathList *list)
                CString one;\r
                while( pos>=0 && pos<out.size())\r
                {\r
+                       one.Empty();\r
                        g_Git.StringAppend(&one,&out[pos],CP_OEMCP);\r
                        if(!one.IsEmpty())\r
                        {\r
@@ -1034,6 +1067,7 @@ int CTGitPathList::ParserFromLog(BYTE_VECTOR &log)
                                        sec++;\r
                                        g_Git.StringAppend(&file1,&log[sec],CP_OEMCP);\r
                                }\r
+                               pos=sec;\r
 \r
                        }else\r
                        {\r
@@ -1843,21 +1877,35 @@ CTGitPath * CTGitPathList::LookForGitPath(CString path)
        }\r
        return NULL;\r
 }\r
-\r
-CString CTGitPath::GetActionName()\r
+CString CTGitPath::GetActionName(int action)\r
 {\r
-       if(m_Action  & CTGitPath::LOGACTIONS_ADDED)\r
+       if(action  & CTGitPath::LOGACTIONS_UNMERGED)\r
+               return _T("Conflict");\r
+       if(action  & CTGitPath::LOGACTIONS_ADDED)\r
                return _T("Added");\r
-       if(m_Action  & CTGitPath::LOGACTIONS_DELETED)\r
+       if(action  & CTGitPath::LOGACTIONS_DELETED)\r
                return _T("Deleted");\r
-       if(m_Action  & CTGitPath::LOGACTIONS_UNMERGED)\r
-               return _T("Conflict");\r
-       if(m_Action  & CTGitPath::LOGACTIONS_MODIFIED)\r
+       if(action  & CTGitPath::LOGACTIONS_MODIFIED)\r
                return _T("Modified");\r
-       if(m_Action  & CTGitPath::LOGACTIONS_REPLACED)\r
+       if(action  & CTGitPath::LOGACTIONS_REPLACED)\r
                return _T("Rename");\r
+       if(action  & CTGitPath::LOGACTIONS_COPY)\r
+               return _T("Copy");\r
+       if(action & CTGitPath::LOGACTIONS_REBASE_EDIT)\r
+               return _T("Edit");\r
+       if(action & CTGitPath::LOGACTIONS_REBASE_SQUASH)\r
+               return _T("Squash");\r
+       if(action & CTGitPath::LOGACTIONS_REBASE_PICK)\r
+               return _T("Pick");\r
+       if(action & CTGitPath::LOGACTIONS_REBASE_SKIP)\r
+               return _T("Skip");\r
+\r
        return _T("Unknown");\r
 }\r
+CString CTGitPath::GetActionName()\r
+{\r
+       return GetActionName(m_Action);\r
+}\r
 \r
 int CTGitPathList::GetAction()\r
 {\r