OSDN Git Service

merge original branch.
[tortoisegit/TortoiseGitJp.git] / src / Git / Git.h
index afe98ac..a868e24 100644 (file)
@@ -3,6 +3,7 @@
 #include "GitRev.h"\r
 #include "GitStatus.h"\r
 #include "GitAdminDir.h"\r
+#include "gitdll.h"\r
 \r
 class CGitCall\r
 {\r
@@ -30,7 +31,30 @@ class CGit
 {\r
 private:\r
        GitAdminDir m_GitDir;\r
+protected:\r
+       bool m_IsGitDllInited;\r
+       GIT_DIFF m_GitDiff;\r
 public:\r
+       void CheckAndInitDll()\r
+       { \r
+               if(!m_IsGitDllInited) \r
+               {\r
+                       git_init();\r
+                       m_IsGitDllInited=true;\r
+               } \r
+       }\r
+\r
+       GIT_DIFF GetGitDiff()\r
+       {\r
+               if(m_GitDiff)\r
+                       return m_GitDiff;\r
+               else\r
+               {\r
+                       git_open_diff(&m_GitDiff,"-C -M -r");\r
+                       return m_GitDiff;\r
+               }\r
+       }\r
+\r
        static BOOL CheckMsysGitDir();\r
        static CString ms_LastMsysGitDir;       // the last msysgitdir added to the path, blank if none\r
        static int m_LogEncode;\r
@@ -109,6 +133,9 @@ public:
        int GetLog(BYTE_VECTOR& logOut,CString &hash, CTGitPath *path = NULL,int count=-1,int InfoMask=LOG_INFO_FULL_DIFF|LOG_INFO_STAT|LOG_INFO_FILESTATE|LOG_INFO_BOUNDARY|LOG_INFO_DETECT_COPYRENAME|LOG_INFO_SHOW_MERGEDFILE,\r
                                                                CString *from=NULL,CString *to=NULL);\r
 \r
+       CString GetLogCmd(CString &hash, CTGitPath *path = NULL,int count=-1,int InfoMask=LOG_INFO_FULL_DIFF|LOG_INFO_STAT|LOG_INFO_FILESTATE|LOG_INFO_BOUNDARY|LOG_INFO_DETECT_COPYRENAME|LOG_INFO_SHOW_MERGEDFILE,\r
+                                                               CString *from=NULL,CString *to=NULL, bool paramonly=false);\r
+\r
        BOOL EnumFiles(const TCHAR *pszProjectPath, const TCHAR *pszSubPath, unsigned int nFlags, WGENUMFILECB *pEnumCb, void *pUserData);\r
 \r
        git_revnum_t GetHash(const CString &friendname);\r
@@ -121,6 +148,7 @@ public:
        int ListConflictFile(CTGitPathList &list,CTGitPath *path=NULL);\r
        int GetRefList(STRING_VECTOR &list);\r
 \r
+       int RefreshGitIndex();\r
 \r
        //Example: master -> refs/heads/master\r
        CString GetFullRefName(CString shortRefName);\r
@@ -128,6 +156,7 @@ public:
        static CString StripRefName(CString refName);\r
 \r
        int GetCommitDiffList(CString &rev1,CString &rev2,CTGitPathList &outpathlist);\r
+\r
        \r
 };\r
 extern void GetTempPath(CString &path);\r